Jump to content

[Delphi]2 Wektory i kąt między nimi.


5corpio

Recommended Posts

Zacznę od rysunku:
Obrazek

Czyli mam Punkt 1 który zawsze jest w tym samym miejscu, Punkt 2 który się "porusza" i punkt 3 który wstawiłem by mieć te 2 wektory i jakiś kąt.

I problem jest w tym, że nie wychodzi mi obliczenie kąta między tymi 2 wektorami V1 i V2 bo potem chcę przekręcić ten punkt 1 o ten kąt w osi OY.

Mam takie 2 funkcje:


[code=Delphi]
Function GetAngle(v1, v2 : TVector) : GLFloat;
begin
r[HĘ
KJNB[BB[[
KfV7F\"tfĆCŚ&Vv&W7VBŁcBc\"ŹĄAAŹĄAA
end;
hŁzG#iŚ4(AĄ4(A:= (point3.y - point1.y);
vect1.Point.z := (point3.z - pn[KNBBX[H
[H[K
NBX\"BŁC\"CfV7C\"BŁ4(4(ąŃąĄ [/code]

to co zwraca ta funkcja jest przekazywane do glRotatef(kat, 0, 1,0);

I coś to wszystko w ogóle nie działa sensownie bo mi znika ten obiekt obracany jakoś dziwnie już na starcie programu.

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link to comment
Share on other sites

Bo walnoles sie we wzorze na obliczanie kata :)
wychodzisz z iloczynu skalarnego

a*b = |a||b|*Cos( kat(a,b) )
tak wiec

cos( kat(a,b) ) = a*b / (|a||b|)

i dalej

kat(a,b) = arcCos(a*b / (|a||b|))

gdzie a*b to iloczyn skalarny u ciebie zwany Dot

po pierwsze co musisz jeszcze wiedziec:
kat(a,b) bedzie z zakresu <0,180) czyli <0,Pi)
jesli chcesz pelny kat to trzeba troche zakombinowac, jak chcesz to moge przytargac procke z domu ktora dobrze liczy katy miedzy wektorami w zakresie <0,360)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link to comment
Share on other sites

Jak wrzuce ten obliczony kąt to obiekt się nie obraca ale jak przemnoże go przez jakąś stałą to dopiero się obraca tylko nie wiem czemu dopiero po wymnożeniu np. przez 90 Czemu tak jest ?

Czy ta funkcja zwraca to w radianach może i trzeba potem przeliczyć na stopnie ? czyli po prostu to co zwróci mi ona * (180 / PI) albo ~57

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link to comment
Share on other sites

Z tego co wiem to tak. Wszystko jest w radianach inaczej delphi nie zrozumie...miałem podobny problem w grze z rzutem poziomym żeby pocisk obracał się podczas lotu...gdzieś na jakieś stronie o delphi tak miałem podane i widziałem program w którym by obliczyć kąt wykorzystywano radiany bo inaczej sie nie da sad.gif. Sorry ale nie wiele o tym wiem bo jestem bo tej po****** reformie i Sin, Cos nie miałem dopiero niedawno radiany na fizie mi weszły...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...