summaryrefslogtreecommitdiffhomepage
path: root/src/shapes.c
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2017-01-05 19:33:05 +0100
committerraysan5 <[email protected]>2017-01-05 19:33:05 +0100
commit658c2806690ace34a0dae6b6ed12d0ea52d2d6e4 (patch)
treee726d130c81f429e70d1c36b91aef5454658efb9 /src/shapes.c
parent0369bb4c8cfe8988634a09d56c307b73be281452 (diff)
downloadraylib-658c2806690ace34a0dae6b6ed12d0ea52d2d6e4.tar.gz
raylib-658c2806690ace34a0dae6b6ed12d0ea52d2d6e4.zip
Lattest PR review
Function names, code formatting...
Diffstat (limited to 'src/shapes.c')
-rw-r--r--src/shapes.c81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/shapes.c b/src/shapes.c
index 74480c83..8c6c4be0 100644
--- a/src/shapes.c
+++ b/src/shapes.c
@@ -534,84 +534,3 @@ Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2)
return retRec;
}
-
-
-RayHitInfo RaycastGroundPlane( Ray ray, float groundHeight )
-{
- RayHitInfo result = {0};
-
- if (fabs(ray.direction.y) > EPSILON)
- {
- float t = (ray.position.y - groundHeight) / -ray.direction.y;
- if (t >= 0.0) {
- Vector3 rayDir = ray.direction;
- VectorScale( &rayDir, t );
- result.hit = true;
- result.distance = t;
- result.hitNormal = (Vector3){ 0.0, 1.0, 0.0};
- result.hitPosition = VectorAdd( ray.position, rayDir );
- }
- }
- return result;
-}
-// Adapted from:
-// https://en.wikipedia.org/wiki/M%C3%B6ller%E2%80%93Trumbore_intersection_algorithm
-RayHitInfo RaycastTriangle( Ray ray, Vector3 a, Vector3 b, Vector3 c )
-{
- Vector3 e1, e2; //Edge1, Edge2
- Vector3 p, q, tv;
- float det, inv_det, u, v;
- float t;
- RayHitInfo result = {0};
-
- //Find vectors for two edges sharing V1
- e1 = VectorSubtract( b, a);
- e2 = VectorSubtract( c, a);
-
- //Begin calculating determinant - also used to calculate u parameter
- p = VectorCrossProduct( ray.direction, e2);
-
- //if determinant is near zero, ray lies in plane of triangle or ray is parallel to plane of triangle
- det = VectorDotProduct(e1, p);
-
- //NOT CULLING
- if(det > -EPSILON && det < EPSILON) return result;
- inv_det = 1.f / det;
-
- //calculate distance from V1 to ray origin
- tv = VectorSubtract( ray.position, a );
-
- //Calculate u parameter and test bound
- u = VectorDotProduct(tv, p) * inv_det;
-
- //The intersection lies outside of the triangle
- if(u < 0.f || u > 1.f) return result;
-
- //Prepare to test v parameter
- q = VectorCrossProduct( tv, e1 );
-
- //Calculate V parameter and test bound
- v = VectorDotProduct( ray.direction, q) * inv_det;
-
- //The intersection lies outside of the triangle
- if(v < 0.f || (u + v) > 1.f) return result;
-
- t = VectorDotProduct(e2, q) * inv_det;
-
-
- if(t > EPSILON) {
- // ray hit, get hit point and normal
- result.hit = true;
- result.distance = t;
-
- result.hit = true;
- result.hitNormal = VectorCrossProduct( e1, e2 );
- VectorNormalize( &result.hitNormal );
- Vector3 rayDir = ray.direction;
- VectorScale( &rayDir, t );
- result.hitPosition = VectorAdd( ray.position, rayDir );
- }
-
- return result;
-}
-