Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kolizja koła z prostokątem

Ostatnio zmodyfikowano 2011-07-31 20:41
Autor Wiadomość
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ę.
P-37720
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ł.
P-37721
ison
» 2011-07-31 17:18:36
kolizja odcinka z kołem:
C/C++
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)
P-37725
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?
P-37730
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 ;))
P-37731
akwes
» 2011-07-31 18:45:42
W czym pisałeś :P ? Ta smuga za piłką to jakiś system cząstek?
P-37733
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>
P-37734
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.
P-37740
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona