我在3D空间中有一个由3个顶点p0,p1和p2定义的三角形。
我希望在这个3D空间中计算一个平面,该平面位于p0和p1两侧并面向第三个点p2。
该平面由位置和标准化方向/
定义除了沿p0和p1放置并面向p2之外,平面还应垂直于由p0,p1和p2创建的平面
我已经挣扎了很长一段时间,任何人都能提供的任何帮助都非常感谢。
答案 0 :(得分: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,否则没有唯一的答案..(三角形形成一条线)
答案 1 :(得分:1)
除非我误解你的要求,否则从线到p2的向量将是你想要定义的平面的法线。基本上,您构造一条与p0-p1直线成直角的直线,通过p2。