【发布时间】:2014-07-21 10:48:58
【问题描述】:
如何计算射线与平面的交点?
代码
这会产生错误的结果。
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 定义平面
【问题讨论】:
-
当你说这不起作用时,具体是什么不起作用?是不是崩溃了,结果有错吗?是不是编译失败了?
-
您的法线向量是否保证指向远离射线原点?否则,denom 很可能仍然会产生交集。
标签: c++ raytracing