Ottieni la posizione del punto sulla circonferenza del cerchio, dato un angolo?


13

Vorrei sapere come ottenere un punto specifico sulla circonferenza di un cerchio, dato un angolo. Il diametro del cerchio è 1 e il punto centrale del cerchio è { X: 0.5, Y: 0.5 }.

Risposte:


23

Puoi risolverlo usando la trigonometria di base. http://www.freehomeworkmathhelp.com/Trigonometry/Trigonometry_Introduction/trigonometry.html

Tan(angle) = Opposite / Adjacent
Sin(angle) = Opposite / Hypotenuse
Cos(angle) = Adjacent / Hypotenuse

Ricordo sempre quanto sopra

The Old Arab
Sat On His
Camel And Howled

Quanto sopra significa che se abbiamo l'angolo e una lunghezza di un triangolo rettangolo possiamo calcolare le lunghezze degli altri lati. Fortunatamente il tuo problema può essere considerato come il calcolo della lunghezza dei lati del triangolo:

Circle Triangle Image

Sopra, r è l'ipotenusa, x è l'adiacente e y è l'opposto.

Quindi per x:

Cos(a) = x / r
Cos(a) * r = x
x = Cos(a) * r

E per te:

Sin(a) = y / r
Sin(a) * r = y
y = Sin(a) * r

Questo presuppone un cerchio in (0, 0), quindi aggiungiamo semplicemente il centro del cerchio.

radius = 1;
CenterX = 0.5;
CenterY = 0.5;

x = Cos(angle) * radius + CenterX;
Y = Sin(angle) * radius + CenterY;

Nota: le funzioni matematiche C # usano gli angoli in radianti, quindi se hai gradi convertili prima:

radians = degrees * Math.PI / 180

1
Tieni presente che l'angolo dovrebbe essere in radianti.
Bummzack,

Dipende dalla libreria matematica, ma un buon punto, XNA / .Net usa i radianti.
George Duckett,

Perché il vecchio arabo doveva ululare? Qui non siamo tutti di madrelingua inglese, quindi una regola memonica concettuale è molto meglio di una frase mnemonica
FxIII

1
@FxIII: Vero, non è il memonic più popolare, tuttavia ho sempre trovato facile ricordare SOHCAHTOA perché è insolito.
George Duckett,

Oppure potresti semplicemente cercarlo, una volta che hai familiarità con il concetto, una o due volte all'anno di cui hai bisogno.
Tetrad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.