用平面进行raycast时,为什么光线法线和平面法线的点值大于0,不相交

问题描述

float Raycast(Ray ray,Plane plane) {
    float nd = Vector3.Dot(ray.normal,plane.normal);
    float pn = Vector3.Dot(ray.Position,plane.normal);

    if (nd >= 0f) { !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        return -1;
    }

    t = (plane.distance - pn) / nd;

    if (t >= 0f) {
      return t;
    }
    return -1;
}

当我学习 3D 碰撞时。
我找到了这个代码。当射线法线和平面法线之间的点值大于零时,为什么它从不相交??

我认为光线的原点在平面的后面,光线和平面的法线是一样的,它相交!!
想想,在二维维度,光线原点(0,0),光线法线(0,1),平面法线(0,1),平面距离(1),它相交!!!。

我不知道该资源是否有误..

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)