Bir açı verilen dairenin çevresi üzerindeki nokta konumunu al?


13

Bir açı verildiğinde, bir dairenin çevresinde belirli bir noktayı nasıl alacağımı bilmek istiyorum. Dairenin çapı 1'dir ve dairenin merkez noktasıdır { X: 0.5, Y: 0.5 }.

Yanıtlar:


23

Temel trigonometri kullanarak bunu çözebilirsiniz. http://www.freehomeworkmathhelp.com/Trigonometry/Trigonometry_Introduction/trigonometry.html

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

Yukarıdakileri hep hatırlıyorum

The Old Arab
Sat On His
Camel And Howled

Yukarıdaki, dik açılı bir üçgenin açısına ve bir uzunluğuna sahipsek, diğer tarafların uzunluklarını çalıştırabileceğimiz anlamına gelir. Neyse ki probleminiz üçgen kenarların uzunluğunu hesaplamak olarak düşünülebilir:

Daire Üçgen Resmi

Yukarıda, r hipotenüs, x bitişiktir ve y tersidir.

Yani x için:

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

Ve y için:

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

Bu, (0, 0) konumunda bir daire olduğunu varsayarsak, dairenin merkezine ekleriz.

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

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

Not: C # Math işlevleri radyan cinsinden açıları kullanır, bu nedenle önce dereceleriniz varsa bunları dönüştürün:

radians = degrees * Math.PI / 180

1
Açının radyan cinsinden olması gerektiğini unutmayın.
bummzack

Matematik kütüphanesine bağlı, ancak iyi bir nokta, XNA / .Net radyan kullanıyor.
George Duckett

Eski Arap neden uluma içindeydi? Burada tüm İngilizce konuşanlar değiliz, bu yüzden kavramsal bir memonik kural anımsatıcı bir cümlenden çok daha iyi
FxIII

1
@FxIII: Doğru, en popüler memonic değil, ancak her zaman olağandışı olduğu için SOHCAHTOA'dan hatırlamayı kolay buldum.
George Duckett

Ya da sadece kavramı bir kez öğrendikten sonra, yılda bir veya iki kez ihtiyacınız olan şeyleri arayabilirsiniz.
Tetrad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.