知道这三点后如何找到三角形内的任何一点?

时间:2013-09-17 23:02:20

标签: 3d geometry coordinates

说我有一个三维的三角形,我知道每个点的坐标(x,y,z) - 我怎样才能找到位于这个三角形内的任何点?说我知道我想要的点的x和y,我怎么能找到Z?

编辑:alfasin的答案最接近解决方案 - 我用三点构建平面方程

a(x-x0)+ b(y-y0)+ c(z-z0)= 0

其中(a,b,c)是法线向量并插入我的值并为Z求解。感谢大家的帮助。

2 个答案:

答案 0 :(得分:0)

如果你的三角形由三个点T1,T2,T3和你想要找到的点组成P,你可以在线之间做一个交叉乘积:

(T1,T2)x(T1,P)= R1

(T2,T3)×(T2,P)= R2

(T3,T1)×(T3,P)= R3

如果结果线R1,R2,R3是平行的,那么我会假设该点在三角形内。有人可以验证/反驳这个吗?

[编辑]:这是一个查找行是否平行的资源:https://math.stackexchange.com/questions/194242/decide-whether-two-lines-are-parallel

但问题的第二部分意味着你试图让一个点适合三角形?它是否正确?请原谅缺乏评论 - 我目前没有SO信誉。

答案 1 :(得分:0)

通过将3点应用于以下内容,您可以找到表示曲面的方程式:

ax+by+cz+d = 0 

找到a,b和c之后你就有了表面 - 所以首先要检查点P是否在表面上。如果是,我们仍然需要检查它是否在三角形上。

为此,我们将创建一条对角线,通过P,到每一条边,或者更确切地说,是“包括”边缘的线性方程式(请原谅我可怜的英语 - 我学会了用我的母语这个东西所以请耐心等待。

这可以通过每对点(来自三角形)来完成,比如A=(x1,y1,z1)B=(x2,y2,z2)并将它们分配给第一个等式。我们将得到一个线性方程:

y = mx + n

此处mincline - 所以对角线方程式

m' = -1/m

由于我们知道P的值,因此我们可以使用它们来查找n的值。 现在我们有两个方程,我们可以找到两条线上存在的点。我们称之为P'。

如果P'介于AB之间,则很容易找到。如果是(对于每一对!) - 那么P在三角形内部,否则,它不是。

实施例: enter image description here