Ich versuche, die x- und y-Positionen einer archimedischen Spirale in C ++ zu zeichnen .
Bisher habe ich so etwas versucht, aber kein Glück:
int dx = 0;
int dy = 0;
int x = 0;
int y = 0;
for (int i = 0; i < maxPoints; i++)
{
dx = sin(i * PI / 2);
dy = cos(-i * PI / 2);
x += dx;
y += dy;
plot(x, y);
}
EDIT: Weitere Infos
Ich entwickle eine 3D-Spieleanwendung, die die Verwendung der Bullet- Physik-Engine durch Simulation von Dominosteinen demonstriert . Anstatt die Dominosteine manuell in der Szene zu platzieren, möchte ich etwas Mathematik verwenden, um dies für mich zu tun :)
Für alle, die sich hier interessieren, ist es auf GitHub .
int
. Insbesonderedx
unddy
wird wahrscheinlich 0.Antworten:
Ich habe es herausgefunden :) Die Dominosteine werden jetzt entlang der von der Funktion erzeugten X- und Y-Koordinaten platziert.
Der ursprüngliche Code in der Frage zeichnete eine Welle von Punkten von der Mittelposition oder dem Ursprung nach außen und war nicht das, was ich wollte. Was ich brauchte, war, dass jeder Punkt dem
Archimedean spiral
mit einem bestimmten Abstand zwischen den Spiralen folgte.Anfangs habe ich
integer
Werte zum Speichern vonx
undy
Koordinaten verwendet, aber dies verursachte einen Genauigkeitsfehler, indem derfloating point
Wert abgeschnitten wurde, um ihn iminteger
Datentyp zu speichern .Das folgende Beispiel generiert kontinuierlich Punkte entlang der Spirale relativ zum
maxPoints
Wert.Code für das Projekt ist auf GitHub , Sie benötigen Bullet und Freeglut
quelle
Dies ist keine direkte Antwort auf diese Frage (die ohnehin schon eine Antwort hat), könnte aber Leute interessieren, die diesen Algorithmus in 3D implementieren möchten.
Ich musste versuchen, diesen Algorithmus zu implementieren, um 3D-Spiralen in Blender mit Python zu generieren (konnte leicht in Zeichnen mit PIL oder Matplotlib in 2D konvertiert werden). Hier ist der Algorithmus und das Ergebnis:
quelle
size
Parameter verwendet).