Dies ist eine Fortsetzung des ursprünglichen Beitrags:Array von Ellipsen entlang eigenen Mittelpunkt rotierenden
Calculate ellipse size in relation to distance from center point
Ich versuche, ein Raster von Ellipsen zu schaffen, die die ganze Zeit ihre eigenen Drehzentrum drehen. Dann versuche ich, das "Quadratgitter" von Ellipsen um einen Mittelpunkt zu skalieren, während ich ihnen immer noch erlaube, sich entlang ihrer eigenen Mittelpunkte zu drehen.
ArrayList<RotatingEllipse> ellipses = new ArrayList<RotatingEllipse>();
void setup() {
size(500, 500);
noStroke();
smooth();
ellipses.add(new RotatingEllipse(width*.25, height*.25));
ellipses.add(new RotatingEllipse(width*.75, height*.75));
ellipses.add(new RotatingEllipse(width*.75, height*.25));
ellipses.add(new RotatingEllipse(width*.25, height*.75));
ellipses.add(new RotatingEllipse(width/2*.25, height/2*.25));
ellipses.add(new RotatingEllipse(width/2*.75, height/2*.75));
ellipses.add(new RotatingEllipse(width/2*.75, height/2*.25));
ellipses.add(new RotatingEllipse(width/2*.25, height/2*.75));
}
void draw() {
background(#202020);
for (RotatingEllipse e : ellipses) {
e.stepAndDraw();
}
}
class RotatingEllipse {
float rotateAroundX;
float rotateAroundY;
float distanceFromRotatingPoint;
float angle;
public RotatingEllipse(float startX, float startY) {
rotateAroundX = (width/2 + startX)/2;
rotateAroundY = (height/2 + startY)/2;
distanceFromRotatingPoint = dist(startX, startY, rotateAroundX, rotateAroundY);
angle = atan2(startY-height/2, startX-width/2);
}
public void stepAndDraw() {
angle += PI/128;
float x = rotateAroundX + cos(angle)*distanceFromRotatingPoint;
float y = rotateAroundY + sin(angle)*distanceFromRotatingPoint;
float distance = dist(x, y, width/2, height/2);
// size of ellipses
float diameter = 50*(200-distance)/500;
ellipse(x, y, diameter, diameter);
}
}
Was genau ist deine Frage? Was ist mit diesem aktualisierten Code funktioniert nicht, wie Sie es erwarten? –
Ich habe den falschen Code hinzugefügt, ich habe den richtigen Teil hinzugefügt, der nur Ellipsen hinzufügt. Ich dachte, dass das Hinzufügen von width/2 und height/2 es erlauben würde, eine Ellipse zwischen die beiden äußeren Ellipsen zu setzen, aber das Ergebnis ist sehr unterschiedlich. Die Frage hängt mehr oder weniger mit dem Diagramm zusammen, das fragt, wie ich Ellipsen zwischen den beiden äußeren Ellipsen hinzufüge und wie ich alle diese rotierenden Ellipsen um einen Mittelpunkt skalieren kann. Danke –