Bir nesneyi dairesel bir yolda hareket ettirme


26

Bir nesneyi (nokta) dairesel bir yolda taşımak istiyorum. Bunu gerçekleştirmek için X ve Y koordinatlarını nasıl değiştirmeliyim?

Yanıtlar:


54

Basit matematik kullanarak bunu yapabilirsiniz:

X := originX + cos(angle)*radius;
Y := originY + sin(angle)*radius;

(originX, originY) dairenizin merkezidir. yarıçapı yarıçapıdır. Bu kadar.

Bu çalışır çünkü sinüs ve kosinüs matematiksel olarak birim çevre ile ilgilidir .

sinüs ve kosinüsün birim çevre ile ilişkisi
Resim kredisi: LucasVB (Kendi çalışması) [Public domain], Wikimedia Commons aracılığıyla . (% 70'e düşürüldü.)


Ya ovalse? Başka bir ayar yarıçapı yok.
Test

2
Test: Oval X veya Y yönelimli ise, ilgili eksen konumunu ek faktörle çarpabilirsiniz. Daha fazla detaya ihtiyacınız varsa ayrı bir soru sormalısınız.
Kromster Monica

@Anko: Animasyonun daha iyi açıkladığını sanmıyorum, ama ihtiyacı olanlara bırakalım. CW'ye dönüştürüldü.
Kromster,

@Kromster, 3B alanda aynı sonucu elde etmeye ne dersiniz?
Tomas,

14

Parametrik denklemi Krom ile işaretlenmiş şekilde kullanabilirsiniz. Bu formülü neden kullandığımızı anlamak için denklemin ne olduğunu anlamanız gerekir. Bu denklem, dairenin Parametrik denkleminden elde edilir .

Çember göz önüne alınarak, aşağıdaki diyagramda gösterildiği gibi, başlangıç ​​noktası (O) üzerindeki merkez ile çizilir. Daire

Dairenin çevresine "p" puanı alırsak, yarıçapı r olur.

OP (Origin to p) tarafından yapılan açı θ olsun. P'nin x ekseninden uzaklığı y olsun, p'nin y ekseninden uzaklığı x olsun

Yukarıdaki varsayımları kullanarak, aşağıda gösterildiği gibi üçgeni elde ediyoruz: üçgen

Şimdi biliyoruz ki cos θ = baz / hipotenüs ve günah θ = dik / hipotenüs

bu bize cos = x / r ve günah θ = y / r verir

:: x = r * cos θ ve y = r * sin θ

Fakat eğer daire başlangıç ​​noktasında değilse ve (a, b) konumundaysa, dairenin merkezinin değişmiş olduğunu söyleyebiliriz.

x ekseni
içindeki birimler b y ekseni içindeki birimler
Öyleyse böyle bir daire için, bize aşağıdaki denklemleri veren x ve y eksenindeki kaymayı ekleyerek parametrik denklemi değiştirebiliriz:

x = a + (r * cos θ)
y = b + (r * sin θ)


a & b'nin x olduğu y, dairenin merkezinin koordinatlarını oluşturur.

Bu nedenle, x ve y'yi, dairenin çevresi üzerindeki noktanın r yarıçapı koordinatlarıyla bulduk.


2
Teşekkürler, bu sorunun gerçekten güzel ve kısa cevabı, yaşasın
Ali.Ghodrat

5

Günah (x + a) ve cos (x + a) formüllerini kullandığınız ve günah (a) ve cos (a) 'yı hesaplamanıza izin veren başka bir numara var - bu da hareket etmek istediğiniz açı Mevcut konumunuzdan - sadece bir kez ve her adımda basitçe çarpma ve eklemeler yapın.

günah (x + a) = günah (x) * cos (a) + cos (x) * günah (a), iirc.

Tabii ki, bu sabit açısal hızını varsayar.

Ancak sınırlı aritmetik hassasiyete dikkat edin. Geçmişte "dairesel" harekette, zaman zaman tekrarlanan zaman zaman aşağı yuvarlamanın bir sonucu olarak spiral çekecek şekilde uygulandığını gözlemledim. Her turdan sonra pozisyonun (x0, y0) ayarlanması gerekebilir.

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.