2010-05-26 16 views
16

In this SO question, someone asked for calculating an angle from three points. Ich muss das Gegenteil tun.Wie berechnet man einen Punkt mit einem gegebenen Mittelpunkt, Winkel und Radius?

Ich möchte eine Uhr zeichnen, und ich habe winzige Tickbilder. Ein Kunstkumpel hat 60 von ihnen gemacht, jeder mit einem individuellen und genauen Schatten. So gibt es 60 verschiedene Bilder mit einer Größe von 10x10 Punkten, die bereits korrekt in der Mitte des Quadrats gedreht wurden.

Also alle 6 Grad ein Tick Bild muss platziert werden. Ich müsste nur die x/y-Koordinate basierend auf einem Mittelpunkt, einem Radius und einem Winkel berechnen. So

ich habe:

  • einen Mittelpunkt
  • einen Radius
  • einen Winkel

Gibt es einen einfachen Weg, um die x zu berechnen/y mit dieser Koordinate? Vielleicht hat Kakao-Touch schon eine nützliche Funktion oder Methode dafür?

Antwort

18

lassen ein der Winkel sein, (x, y) der Mittelpunkt und r der Radius, dann Punkt, an

(x + r*cos(a), y + r*sin(a)) 
+5

Sinus und Cosinus sind hier umgekehrt –

+0

Überprüfen Sie die aktualisierte Berechnungsformel! – byJeevan

1

Ihr Bild sein wird (Mitte) platziert werden soll an dem Punkt (x, Y), wobei (x, y) die Koordinaten des Mittelpunkts sind, und r ist der Radius

X = x + (r/2)*cos(angle); 
Y = y + (r/2)*sin(angle); 
18

In der Mathematik, die kartesischen Koordinaten vom p zu berechnen olar Koordinaten:

x = r * cos(A) + x0; 
y = r * sin(A) + y0; 

wobei (x0, y0) der Mittelpunkt des Kreises ist, r der Radius und A ist der Winkel.

Aber, die die Mathematik-Koordinatenkonvention annimmt, d. H. X nimmt zu, wenn Sie sich nach rechts bewegen, y erhöht sich, wenn Sie sich nach oben bewegen. Dies ist die Standardeinstellung für Ansichten von Mac OS X Cocoa, aber ich weiß nicht, ob es auf dem iPhone identisch ist.

Auch Winkel beginnen bei 3 Uhr und gehen gegen den Uhrzeigersinn, d.h. 3 Uhr ist 0 Grad, 12 Uhr ist 90 Grad, 9 Uhr ist 180 Grad und 6 Uhr ist 270 Grad.

Auch die C Sinus- und Kosinusfunktionen arbeiten im Bogenmaß.

+0

Ich habe gerade festgestellt, dass die Antwort von Ungli bereits die Korrektur anwendet, um den Winkel oben zu beginnen und im Uhrzeigersinn auf die natürliche Weise zu gehen, die man für ein Zifferblatt erwarten würde. – JeremyP

+0

+1. Ich konnte nicht machen, dass die Lösung von Unglaub nicht funktioniert, aber deine (mit JavaScript). Hier ist ein Ausschnitt zum Zeichnen einer Linie aus der Mitte eines HTML5-Canvas im angegebenen Winkel. Beachten Sie den Hack, um ab 3 Uhr zu umgehen: x0 = ctx.canvas.width/2; y0 = ctx.canvas.height/2; ctx.lineTo ( (x0 + r * Math.cos (toRad (Winkel-90))), (y0 + r * Math.sin (toRad (Winkel-90))) ); – GojiraDeMonstah

Verwandte Themen