如何计算射线和平面之间的交点?
代码
这会产生错误的结果。
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;
}
}
参数
ray
表示光线对象。
ray.direction
是方向向量。
ray.origin
是起始点向量。
rec
表示结果对象。
rec.tHit
是碰撞位置的数值。
rec.anyHit
是一个布尔值。
我的函数可以访问平面:
center
和 normal
定义了该平面。