Update rshapes.c

Changes based on feedback.
This commit is contained in:
lonelyfloat 2021-12-20 20:04:16 -05:00 committed by GitHub
parent 4bba270764
commit d7033eee6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1739,16 +1739,15 @@ bool CheckCollisionPointLine(Vector2 point, Vector2 p1, Vector2 p2, int threshol
bool CheckCollisionRayLine(Vector2 rayPosition, Vector2 rayDirection, Vector2 startPos, Vector2 endPos, Vector2 *collisionPoint) bool CheckCollisionRayLine(Vector2 rayPosition, Vector2 rayDirection, Vector2 startPos, Vector2 endPos, Vector2 *collisionPoint)
{ {
bool collision = false; bool collision = false;
Vector2 offsetPosition; float offsetPositionX = rayPosition.x + rayDirection.x;
offsetPosition.x = rayPosition.x + rayDirection.x; float offsetPositionY = rayPosition.y + rayDirection.y;
offsetPosition.y = rayPosition.y + rayDirection.y;
float denom = (startPos.x - endPos.x)*(rayPosition.y-offsetPosition.y) - (startPos.y - endPos.y)*(rayPosition.x-offsetPosition.x); float denom = (startPos.x - endPos.x)*(rayPosition.y-offsetPositionY) - (startPos.y - endPos.y)*(rayPosition.x-offsetPositionX);
if (denom == 0) return collision; if (denom == 0) return collision;
float t = ((startPos.x - rayPosition.x)*(rayPosition.y - offsetPosition.y) - (startPos.y-rayPosition.y)*(rayPosition.x-offsetPosition.x)) / denom; float t = ((startPos.x - rayPosition.x)*(rayPosition.y - offsetPositionY) - (startPos.y-rayPosition.y)*(rayPosition.x-offsetPositionY)) / denom;
float u = ((startPos.x - rayPosition.x)*(startPos.y - endPos.y) - (startPos.y-rayPosition.y)*(startPos.x - endPos.x)) / denom; float u = ((startPos.x - rayPosition.x)*(startPos.y - endPos.y) - (startPos.y-rayPosition.y)*(startPos.x - endPos.x)) / denom;
collision = (t >= 0 && t <= 1 && u >= 0); collision = (t >= 0 && t <= 1 && u >= 0);
if (collision) if (collision && collisionPoint != NULL)
*collisionPoint = (Vector2){startPos.x + t * (endPos.x-startPos.x),startPos.y + t * (endPos.y-startPos.y)}; *collisionPoint = (Vector2){startPos.x + t * (endPos.x-startPos.x),startPos.y + t * (endPos.y-startPos.y)};
return collision; return collision;
} }