Uzyskać pozycję punktu na obwodzie koła, biorąc pod uwagę kąt?


13

Chciałbym wiedzieć, jak uzyskać określony punkt na obwodzie koła, biorąc pod uwagę kąt. Średnica koła wynosi 1, a punktem środkowym koła jest { X: 0.5, Y: 0.5 }.

Odpowiedzi:


23

Możesz to rozwiązać za pomocą podstawowej trygonometrii. http://www.freehomeworkmathhelp.com/Trigonometry/Trigonometry_Introduction/trigonometry.html

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

Zawsze pamiętam powyższe jako

The Old Arab
Sat On His
Camel And Howled

Powyższe oznacza, że ​​jeśli mamy kąt i jedną długość trójkąta prostokątnego, możemy obliczyć długości pozostałych boków. Na szczęście twój problem można traktować jako obliczanie długości boków trójkąta:

Obraz koła trójkąta

Powyżej r jest przeciwprostokątną, x jest przyległą, a y jest przeciwną.

Więc dla x:

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

A dla ciebie:

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

To zakłada koło w (0, 0), więc po prostu dodajemy na środku koła.

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

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

Uwaga: Funkcje matematyczne C # używają kątów w radianach, więc jeśli masz stopnie, najpierw je przekonwertuj:

radians = degrees * Math.PI / 180

1
Pamiętaj, że kąt powinien być w radianach.
bummzack 10.10.11

Zależy od biblioteki matematycznej, ale dobrze, XNA / .Net używa radianów.
George Duckett,

Dlaczego stary Arab miał wyć? Tutaj nie wszyscy mówimy po angielsku, więc reguła memoniczna pojęciowa jest znacznie lepsza niż zdanie mnemoniczne
FxIII,

1
@FxIII: To prawda, że ​​nie jest to najbardziej popularny memonic, jednak zawsze uważałem, że łatwiej go zapamiętać niż SOHCAHTOA, ponieważ jest niezwykły.
George Duckett,

Lub możesz po prostu to sprawdzić, gdy tylko zapoznasz się z tą koncepcją, raz lub dwa razy w roku, gdy jej potrzebujesz.
Tetrad,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.