5corpio Posted March 9, 2006 Report Share Posted March 9, 2006 Zacznę od rysunku: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 More sharing options...
Toster Posted March 10, 2006 Report Share Posted March 10, 2006 Bo walnoles sie we wzorze na obliczanie kata :)wychodzisz z iloczynu skalarnegoa*b = |a||b|*Cos( kat(a,b) )tak wieccos( kat(a,b) ) = a*b / (|a||b|)i dalejkat(a,b) = arcCos(a*b / (|a||b|))gdzie a*b to iloczyn skalarny u ciebie zwany Dotpo 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 /> Link to comment Share on other sites More sharing options...
5corpio Posted March 10, 2006 Author Report Share Posted March 10, 2006 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 More sharing options...
Greensand Posted March 11, 2006 Report Share Posted March 11, 2006 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 . 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 More sharing options...
Toster Posted March 13, 2006 Report Share Posted March 13, 2006 Da sie inaczej trzeba tylko wiedziec jak sie przelicza radiany na stopnie i na odwrot, zreszta zawsze mozna skorzystac z funkcji DegToRad albo RadToDeg z biblioteki math. Always Dark<br /> Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.