Kolizje ciąg dalszy

14, Sierpień 2007

Tak jak wspominałem, kolizje napisałem od nowa (a właściwie to skopiowałem z posta regedita z Warsztatu). Jednak nie o tym będę pisał, pokażę różnicę między dwoma sposobami sprawdzania
kolizji pomiędzy dwoma prostokątami.

Mój stary sposób:

bool KolizjaPilkaLewaPaletka()
{
if(det(paletka.rozmiar.right, paletka.rozmiar.top, paletka.rozmiar.right, paletka.rozmiar.bottom, pilka.rozmiar.left, pilka.rozmiar.top) == 0)
{
if(det(paletka.rozmiar.right, paletka.rozmiar.top, paletka.rozmiar.right, paletka.rozmiar.bottom, pilka.rozmiar.left, pilka.rozmiar.bottom) == 0)
{
if(min(paletka.rozmiar.right, paletka.rozmiar.right) <= pilka.rozmiar.left &&amp;amp; pilka.rozmiar.left <= max(paletka.rozmiar.right, paletka.rozmiar.right)) { if(min(paletka.rozmiar.top, paletka.rozmiar.bottom) <= pilka.rozmiar.top && pilka.rozmiar.top <= max(paletka.rozmiar.top, paletka.rozmiar.bottom) || min(paletka.rozmiar.top, paletka.rozmiar.bottom) <= pilka.rozmiar.bottom && pilka.rozmiar.bottom <= max(paletka.rozmiar.top, paletka.rozmiar.bottom)) { return true; } } } } }

I to jest kod tylko dla kolizji lewa paletka – piłka. Niezłe co? Na początku sprawdza
współliniowość lewego boku piłki i prawego boku paletki, potem sprawdza czy punkty leżą na odcinkach itd… Podsumowując, wycudowane w chuj.

A to kod sposobu regedita (funkcja przyjmujaca 2 prostokaty dla ktorych ma byc sprawdzana kolizja):

inline bool OverlapRect(const RECT &a_rect1, const RECT &amp;a_rect2)
{
return (a_rect1.left < a_rect2.right) &&
(a_rect1.right > a_rect2.left) &&
(a_rect1.top < a_rect2.bottom) &&
(a_rect1.bottom > a_rect2.top);
}

Jest różnica, prawda?

Reklamy

Komentarze 3 to “Kolizje ciąg dalszy”

  1. k_b Says:

    Prawda 😛

  2. k_b Says:

    PS: Linka do changeloga GP możesz wyrzucić ;p

  3. Dąbek Says:

    dupa


Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Connecting to %s

%d blogerów lubi to: