Hallo Ich bin ziemlich neu in der Programmierung und ich versuche, in Java, eine Funktion zu erstellen, die rekursive Dreiecke aus einem größeren Dreiecke Mittelpunkte zwischen den Ecken erstellt, wo die neuen Dreiecke Punkte von der normalen Position in y-Wert abweichen. Siehe die Bilder unten für eine Visualisierung.
Das erste Bild zeigt den Verlauf des rekursiven Algorithmus ohne Abweichung (Reihenfolge 0,1,2) und das zweite Bild zeigt es mit (Ordnung 0,1).
Ich habe es geschafft, ein funktionierendes Stück Code zu erzeugen, das genau das schafft, was ich für die ersten paar Befehle möchte, aber wenn wir Ordnung 2 erreichen, stoße ich auf das Problem, wo die kleineren Dreiecke nicht die gleichen Mittelpunkte und verwenden sieht daher wie das Bild unten aus.
Ich brauche also Hilfe, um 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.
Unten ist mein aktueller Code
Die Punktklasse speichert einen x- und y-Wert für einen Punkt
lineBetween erstellt eine Linie zwischen den ausgewählten Punkten
%Vor%Vielen Dank im Voraus
Victor
Sie können ein Dreieck durch drei Punkte (Scheitelpunkte) definieren. Die Eckpunkte a, b und c bilden also ein Dreieck. Die Kombinationen ab, ac und bc sind die Kanten. Also geht der Algorithmus:
Als grobe Richtlinie geht der Code also
%Vor%Sie müssen die relevanten Dreiecke in einer Datenstruktur speichern.
Sie berechnen die Mittelpunkte jedes Eckpunkts in den verschiedenen Pfaden Ihrer Rekursion immer wieder neu. Solange Sie sie nicht zufällig ändern, erhalten Sie für jeden Pfad den gleichen Mittelpunkt, so dass es kein Problem gibt. Aber wenn Sie die Mittelpunkte zufällig ändern, enden Sie mit zwei verschiedenen Mittelpunkten in zwei verschiedenen Rekursionswegen.
Sie könnten Ihren Algorithmus so ändern, dass Sie nicht nur die 3 Ecken des Dreiecks, sondern auch die modifizierten Mittelpunkte jedes Eckpunkts passieren. Oder Sie behalten sie in einer separaten Liste oder Karte oder etwas und berechnen sie nur einmal und schauen sie dann anders an.