How do I calculate the intersection between a ray and a plane?
Code
This produces the wrong results.
float denom = normal.dot(ray.direction);
if (denom > 0)
{
float t = -((center - ray.origin).dot(normal)) / denom;
if (t >= 0)
{
rec.tHit = t;
rec.anyHit = true;
computeSurfaceHitFields(ray, rec);
return true;
}
}
Parameters
ray
represents the ray object.
ray.direction
is the direction vector.
ray.origin
is the origin vector.
rec
represents the result object.
rec.tHit
is the value of the hit.
rec.anyHit
is a boolean.
My function has access to the plane:
center
and normal
defines the plane
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…