ich soll n prog schreiben was für ein gegebenes polygon überprüft ob es konvex ist...
dafür will ich immer überprüfen, ob der winkel zwischen 2 gerade unter 180 grad bleibt
es gibt leider keine solche funktion
habt ihr ne idee?
hier mein bisheriger code (sorry wenns n bissl caotisch is)
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.math.*;
public class Konpoly extends Frame{
Point2D []pkta = new Point2D [11];
int zähler;
double [] winkel = new double [11];
Konpoly(){
super("Aufgabe 3.3");
setBackground(Color.WHITE);
setSize(600,600);
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
Graphics2D g2 = (Graphics2D)getGraphics();
if(e.getButton()==3){
g2.drawLine((int)pkta[1].getX(),(int)pkta[1].getY(),
(int)pkta[zähler].getX(), (int)pkta[zähler].getY());
zähler=0;
//System.out.println(getAngle());
return;
}//if
else {
zähler++;
System.out.println("Sie haben bereits "+zähler+" Punkte gesetzt");
if(zähler < 11){
pkta[zähler]=(Point2D)e.getPoint();
g2.drawLine((int)pkta[zähler-1].getX(),(int)pkta[zähler-1].getY(),
(int)pkta[zähler].getX(), (int)pkta[zähler].getY());
if(zähler>2)//System.out.println(schnittWinkel(pkta[zähler],pkta[zähler-1],pkta[zähler-2]));
//System.out.println(berechneM());
}//if
else System.out.println("Zu viele Eckpunkte");
}//else
}//mouseclicked
}//mouselistener
);//mouseadapter
}//mouselistener
private void pruefeKonvex(){
}
/*public double getAngle() {
double distCentWristX = pkta[zähler].getX() - pkta[zähler-1].getX();
double distCentWristY = pkta[zähler].getY() - pkta[zähler-1].getY();
double getangle = Math.acos( distCentWristX /pkta[zähler].distance(pkta[zähler-1]));
double x = (getangle * 360 ) / (2*Math.PI);
return x;
}*/
private double berechneM(){
return( (pkta[zähler].getY()-pkta[zähler-1].getY())/(pkta[zähler].getX()-pkta[zähler-1].getX()));
}
private double berechneM(Point2D p1, Point2D p2){
return( (p2.getY()-p1.getY())/(p2.getX()-p1.getX()));
}
/*private double schnittWinkel(Point2D p1, Point2D p2, Point2D p3){
return Math.acos(((berechneM(p2,p1))-(berechneM(p3,p2)))/(1+(berechneM(p2,p3)*(berechneM(p2,p1)))));
}*/
public static void main(String[]args){
Konpoly f = new Konpoly();
//System.out.println(toDeg(Math.acos(1)));
}
}
Lesezeichen