Publicado en 7 de agosto, 2016
C++ – Libreria basica de detección de colision en 2D
Aquí les comparto una libreria (h y cpp) el cual solo determina si ciertas figuras estan o no entrando en colision entre ellas. Su uso simplemente es llamar una función como:
if(Physics::RectBall(box.x, box.y, box.w, box.h, circle.x, circle.y, circle.r)) { //HUBO COLISION }
Donde solo se manda posicion ‘x’, ‘y’, ancho y alto del rectangulo y ‘x’, ‘y’ y radio de la esfera la función regresa true si estan impactando o false en caso contrario.
Aquí dejo un pequeño demo para windows con el cual pueden jugar un poco. Descargar
Las funciones que contiene esta pequeña libreria de detección de colision es:
- //Esferea con esfera
bool BallBall(float _bx1, float _by1, float _br1, float _bx2, float _by2, float _br2); - //Linea y Esfera
bool BallLine(float _bx, float _by, int _br, float _lx1, float _ly1, float _lx2, float _ly2); - //Rectangulo y esfera
bool RectBall(float _rx, float _ry, float _rw, float _rh, float _bx, float _by, float _br); - //Rectangulo y rectangulo
bool RectRect(float _rx1, float _ry1, float _rw1, float _rh1, float _rx2, float _ry2, float _rw2, float _rh2); - //Punto y triangulo Teoria barycentric
bool PointTriangle(float _tx1, float _ty1, float _tx2, float _ty2, float _tx3, float _ty3, float _px, float _py); - //Punto y esfera
bool PointBall(float _px, float _py, float _bx, float _by, float _br); - //Punto y rectangulo
bool PointRect(float _px, float _py, float _rx, float _ry, float _rw, float _rh); - //Punto y punto
bool PointPoint(float _x1, float _y1, float _x2, float _y2); - //Punto y Linea
bool PointLine(float _px, float _py, float _lx1, float _ly1, float _lx2, float _ly2); - //Linea y Linea
bool LineLine(float _x1, float _y1, float _x2, float _y2, float _x3, float _y3, float _x4, float _y4);
Salu2
Hola
HAAAHAHAHAHA
Gracias por el aporte, me ha sido muy útil para un proyecto. gracias bro.
De nada 🙂
Que buena persona, subiendo los mejores tutoriales