0

我一直在寻找一天,但找不到我需要的帮助。

关于 -lines- 和 -planes- 有很多建议和解决方案,但关于 -segments- 和 -planes- 的建议和解决方案很少 - 特别是,没有关于通过法线和点定义的平面。平面的一般参考是通过法线和距离,而我的平面是 3d 点和法线。

基本上,我需要帮助了解我需要什么来确定由两点形成的线段的平面交点。

Vector3 point1 = new Vector3 (-4,-5,-6);
Vector3 point2 = new Vector3 (5,3,2); 
                           //normal            //point
Plane plane1 = new plane ( new Vector3(0,0,1), new Vector3(4,2,1));

Vector3 intersection = ???

由于点积和点距离,确定是否存在相交相对容易,但尽管我努力了相交公式,但对于“正常距离”平面定义和“正常,点”平面定义,如我有一个,因为我得到的结果不是“在飞机上”,而是在飞机的前后。

任何帮助表示赞赏。

谢谢。

4

1 回答 1

1

您可以将点+法线转换为法线+距离

令 N 为法线(归一化为单位长度)。距离 d = -np (与您所拥有的点的点积)。见这里http://mathworld.wolfram.com/Plane.html

该段与该行没有太大不同。您可以为线和平面相交方程做基本的事情,然后尝试平面相交的点或点集是否也属于您的线段。可能有一种更有效的方法,但最简单的方法是添加一个检查以查看您与通用线获得的交集结果是否包含该段。

于 2012-02-24T00:35:17.347 回答