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?
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:
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 .
Resim kredisi: LucasVB (Kendi çalışması) [Public domain], Wikimedia Commons aracılığıyla . (% 70'e düşürüldü.)
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.
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:
Ş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.
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.