Review math usage to reduce temp variables

This commit is contained in:
raysan5 2018-04-02 15:16:45 +02:00
parent 6985953e3d
commit 375adf86a6
3 changed files with 13 additions and 22 deletions

View file

@ -1061,8 +1061,7 @@ Ray GetMouseRay(Vector2 mousePosition, Camera camera)
Vector3 cameraPlanePointerPos = rlUnproject((Vector3){ deviceCoords.x, deviceCoords.y, -1.0f }, matProj, matView); Vector3 cameraPlanePointerPos = rlUnproject((Vector3){ deviceCoords.x, deviceCoords.y, -1.0f }, matProj, matView);
// Calculate normalized direction vector // Calculate normalized direction vector
Vector3 direction = Vector3Subtract(farPoint, nearPoint); Vector3 direction = Vector3Normalize(Vector3Subtract(farPoint, nearPoint));
direction = Vector3Normalize(direction);
if(camera.type == CAMERA_PERSPECTIVE) if(camera.type == CAMERA_PERSPECTIVE)
{ {

View file

@ -1889,16 +1889,14 @@ bool CheckCollisionRaySphereEx(Ray ray, Vector3 spherePosition, float sphereRadi
if (d >= 0.0f) collision = true; if (d >= 0.0f) collision = true;
// Calculate collision point // Check if ray origin is inside the sphere to calculate the correct collision point
Vector3 offset = ray.direction;
float collisionDistance = 0; float collisionDistance = 0;
// Check if ray origin is inside the sphere to calculate the correct collision point
if (distance < sphereRadius) collisionDistance = vector + sqrtf(d); if (distance < sphereRadius) collisionDistance = vector + sqrtf(d);
else collisionDistance = vector - sqrtf(d); else collisionDistance = vector - sqrtf(d);
offset = Vector3Scale(offset, collisionDistance); // Calculate collision point
Vector3 cPoint = Vector3Add(ray.position, offset); Vector3 cPoint = Vector3Add(ray.position, Vector3Scale(ray.direction, collisionDistance));
collisionPoint->x = cPoint.x; collisionPoint->x = cPoint.x;
collisionPoint->y = cPoint.y; collisionPoint->y = cPoint.y;
@ -2021,11 +2019,8 @@ RayHitInfo GetCollisionRayTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3)
result.hit = true; result.hit = true;
result.distance = t; result.distance = t;
result.hit = true; result.hit = true;
result.normal = Vector3CrossProduct(edge1, edge2); result.normal = Vector3Normalize(Vector3CrossProduct(edge1, edge2));
result.normal = Vector3Normalize(result.normal); result.position = Vector3Add(ray.position, Vector3Scale(ray.direction, t));
Vector3 rayDir = ray.direction;
rayDir = Vector3Scale(rayDir, t);
result.position = Vector3Add(ray.position, rayDir);
} }
return result; return result;
@ -2040,16 +2035,14 @@ RayHitInfo GetCollisionRayGround(Ray ray, float groundHeight)
if (fabsf(ray.direction.y) > EPSILON) if (fabsf(ray.direction.y) > EPSILON)
{ {
float t = (ray.position.y - groundHeight)/-ray.direction.y; float distance = (ray.position.y - groundHeight)/-ray.direction.y;
if (t >= 0.0) if (distance >= 0.0)
{ {
Vector3 rayDir = ray.direction;
rayDir = Vector3Scale(rayDir, t);
result.hit = true; result.hit = true;
result.distance = t; result.distance = distance;
result.normal = (Vector3){ 0.0, 1.0, 0.0 }; result.normal = (Vector3){ 0.0, 1.0, 0.0 };
result.position = Vector3Add(ray.position, rayDir); result.position = Vector3Add(ray.position, Vector3Scale(ray.direction, distance));
} }
} }

View file

@ -470,8 +470,7 @@ void rlRotatef(float angleDeg, float x, float y, float z)
Matrix matRotation = MatrixIdentity(); Matrix matRotation = MatrixIdentity();
Vector3 axis = (Vector3){ x, y, z }; Vector3 axis = (Vector3){ x, y, z };
axis = Vector3Normalize(axis); matRotation = MatrixRotate(Vector3Normalize(axis), angleDeg*DEG2RAD);
matRotation = MatrixRotate(axis, angleDeg*DEG2RAD);
// NOTE: We transpose matrix with multiplication order // NOTE: We transpose matrix with multiplication order
*currentMatrix = MatrixMultiply(matRotation, *currentMatrix); *currentMatrix = MatrixMultiply(matRotation, *currentMatrix);