Bir nesneyi “sonsuz” veya “şekil 8” yörüngesinde nasıl hareket ettirebilirim?


28

Nesneyi noktanın etrafında hareket ettirmek istediğimde yaparım:

    point.x *= cosf(timer.timeElapsed);
    point.y *= sinf(timer.timeElapsed);

Sekiz veya sonsuzluk işareti yörüngesinde nokta hareketi nasıl yapılır?

Yanıtlar:



61

Marton'un belirttiği gibi, ihtiyaçlarınızı karşılayabilecek birkaç "sekiz rakamı" eğrisi vardır. Belki de en basit olanı, parametreleştirme olan Gerono'nun aydınlatmasıdır :

x = cos(t);
y = sin(2*t) / 2;

ve şuna benzer:

Gerono animasyonunun örneği

Ancak, Bernoulli'nin doğuşu görsel olarak daha hoş olabilir; bu, her iki eksen bir faktör ile ölçeklenir dışında Gerono bir Lemniscate çok benzer bir parametrizasyonunu sahiptir 1/(sin(t)^2 + 1) = 2/(3 - cos(2*t)):

scale = 2 / (3 - cos(2*t));
x = scale * cos(t);
y = scale * sin(2*t) / 2;

Bu gibi görünüyor:

Bernoulli animasyonunun örneği

(Maple 13 ile yapılan animasyonlar, GIFsicle ile sıkıştırılmıştır.)


Desteğiniz için, herkese teşekkür ederim, bu da bana gamedev'deki ilk altın rozetimi kazandı! :-)
Ilmari Karonen

1
Sadece linkleri göndermek için değil aynı zamanda formları ve grafikleri (kaynaklarla birlikte) göndermek için de +1.
rootlocus

2
Gibi, bu kabul edilen cevap olmalıdır.
Brian H.

-1

Bu formülü kullanarak rastgele bir tane buldum:

x2=y2+0.1x2.8

Wolfram Alpha tarafından çizildiği gibi :

sonsuzluk sembolünün yarısı


Diğer cevaplardan farklı olarak, bu durum şu anda pozisyonu zaman içinde kolayca ilerletmemizi sağlayan parametrik formda sunulmamıştır t. Zaman içinde hareketli bir nesneyi konumlandırmak için bu formülü nasıl kullanacağınızı açıklamanızı da tavsiye ederim.
DMGregory

-4

((x+1)2+y2)((x1)2+y2)=1

sonsuzluk sembolünün yarısı

Bu eğri üzerindeki herhangi bir noktadan (-1, 0) ve (1,0) 'a kadar olan mesafelerin çarpımı sabittir ve 1' e eşittir.


4
Bu cevap, böyle bir eğriyi modelleyen bir formül sağlar, ancak “nesneyi” bu eğriyi takip edecek şekilde hareket ettirme yöntemi değildir. Lütfen, bu matematiği bir oyunda bir nesneyi taşımak için nasıl kullanacağınızı belirtmek için cevabın üzerinde durmayı düşünün.
DMGregory
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.