2012-09-27 5 views
5

Chcę zrobić animację w javascript, gdzie obiekt porusza się po ścieżce. Do tego potrzebuję funkcji, która zwróci mi współrzędne X/Y na ścieżce dla danego czasu. Ścieżka powinna być trójkątem o miękkich krawędziach.Funkcja uzyskiwania współrzędnych X/Y dla ruchu w trójkącie o miękkich krawędziach

Na początku animacji powinien miękko poruszać się po ścieżce trójkąta - ale to może rozwiązać w innej funkcji. Ważniejsza dla mnie jest funkcja, która może zwrócić mi współrzędne X/Y dla ruchu na trójkącie.

Animacja powinna następnie pętla nieskończona na ścieżce trójkąta.

the animation path

Są tam (online) narzędzia do tworzenia współrzędne takiej animacji?

Czy ktoś może mi pomóc z funkcją?

+0

Chciałbym spróbować [krzywej prowadzenia] (http://en.wikipedia.org/wiki/Pursuit_curve), gdzie znajduje się kursor rysowania niewidoczny punkt, który porusza się po twardym trójkącie w pewnej odległości, wygładzając krawędzie. Umożliwiłoby to również przejście do trójkąta. –

+0

Polecam pętlę Beziersów na ratunek, są one dobrze udokumentowane i łatwo zaimplementowane, a w każdej chwili możesz uzyskać dokładną pozycję. Mają jednak irytującą właściwość, że nie utrzymują stałej prędkości wzdłuż ścieżki, a twoja animacja będzie znacznie wolniejsza na zaokrąglonych końcach niż wzdłuż krawędzi. – Lyth

+0

a [superformula] (http://en.wikipedia.org/wiki/Superformula) z a = 3 może pomóc – Bergi

Odpowiedz

1

Polecam coś takiego jak sqrt(x²+y²)=2.5+sin(atan2(y,x)*3)/5 - polarny: ρ(θ)=2.5+sin(3θ)/5. Jest to prosty układ współrzędnych biegunowych i dodanie skompresowanego sinusoidę (3 okresów na kolei) na kole:

θ(t) = t // angle 
ρ(t) = 2.5 + 0.2 * sin (t * 3) // radius 
// of course, you can play with the parameters :-) 

można łatwo convert those polar coordinates into cartesion ones.

Animacja na początku, przechodząc od centrum do ścieżki, potrzebowałaby oczywiście dodatkowej funkcji. Jednak można to zrobić za pomocą tego samego mechanizmu - pomijając okrąg: ρ(θ)=2.5*sin(3θ)

+0

Dzięki - dokładnie to, czego potrzebowałem. Oto prototyp: http://jsfiddle.net/qgPVn/4/ Nadal pracuję nad początkiem animacji. Jak tylko ten bałagan zostanie wyjaśniony, przyjmuję odpowiedź! – Benjamin

Powiązane problemy