Strona 1 z 1

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 23 wrz 2007, o 14:45
autor: skmskm
Witam
Mam taki problem rozwiązałem go dla trójkąta prostokątnego ale ta wersja ma dużo braków i jest niedokładna.
Testuje w silniku gry kolizje linii od gracza do celu i muszę policzyć odległość... a lepiej dam rysunek będzie prościej:

htp:\skmskm.republika.pl/trojkat.bmp
Mam a,b,c,w1,w1, i współrzędne wszystkich zielonych punktów.
I oczywiście h interesuje mnie odcinek znajdujący sie na b od góry do punktu zetknięcia sie z h. h jest pod kątem prostym z czerwoną linią.
Doszedłem do tego że wiem jak policzyć ten odcinek za pomocą prostego wzoru:
b1 = h/sin(90-(tu brakuje kąta)) kąt b z czerwoną linia
gdy kąt między liniami a,b lub b,c jest prosty to kąt można policzyć z: asin(a/c).

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 23 wrz 2007, o 18:09
autor: sigma_algebra1
Szczerze to nie wiem w czym dokładnie tkwi Twój problem, "czytam" go jedynie formalnie , wiec może dlatego tego problemu nie widze.. Otóż wyznaczyłeś b_1 ale nie wiem czemu masz tam 90-kąt a raczej nie ma to być sinus kąta pomiędzy b a czerwoną linia? Po drugie może nie rozumiem co masz dane, ale jeśli mówisz , że masz dane współrzedne wszystkich zielonych punktów, to masz długości, a wiec masz i kąty, prawda? Co rozumiesz przez współrzędne? jesli nie o to tu chodzi to napisz dokładniej jeśli to rzeczywiscie problem natury geometrycznej.

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 23 wrz 2007, o 18:45
autor: skmskm
90 to kąt w wersji gdy trójkąt c,b,z czerwoną jest prostokątny.
jak wiadomo to suma wszystkich kątów to 180 minus 90 daje 90 a najłatwiej mi było policzyć naprzeciwległy kąt niż docelowy(tzn w C++ mam sin i cos dostępny brak ctg i tg).
Z kątami jest problem taki że nie wiem jak je policzyć szukałem w googlach ale zawsze mnie kieruje na innego typu trójkąty. Pewnie miałem to w szkole ale to było dawno i nieprawda.

Zaczynam sie zastanawiać czy nie wygenerować trzy punkty ale to chyba nic nie da i użyć do generacji normalnej trójkąta, ale wtedy oczywiście w pełnym 3D, teraz uprościłem i zmiażdżyłem do 2D. A moim celem jest utrzymywanie gracza w odległości 20 punktów od ścian.

W tym wzorze:
b1 = h/sin(tu brakuje kąta)

b1,h wiadomo z rysunku.
kąt to beta.

dla prostokątnego można go policzyć z:
beta = 90 - asin(b/c)

współrzędne to x,z punktów bo y jest wyzerowane.
dane pochodzą z reytracingu wielkokątów, są bezbłędne testowałem je dokładnie.

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 23 wrz 2007, o 19:59
autor: sigma_algebra1
Ja programowanie mialam dawno i nieprawda, wiec moge mowic tylko o kwestiach geometrycznych, z tego co mowisz masz tez w_1, w_2 wiec cosinus każdego kąta jesteś w stanie obliczyć choćby z twierdzenia cosinusów, a wiec i kat. Ale czy oto ci wlasnie chodzi to nie wiem.

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 23 wrz 2007, o 21:37
autor: skmskm
Właśnie czegoś takiego szukałem musze tylko z tego swierdzenia wyprowadzić dane i będzie ok dzięki
czyli:
c2 = a2 + b2 − 2abcosγ
c2 + 2abcosγ = a2 + b2
γ = asin((a2 + b2 - c2)/2ab)


b2 = h/sin(asin((b*b + w2*w2 - c*c)/2*b*w2))

b1 = h/sin(asin((b*b + w1*w1 - a*a)/2*b*w1))

to rozwiązuje mi problem całkowicie
zaprogramuje to jutro po pracy i pokaże demko.

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 23 wrz 2007, o 22:08
autor: sigma_algebra1
PEWNIE to pomyłka tylko, ale dla formalności tam masz cosinus wiec pojawia się arcus cosinus, a nie arcus sinus.

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 24 wrz 2007, o 16:38
autor: skmskm
Dzięki nie zauważyłem błędu:

c2 = a2 + b2 − 2abcosγ
c2 + 2abcosγ = a2 + b2
γ = acos((a2 + b2 - c2)/2ab)


b2 = h/sin(acos((b*b + w2*w2 - c*c)/2*b*w2))

b1 = h/sin(acos((b*b + w1*w1 - a*a)/2*b*w1))

//EDIT:
w kodowałem to i działa oprócz drobnych wyjątków niekiedy strzela kamerą jak z procy .
Dał bym linka ale nie mogę limit forum.
i jest mały błąd:
2ab musi być w nawiasie inaczej generuje bzdury tzn: kosmiczne liczby coś tam w miliardach.

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 24 wrz 2007, o 21:03
autor: sigma_algebra1
Szkoda że nie dasz linka

No jak nie dasz w nawiasie to program Ci czyta kolejnośc działań czyli dzieli przez 2 a potem mnozy przez a i b wiec bzdury wychodzić moga

A z ciekawości kiedy pojawiają sie te wyjątki niczym z procy?

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 25 wrz 2007, o 16:47
autor: skmskm
Zdarzają sie gdy idę pod górkę przy ścianie celując oczywiście w nią strzela mną do góry ponad sufit, pewnie to nie dzięki temu wzorowi, on oblicza dane w poziomie.

htp://skmskm.republika.pl/gra.part1.rar (2000000B)
htp://skmskm.republika.pl/gra.part2.rar (2000000B)
htp://skmskm.republika.pl/gra.part3.rar ( 786432B)
htp://skmskm.republika.pl/gra.zip ( 286720B)

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 25 wrz 2007, o 19:14
autor: sigma_algebra1
I co niby uruchomić ten silnik? Nie dziala, jest napisane ze cos nie znaleziono i nie mozna uruchomic aplikacj..łeee... a tak chciałam zobaczyc

Problem ze zdobyciem kąta trójkąta(test kolizji do gry F

: 25 wrz 2007, o 21:52
autor: skmskm
Może kartę niekompatybilną masz?
od GF 6XXX powinno działać, osobiście mam GF 8600GT + Vista
daj mi na pw plik debug.txt, powinno go było wygenerować a w środku błędy.