Autor Wątek: Jak sprawdzic czy odcinek przecina okrag  (Przeczytany 4928 razy)

maxest

  • Gość
# Sierpień 14, 2007, 17:07:52
wiem, znam... gdzie t jest stosunkiem długości odcinka do odległości między O, a pozycją przecięcia.

nie oto mi chodzi. Ma ktoś może jakies fajne sposoby na liczenie "swept" odcinek - sfera, "swept" sfera odcinek. Może być równanie, byle logiczne... rozpisane... żeby było wiadomo co z czego. O rotacji narazie nie wspominając.

Sam to sobie odpuściłem, w pewnym momencie...
Rozciagamy w czasie nasz odcinek - mamy równoległobok gdzie wierzchołki to A, B, A + przesunięcie, B + przesunięcie. Szukamy naszego t... czyli stosunku długości przesunięcia do kolizji.

Sprawdzamy odległość od płaszczyzny...tak jak w odcinek sfera. Wyznaczamy punkt na płaszczyźnie najbliższy sferze.
Liczymy odległość od płaszczyzny... możemy wyznaczyć promień okręgu na płaszczyźnie(sfera przecięta płąszczyzną)...
z pitagorasa... odległość od płaszczyzny to przyprostokątna, Promień sfery to przeciwprostokątna.

Przed kolejnym liczeniem, podsumujmy... Mamy równoległobok i okrąg w dwóch wymiarach... Banał. :)
Czyli tak samo jak odcinek - okrąg... tylko że łączymy działania/wykorzystujemy właściwości równoległoboku i upewniamy się że nasz cały okrąg nie leży w środku. No i na koniec musimy przecież wyznaczyć t.

hehe. Więc jednak dałem radę sam. Teraz przepisuje swój projekt pod edytor, ale potem... :D
Siadziałem nad tym i siedziałem... a tu jeden temat na forum i olśniło. wow.





Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Sierpień 14, 2007, 18:01:17
Cytuj
No i na koniec musimy przecież wyznaczyć t.
Ty musisz to zrobić na początku, bo jeśli masz t to masz już wszystkie informacje na temat kolizji. Dlatego najlepiej zrobić to rozwiązując równanie, bo licząc to na palcach łatwo możesz się pomylić, o czymś zapomnieć.

maxest

  • Gość
# Sierpień 14, 2007, 18:22:47
Prawda. ;D No to pomóż i rozpisz to równanie. Jak z resztą już do regedita pisałem... równania cool, 3D cool. Połączenie obydwu uncool w moim przypadku. Pomyśle z resztą posiedzę sam jeszcze nad tym równaniem. Do rotacji, bez równań, raczej już nie przeboleje.
Śmiecimy topic w dobrym celu. :)

maxest

  • Gość
# Sierpień 14, 2007, 19:12:50
A smieccie ile chcecie ;) Jako autor, choc nie moderator, pozwalam na rozwiazanie pokrewnego problemu w tym watku :)

Offline Goliatus

  • Użytkownik
    • Warsztat - tworzenie gier

# Sierpień 14, 2007, 23:24:23
rozpisz to równanie
Mam zamiar to zrobić na wiki o ile ktoś mnie nie uprzedzi ;)

Offline kontownia

  • Użytkownik

# Sierpień 30, 2007, 15:50:30
Fragment wcześniejszego kodu Spidera:
  vAB, vAP, vU, vPoint: Tv3D;
  t: Single;
  t := v3D_Dot(vU, vAP); // rzutowanie na wektor vU

Dał by ktoś rade "przetłumaczyć" tą funkcje v3D_Dot na C++ ?
Ja przy matmie wysiadam :(


Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Sierpień 30, 2007, 15:53:17
Dał by ktoś rade "przetłumaczyć" tą funkcje v3D_Dot na C++ ?
Ja przy matmie wysiadam :(
Klasyczny iloczyn skalarny (ang. dot product). dot(a,b) = a.x*b.x + a.y*b.y + a.z*b.z :)

Offline kontownia

  • Użytkownik

# Sierpień 30, 2007, 15:55:37
W zyciu bym się nie domyślił, że to o skalarny chodzi ...  :P
Dzięki.