我在 3D 空间中有一个三角形,由它的 3 个顶点 p0、p1 和 p2 定义。
我希望在这个 3D 空间中计算一个平面,它位于 p0 和 p1 并面向第三个点 p2。
该平面由位置和归一化方向定义/
除了沿着 p0 和 p1 并面向 p2 之外,该平面还应垂直于由 p0、p1 和 p2 创建的平面
我已经为此苦苦挣扎了很长一段时间,非常感谢任何人提供的任何帮助。
你的问题不恰当。对于位于 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,否则没有唯一答案..(三角形形成一条线)
除非我误解了您的要求,否则从线到 p2 的向量将是您要定义的平面的法线。基本上,你构造一条与线 p0-p1 成直角的线,穿过 p2。