ison Temat założony przez niniejszego użytkownika |
Kolizja trójkąta z prostokątem » 2010-12-01 19:51:20 Witam, mógłby ktoś nakierować mnie na prosty algorytm wykrywający kolizję trójkąta z prostokątem (bądź wykrywający czy linie się przecinają)? A jeszcze lepiej byłoby gdyby ktoś podzielił się gotowcem :D dzięki, pozdrawiam |
dmx81 |
» 2010-12-02 21:36:34 sposobow jest wiele, sam nad tym siedze juz iles tam dni ( i kartek zapisanych) np sprawdzanie wyznacznika - K - kwadrat, T- trojkat jesli K1,K2,T1 ma inny znak niz K1,K2,T2 i T1,T2,K1 ma inny znak niz T1,T2,K1 - to proste sie przecinaja :)
i tak robisz dla kazdej prostej trojkata, czy przecina sie z jakakolwiek prosta kwadratu
ps1. wyznaczniki dla dwoch roznych punktow maja rozne znaki wyznacznikow, jesli punkty te leza po przeciwnych stronach prostej\odcinka
mozna na wektorach, przez obliczanie dlugosci wektorow i ich rzutowanie - nad tym naprawde trzeba troszke posiedziec i rozrysowac :)
ogolnie nie ma co patrzyc chyba ze kwadrat - trojkat, ale prosta-prosta, ewentualnie sprawdzac, czy wierzcholek jednej figury nie nalezy czasem do drugiej figury - a to robisz tak, ze :
bierzez najbardziej wysuniety wierzcholek figury1 na osi x (np xmax = 200)
dla kazdego wierzcholka figury2 rysujesz prosta L (x1,y1,x2,y2) (y1,y2 = y wierzcholka, x1 - wiadomo, takie jak x kolejnego wierzcholka, natomiast x2 - zawsze wieksze od xmax, np 201)
teraz szukasz przeciec wg wyznacznikow, jesli prosta ma jedno przeciecie - znaczy sie, ze pkt jest w srodku = kolizja, jesli ma 2 przeciecia (ew wiecej dla figury wkleslej) lub 0 przeciec - brak kolizji - dla danego wierzcholka oczywiscie
mam nadzieje, ze nic nie pomieszalem, w ostatecznosci wrzuce jakis kodzik, ale lepiej samemu rozpracowac na kartce
ps2. sam siedze nad kolizjami (chociaz teraz mialem przeprowadzke i od tyg nic nie robilem) i dla "szybko" poruszajacych sie figur troche wiecej kombinowania, ale juz jest niezle ;) bo pomysl co zrobic, jak przed ruchem obiekty nie koliduja, po ruchu (czytaj klatce) nie koliduja - a jak narysujesz slad ich ruchu - to sie przecina (od razu dalem odpowiedz, jak szukac takich kolizji - wymyslilem, tzn wpadlem na cos, co pewnie i tak juz znane, zeby wlasnie sprawdzac taki slad ruchu - czy sie przecina z innym sladem )
jak cos niedokladnie napisalem, to pytaj, a jesli cos zle, to mnie poprawcie :) |