2

我在 3D 空间中有一个三角形,由它的 3 个顶点 p0、p1 和 p2 定义。

我希望在这个 3D 空间中计算一个平面,它位于 p0 和 p1 并面向第三个点 p2。

该平面由位置和归一化方向定义/

除了沿着 p0 和 p1 并面向 p2 之外,该平面还应垂直于由 p0、p1 和 p2 创建的平面

我已经为此苦苦挣扎了很长一段时间,非常感谢任何人提供的任何帮助。

4

2 回答 2

3

你的问题不恰当。对于位于 p0 和 p1 上的任何平面,在该平面上都会有一些点“面对”点 p2。所以剩下要计算的是沿着 p0 和 p1 的某个平面。

normal = normalize(cross(p1-p0, pX-p0))  //pX is anything except p1
planePoint = p0

编辑: 见评论

这是我的评论解释的一个例子

八度:14> p0
p0 =

0 0 0

八度:15> p1
p1 =

0 0 5

八度:16> p2
p2 =

5 0 0

八度:17> 交叉(p1-p0,交叉(p1-p0,p2-p0))
ans =

-125 0 0

您会注意到符号是错误的,请使用叉积中的参数顺序以使其朝向正确的方向。也不要忘记标准化......但它不会影响方向。还要检查以确保每个叉积后的范数不接近 0,否则没有唯一答案..(三角形形成一条线)

于 2010-03-10T05:57:13.813 回答
1

除非我误解了您的要求,否则从线到 p2 的向量将是您要定义的平面的法线。基本上,你构造一条与线 p0-p1 成直角的线,穿过 p2。

于 2010-03-10T05:55:22.490 回答