Kolizja koła z prostokątem
Ostatnio zmodyfikowano 2011-07-31 20:41
ison |
» 2011-07-31 16:56:30 lepiej trzymać się z dala od takich rozwiązań jak podano Ci wyżej (chyba, że kolizję chcesz sprawdzać w niewielu miejscach ale i tak sprawdzanie kolizji per-pixel jest overkillem)
Jeśli piłka nie mieści się w paletce to można to sprowadzić do kolizji 4 odcinków (z których zbudowany jest prostokąt) z okręgiem. Jeśli chcesz mogę gdzieś poszukać na kompie tę funkcję. |
|
Dawidsoni Temat założony przez niniejszego użytkownika |
» 2011-07-31 17:12:21 Tak. Będzie kilkadziesiąt takich obiektów, z którymi trzeba będzie sprawdzić tę kolizje.
Byłbym wdzięczny gdybyś poszukał. |
|
ison |
» 2011-07-31 17:18:36 kolizja odcinka z kołem: bool IsCollision( const BallClass & Ball, const ObstacleClass & Obstacle ) { float x0 = Ball.x; float y0 = Ball.y; float x1 = Obstacle.x1; float y1 = Obstacle.y1; float x2 = Obstacle.x2; float y2 = Obstacle.y2; float n = fabs(( x2 - x1 ) *( y1 - y0 ) -( x1 - x0 ) *( y2 - y1 ) ); float d = sqrt(( x2 - x1 ) *( x2 - x1 ) +( y2 - y1 ) *( y2 - y1 ) ); float dist = n / d; if( dist > Ball.r ) return false; float d1 = sqrt(( x0 - x1 ) *( x0 - x1 ) +( y0 - y1 ) *( y0 - y1 ) ); if(( d1 - Ball.r ) > d ) return false; float d2 = sqrt(( x0 - x2 ) *( x0 - x2 ) +( y0 - y2 ) *( y0 - y2 ) ); if(( d2 - Ball.r ) > d ) return false; return true; }
wycinek z gry, którą niedawno pisałem klasa Ball: x,y,r klasa Obstacle: x1,y1,x2,y2 (początek odcinka i koniec linii) |
|
Dawidsoni Temat założony przez niniejszego użytkownika |
» 2011-07-31 17:41:40 Wow! Dzięki ison!
Sam napisałeś:D? Jak tak, to jak to zrobiłeś? Rysowałeś na kartce aż wpadłeś?
A co do za funkcja fabs(...)? Wartość bezwzględna? |
|
ison |
» 2011-07-31 18:03:22 spoko, tego to akurat nie pamiętam, bo tę funkcję mam już dość dawno, teraz ją tylko sobie przerabiałem lekko, chyba gdzieś na jakiejś stronie znalazłem, ale napisanie od nowa raczej nie byłoby wielkim problemem, więcej namęczyłem się z obliczaniem kąta odbicia od powierzchni :P fabs to abs, tylko że dla zmiennoprzecinkowych ( http://img12.imageshack.us/img12/1584/screenshotwp.png ;)) |
|
akwes |
» 2011-07-31 18:45:42 W czym pisałeś :P ? Ta smuga za piłką to jakiś system cząstek? |
|
ison |
» 2011-07-31 19:03:38 OpenLayer tak, zwykły system cząsteczek (+additive blending) niedługo wrzucę na warsztat (fps niski bo vsync włączone) </offtop> |
|
Dawidsoni Temat założony przez niniejszego użytkownika |
» 2011-07-31 20:38:44 A da radę w SFML zrobić taką grę? Będzie kilkadziesiąt klocków, paletka i piłka. Podobno SFML jest nie wydajne, mimo nazwy i nie napisze się czegoś więcej niż prosta gra. |
|
1 « 2 » 3 |