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

Kolizje prymitywów

Ostatnio zmodyfikowano 2023-08-28 12:45
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-14 21:35:29
Racja zapomniałem o abs(). A jak zrobić kolizje koła z prostokątem?
P-180271
pekfos
» 2023-08-14 22:35:05
Nawet jak dodasz abs() to w tej analogii szerokość/wysokość jest promieniem, więc połową faktycznej wartości, a współrzędne trzeba przesunąć by wskazywały środek prostokąta.

https://stackoverflow.com/questions/401847/circle-rectangle-collision-detection-intersection
P-180273
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-15 08:46:04
To nie działa :
(m - mapa, cam - camera)
C/C++
if(
abs( cam->right - m->left ) <( cam->w + m->w ) &&
abs( cam->top - m->bottom ) <( cam->h + m->h )
)
   
 mapVisible = true;
else
   
 mapVisible = false;

P-180275
pekfos
» 2023-08-15 19:54:42
A co z tym co pisałem o środkach i promieniach? Jeśli środki prostokątów w osi X (lub Y) są od siebie oddalone o nie więcej niż połowę sumy ich szerokości (wysokości), to na siebie zachodzą. Połowę bo od środka do krawędzi masz pół szerokości/wysokości. I zaznaczam "nie więcej" bo w innych wzorach dopuszczasz styczność figur jako kolizję, a dla prostokątów jak dotąd nie.
P-180287
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-16 07:50:20
A nie przypadkiem odwrotnie?
P-180302
pekfos
» 2023-08-16 20:34:52
Ale co odwrotnie? Napisz kod tak jak sądzisz że powinien być napisany i zobacz czy działa.
P-180303
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-19 11:14:54
C/C++
if(
abs( cam->right - m->left ) <( cam->w + m->w ) / 2.f &&
abs( cam->top - m->bottom ) <( cam->h + m->h ) / 2.f
)
   
 mapVisible = true;
else
   
 mapVisible = false;

P-180305
pekfos
» 2023-08-19 21:32:31
I działa?
P-180313
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona