versuch quad szene zu machen zeigt dass meine kollisions erkennung nicht klappt. ich habe versucht eine neue fuer quadrate zu inplementieren, aber ich sehe nur einen weissen streifen
This commit is contained in:
+17
-5
@@ -51,14 +51,26 @@ vec3 collisionPlane(ray *lightray, plane *object) {
|
||||
|
||||
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};
|
||||
if (collisionPoint.x <= -1000000) return collisionPoint;
|
||||
|
||||
vec3 localCollisionPoint = vec3Subtract(collisionPoint, object->origin);
|
||||
|
||||
double scalar1 = vec3Product(object->v1,localCollisionPoint);
|
||||
double scalar2 = vec3Product(object->v2,localCollisionPoint);
|
||||
if (scalar1 < 0 || scalar2 < 0) return (vec3){-10000000, -10000000, -10000000};
|
||||
|
||||
double scalarSelf1 = vec3Product(object->v1,object->v1);
|
||||
double scalarSelf2 = vec3Product(object->v2,object->v2);
|
||||
|
||||
|
||||
if (scalar1 / scalarSelf1 > 1 || scalar2 / scalarSelf2 > 1) return (vec3){-10000000, -10000000, -10000000};
|
||||
|
||||
return collisionPoint;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user