Autor Wątek: Kolizja w przestrzeni- długość wektora normalnego  (Przeczytany 1558 razy)

Offline ByerN

  • Użytkownik

# Listopad 26, 2011, 22:37:09
Wstęp:
Witam. Robię podstawy pod grę 3d opartej na bibliotece OpenGL i jeżeli chodzi o kolizję mam już prawie wszystko zrobione (w oparciu o tutorial Nehe-lekcja 30 Wykrywanie przecięcia promienia z płaszczyzną). Jednak pozostaje jeden mały problem. Reakcja na kolizje opiera się na tym, że postac jest odpychana od plaszczyzny z którą koliduje po wektorze_normalnym_danej_plaszczyzny. Tylko, że w przypadku gdy poligon jest większy niż większość poligonów, postać jest odpychana bardziej co powoduje "efekt lewitacji" na większych poligonach.

Obliczenia:
Z dwóch wektorów trójkąta (poligonu) tworzę normalną (mnożenie wektorowe). Wektory zaczynają się od jednego punktu więc wychodzi mniej więc wychodzi coś takiego:

^ normalna
|     
|  / wektor2
|/               
--------------> wektor1

Pytanie:
Co mogę zrobić aby wektor normalnej miał długość niezależną od wektora1 i wektora2?  (stałą i oczywiście kąt nachylenia normalnej wyliczony z iloczynu wektorowego, czyli 90stopni do płaszczyzny)

Post Scriptum:
Z góry dziękuje.

Offline Mr. Spam

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

Offline Vipa

  • Redaktor

# Listopad 26, 2011, 22:46:28
Długość wektora odbicia = masa razy prędkość?
O ile się nie mylę to zasady dynamiki Newtona.

Offline Paweł

  • Użytkownik

# Listopad 26, 2011, 22:47:28
Wystarczy go znormalizowac: długość będzie stała = 1, a kąt nachylenia pozostanie bez zmian.

Offline ByerN

  • Użytkownik

# Listopad 26, 2011, 23:19:23
Właśnie o normalizację mi chodzi, tylko że potrzebuję współrzędne tego wektora normalnego ( w sensie postać wektorową) którego długość jest stała. (używam go do korekcji, by postać nie wchodziła w ściany)

No, i nie wiem jak się normalizuje :P myślałem nad pomnożeniem tych współrzędnych przez jakąś zmienną, ale nie wiem przez jaką. xD
« Ostatnia zmiana: Listopad 26, 2011, 23:21:21 wysłana przez ByerN »

Offline bagiet

  • Użytkownik

# Listopad 26, 2011, 23:34:27
Normalizacja to podzielenie wektora przez jego długość...

Offline ByerN

  • Użytkownik

# Listopad 26, 2011, 23:57:09
O :D Dzięki bardzo. Jutro to zastosuje i odpisze czy działa.

Offline ByerN

  • Użytkownik

# Listopad 27, 2011, 13:05:49
Wszystko dziala :D jeszcze raz dziekuje.