troche matmy (trygonometria - nienawidzę!)

0

mamy sobie układ współrzędnych.
mamy na nim obiekt.
obiekt posiada dwie właściwości -> ruch względem X i ruch względem Y.
bez konkretnej jednostki.
i teraz potrzebuję posiadając tylko te dwie wartości - obliczyć kąt względem osi Y w jakim porusza się obiekt.
np.
X = 1
Y = 0
kąt = 90

X = 2
Y = 0
kąt = 90

X=2.5
Y=2.5
kąt = 45

Y=1
X = 0
kąt = 180

jak to zrobić? próbowałem myśleć, próbowałem na chybił trafił nawet - ale rezultaty marne..

opis może do d... ale ja naprawdę nie lubię matmy.

0

Przyjmijmy, ze kat alfa to kat pomiedzy osia OY, a Twoim wektorem predkosci(moje serce cierpi, ale zamiast wektor mozna na sile uzyc stwierdzenia - linia po ktorej porusza sie to cos czego predkosc opisujesz ;) ). Tangens kata alfa to (wedlug Twojego nazewnictwa) X/Y, czyli w np 3 przedstawionym przez Ciebie przypadku 2.5/2.5=1. Tangens 1=ilestam. Jak z ilestam przejsc do kata? Bardzo prosto - funkcja arcustangens(zawiera ja chyba kazda biblioteka ulatwiajaca obliczenia matematyczne, zwykle pod nazwa arctan). Co to jest arcustangens? Najprosciej mowiac - odwrotnosc tangensa, czyli arctan(tan(1))=1. Wez pod uwage, ze przewaznie kat podaje sie w radianach, nie w stopniach.
Mam nadzieje, ze wyjasnilem, prosciej juz chyba nie umiem tego opisac ;)

0

kurde, to byłem blisko, bo wczoraj próbowałem robić sin(x/y) a takze cos, ich arcusy, i tangensa tez, ale z arctangensa juz zrezygnowalem z powodu beznadziejnosci moich prób.. :P
działa, fakt, że wynik wychodzi po przerobieniu na stopnie w skali <-90, 90> - ale i tak jest super :)
wracam pospać jeszcze chwilę, potem się tym głębiej pobawię.

dzięki

0

http://pl.wikipedia.org/wiki/Funkcje_trygonometryczne -> definicja za pomocą kąta skierowanego

tak jak napisał cyriel.

zresztą, można to też na arcus sinus przerobić.

jeśli punkt nie jest w (0,0), to:
sin(alfa) = y/sqrt(x2+y2)
alfa = arcsin(y/sqrt(x2+y2))

0

tylko ciężko mi coś z tego matematycznego bełkotu zrozumieć :P
no nic, każde pytanie matematyczne jakie jestem zmuszony zadać sobie zapisuję na przyszłość i raczej mając rozwiązanie powoli dochodzę do tego co i jak..
w sumie sama matma nie jest może taka zła, ale trygonometria to okropieństwo..

mam jeszcze inne pytanie, które mnie od zawsze dręczy a nie miałem okazji zadać..
jak zaprogramować efekt "easingu" (nie wiem jak to nazwać po polsku)..
chciałem sobie pomóc tym:
http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm
ale nie łapię, jak użyć funkcji wynikowej (pierwszy parametr rozumiem, reszty nie), np:

function(t, b, c, d) {
	var ts=(t/=d)*t;
	return b+c*(ts*ts);
}

powiedzmy, że mam obiekt, którego odległość od innego punktu jest 180 (odległość maksymalna możliwa).
chcę, żeby w momencie, jak obiekt jest na te 180 jednostek daleko to w pierwszej klatce animacji obiekt przysunął się o 4 jednostki, w kolejnej już mniej i mniej.
przedstawia to wyżej wygenerowana funkcja. z tego co kojarzę to zwracałaby mi właśnie liczbę jednostek o jaką mam przesunąć obiekt.

jakieś podpowiedzi?

1 użytkowników online, w tym zalogowanych: 0, gości: 1