NON WORKING

absoluter clutter beim versuch quads zu implementieren. refactor absolut noetig
This commit is contained in:
any
2026-07-30 22:16:18 +02:00
parent 9681137e5a
commit 91bb170b23
4 changed files with 112 additions and 18 deletions
+27
View File
@@ -1,6 +1,7 @@
#include "structs.h"
#include "math.h"
#include "helper.h"
#include "vectorOp.h"
vec3 collisionPointSphere(ray *lightray, sphere *object)
{
@@ -34,4 +35,30 @@ vec3 collisionPointSphere(ray *lightray, sphere *object)
collisionPoint.y = S * lightray->direction.y + lightray->origin.y;
collisionPoint.z = S * lightray->direction.z + lightray->origin.z;
return collisionPoint;
}
vec3 collisionPlane(ray *lightray, plane *object) {
vec3 collisionPoint;
double r;
if (vec3Product(lightray->direction, object->normal) >= 0) return (vec3){-10000000, -10000000, -10000000};
r = vec3Product(object->normal, vec3Subtract(object->origin, lightray->origin)) * 1/(vec3Product(lightray->direction, object->normal));
collisionPoint = vec3Add(lightray->origin, vec3Scale(lightray->direction, r));
return collisionPoint;
}
vec3 collisionQuad(ray *lightray, quad *object) {
vec3 collisionPoint;
vec3 corner = vec3Add(vec3Add(object->v1, object->v2),object->origin);
plane Plane = (plane){object->origin, object->normal};
collisionPoint = collisionPlane(lightray, &Plane);
if (collisionPoint.x < corner.x && collisionPoint.y < corner.y && collisionPoint.z < corner.z && collisionPoint.x > object->origin.x && collisionPoint.y > object->origin.y && collisionPoint.z > object->origin.z) {
return collisionPoint;
}
return (vec3){-10000000, -10000000, -10000000};
}