Ich habe ein reguläres Polygon, das durch die x- und y-Koordinate des Mittelpunkts, die Anzahl der Seiten, die Seitenlänge und die Drehung aus der Horizontalen definiert ist. Es spuckt konsistent Null für jede Koordinate aus. Hier ist der Code:Liste der Scheitelpunkte des regulären Polygons abrufen
public Point[] getPoints() {
Point[] points = new Point[n];
double radius = s/(2*Math.sin(Math.PI/n));
double angle = (Math.PI*2)/n;
points[0] = new Point((int)Math.round(r),0);
for(int i = 1; i < n; i++) {
points[i] = multiplyByRotationMatrix(points[i-1],angle);
System.out.println(points[i]);
}
for(int i = 0; i < n; i++) {
points[i].x += x;
points[i].y += y;
}
for(int i = 0; i < n; i++) {
points[i] = multiplyByRotationMatrix(points[i],r);
}
return points;
}
private Point multiplyByRotationMatrix(Point p, double angle) {
if(angle==0) return p;
Point2D pNew = new Point2D.Float();
pNew = AffineTransform.getRotateInstance(angle,p.x,p.y).transform(p, pNew);
System.out.println(pNew.toString() + " , " + p.x + "," + p.y);
return new Point((int)Math.round(pNew.getX()),(int)Math.round(pNew.getY()));
}
Die Rotationsmatrix Bit war eigentlich eine Rotationsmatrix an einem gewissen Punkt, aber ich änderte es Affine zu sehen, ob es funktionieren würde (es nicht). Was ist ein besserer Weg?
Es scheint, dass der Wert der Elemente des 'points' aus den Variablen ist 'X' und 'y '. Was sind ihre Werte? Wo sind sie definiert? – RealSkeptic
'x' und' y' werden im Konstruktor instanziiert. –