Dapatkan posisi titik pada keliling lingkaran, diberi sudut?


13

Saya ingin tahu cara mendapatkan titik tertentu pada keliling lingkaran, dengan sudut tertentu. Diameter lingkaran adalah 1, dan titik tengah lingkaran adalah { X: 0.5, Y: 0.5 }.

Jawaban:


23

Anda bisa mengatasinya menggunakan trigonometri dasar. http://www.freehomeworkmathhelp.com/Trigonometry/Trigonometry_Introduction/trigonometry.html

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

Saya selalu mengingat di atas sebagai

The Old Arab
Sat On His
Camel And Howled

Di atas berarti jika kita memiliki sudut dan satu panjang segitiga siku-siku kita dapat menghitung panjang sisi lainnya. Untungnya masalah Anda dapat dianggap sebagai menghitung panjang sisi segitiga:

Gambar Segitiga Lingkaran

Di atas, r adalah sisi miring, x adalah yang berdekatan dan y adalah sebaliknya.

Jadi untuk x:

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

Dan untuk kamu:

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

Ini mengasumsikan sebuah lingkaran di (0, 0), jadi kita tambahkan saja di tengah lingkaran itu.

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

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

Catatan: Fungsi C # Math menggunakan sudut dalam radian, jadi jika Anda memiliki derajat, konversikan dulu:

radians = degrees * Math.PI / 180

1
Perlu diingat bahwa sudut harus dalam radian.
bummzack

Tergantung pada perpustakaan matematika, tapi bagus, XNA / .Net menggunakan radian.
George Duckett

Mengapa orang Arab tua itu melolong? Di sini kita tidak semua penutur bahasa Inggris sehingga aturan memonik konseptual jauh lebih baik daripada kalimat mnemonik
FxIII

1
@FxIII: Benar, ini bukan memonik yang paling populer, namun saya selalu merasa mudah diingat daripada SOHCAHTOA karena itu tidak biasa.
George Duckett

Atau Anda bisa mencarinya, begitu Anda terbiasa dengan konsepnya, setahun sekali atau dua kali setahun Anda membutuhkannya.
Tetrad
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.