Hi, I want to make my raytracer able to trace triangles, not only spheres as it currently does.
So I must first check if the ray hits the plane.
Leaving aside the triangle for now,
I have:
Vector3 a = {0, 0, 0}; // a point of the plane
Vector3 n = {0, 1, 0}; // the plane's normal
n.normalize();
Vector3 e = {0, -1, 0}; // the starting point of the ray
Vector3 d = {0, 1.0f, 0}; // the ray's direction
d.normalize();
float t = (dot(a, n) - dot(e, n)) / dot(d, n);
So, the collision point would be e + t * d.
Also, if dot(d, n) = 0, the ray and the plane are parallel.
Is that correct?
1 reply to this topic
Ad:
#2 Members - Reputation: 231
Posted 20 December 2012 - 02:59 AM
yes this is correct, since dot product is distributive you can write t = dot(a-e.n) / dot(d,n)
ddos
edit: http://en.wikipedia.org/wiki/Line-plane_intersection -> Algebraic form
ddos
edit: http://en.wikipedia.org/wiki/Line-plane_intersection -> Algebraic form
Edited by DDoS, 20 December 2012 - 03:01 AM.






