Hallo Ich bin ziemlich neu in der Programmierung und ich versuche, in Java, eine rekursive Dreiecke von einem größeren Dreiecke Mittelpunkte zwischen den Ecken zu schaffen, wo die neuen Dreiecke Punkte von der normalen Position in abweichen y-Wert. Siehe die Bilder unten für eine Visualisierung.Java Rekursionsdreieck mit Abweichung
Das erste Bild zeigt den Verlauf des rekursiven Algorithmus ohne Abweichung (um 0,1,2) und das zweite Bild zeigt es mit (um 0,1).
Ich habe es geschafft, ein funktionierendes Stück Code zu erzeugen, das genau das schafft, was ich für die ersten paar Bestellungen möchte, aber wenn wir Ordnung 2 erreichen, stoße ich auf das Problem, wo die kleineren Dreiecke nicht die gleichen Mittelpunkte verwenden und sieht daher wie das Bild unten aus.
Also muss ich mit einer Art und Weise helfen, die richtigen Mittelpunkte für jedes der Dreiecke zu speichern und aufzurufen. Ich habe darüber nachgedacht, eine neue Klasse zu implementieren, die die Berechnung der Mittelpunkte steuert und sie usw. speichert, aber wie gesagt, ich brauche Hilfe dabei.
Im Folgenden finden Sie meine aktuellen Code
Der Punkt Klasse speichert Axt und y-Wert für einen Punkt
Linie zwischen einer Linie zwischen den
Vorausvoid fractalLine(TurtleGraphics turtle, int order, Point ett, Point tva, Point tre, int dev) {
if(order == 0){
lineBetween(ett,tva,turtle);
lineBetween(tva,tre,turtle);
lineBetween(tre,ett,turtle);
} else {
double deltaX = tva.getX() - ett.getX();
double deltaY = tva.getY() - ett.getY();
double deltaXtre = tre.getX() - ett.getX();
double deltaYtre = tre.getY() - ett.getY();
double deltaXtva = tva.getX() - tre.getX();
double deltaYtva = tva.getY() - tre.getY();
Point one;
Point two;
Point three;
double xt = ((deltaX/2))+ett.getX();
double yt = ((deltaY/2))+ett.getY() +RandomUtilities.randFunc(dev);
one = new Point(xt,yt);
xt = (deltaXtre/2)+ett.getX();
yt = (deltaYtre/2)+ett.getY() +RandomUtilities.randFunc(dev);
two = new Point(xt,yt);
xt = ((deltaXtva/2))+tre.getX();
yt = ((deltaYtva/2))+tre.getY() +RandomUtilities.randFunc(dev);
three = new Point(xt,yt);
fractalLine(turtle,order-1,one,tva,three,dev/2);
fractalLine(turtle,order-1,ett,one,two,dev/2);
fractalLine(turtle,order-1,two,three,tre,dev/2);
fractalLine(turtle,order-1,one,two,three,dev/2);
}
}
Dank in
den ausgewählten Punkten schafftVictor
Haben Sie 'Edge'- und' Vertex'-Klassen, damit Sie Kanten teilen können und sich Dreiecke auf geteilte Scheitelpunkte usw. beziehen. – Torious
Warum brauchen Sie Zufallszahlen? Was ist der Zweck des Entwicklers? Bitte antworten Sie nicht hier, bearbeiten Sie Ihren ursprünglichen Beitrag. Thanks – durron597
Ich empfehle wärmstens eine 'getMidpoint (Punkt a, Punkt b, doppelte Abweichung)' Methode (oder ähnlich), die dazu beitragen sollte, dies etwas zu vereinfachen. Warum ist Ihre Abweichung nur in der y-Richtung? Ich weiß es nicht genau, aber ich vermute, dass Ihr Problem möglicherweise darin liegt, dass Sie die Punkte nicht in der gleichen Reihenfolge halten, wenn Sie zum nächsten Level übergehen. –