Wie finde ich den Pixelwert in gewissem Maße auf dem Umfang eines Kreises, wenn ich die Pixelkoordinaten des Mittelpunkts des Kreises, Kreisradius, kenne und senkrechter Winkel. Grundsätzlich versuche ich die Hände einer Uhr zu verschiedenen Zeiten zu zeichnen (1 Uhr, 2 Uhr usw.)Algorithmus zum Ermitteln von Pixelkoordinaten auf einem Kreisumfang
Antwort
h
die Stunde als sein Let Fließkommazahl (h=2.25
wäre 02:15 usw.) zwischen 0 und 12. (cX,cY)
sind die Koordinaten des Zentrums. hLength
und mLength
sind die Längen der Stunden- und Minutenzeiger.
// Hour hand
hAngle = 2.0*Pi*h/12.0; // 0..12 mapped to 0..2*Pi
hX = cX + hLength * sin(hAngle);
hY = cY - hLength * cos(hAngle);
// Min hand
mAngle = 2.0*Pi*h; // 0..1 mapped to 0..2*Pi, etc.
mX = cX + mLength * sin(mAngle);
mY = cY - mLength * cos(mAngle);
Wenn (x1, y1) ist ein Punkt auf dem Umfang und (x, y) ist die Zentrum, dann x1 = x + r * cos(angle)
und y1 = y + r * sin(angle)
wenn Zentrum in x0, y0 ist, und 0,0 iz am unteren linken Ecke, dann 01.00 ist x0 + r sin (2π/3), y0 + r cos (2 & pgr;/3).
Zeichnen Sie Linien von der Mitte zu Koordinaten, die mit sin
für die y-Koordinaten und cos
für die x-Koordinaten (beide multipliziert mit der Handlänge) berechnet wurden.
Wo der Mittelpunkt des Kreises (X0, Y0)
ist, ist der Radius R
und der Winkel mit der x-Achse ist Theta:
X1 = (R * cos theta) + X0
und
Y1 = (R * sin theta) + Y0
Das sollte nicht so hoch gewählt werden. Er scheint den Wert von Theta nicht zu kennen. Die Antwort von Eric Bainville ist vollständiger. – jmucchiello
@jmucchiello - Nicht sicher, ich verstehe Sie ... wir wurden nach einem Algorithmus gefragt und ich gab die Beschreibung einer Funktion mit formalen Parametern. Zu diesem Zeitpunkt kennt niemand den "Wert" von Theta! Wenn Sie meinen, dass ich keine Skalierungsfaktoren für die Bewegung der Zeiger einer Uhr berechnet habe, und den Winkel im Bogenmaß für jede der Stundensprünge, dann haben Sie absolut recht, was ich nicht getan habe. Ich habe Arbeit, um meinen eigenen Code zu schreiben! – avstrallen
Ja, ich denke, ich habe 2 Fragen in einem gestellt. Ihre Antwort ist perfekt für den ersten Teil. Vielen Dank. – Surya
Beachten Sie, dass dies das "mathematische" Standardkoordinatensystem übernimmt, wobei Y nach oben zunimmt. In typischen 2D-Computergrafiken ist das umgekehrt (damit Y mit der Adresse des Pixels wächst). – unwind
Dies gilt nur für einen Kreis mit Zentrum in origo. – ralphtheninja
Fügen Sie einfach die Koordinaten des Zentrums hinzu. – Svante