说我有一个三维的三角形,我知道每个点的坐标(x,y,z) - 我怎样才能找到位于这个三角形内的任何点?说我知道我想要的点的x和y,我怎么能找到Z?
编辑:alfasin的答案最接近解决方案 - 我用三点构建平面方程a(x-x0)+ b(y-y0)+ c(z-z0)= 0
其中(a,b,c)是法线向量并插入我的值并为Z求解。感谢大家的帮助。
答案 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
。
此处m
是incline
- 所以对角线方程式
m' = -1/m
由于我们知道P
的值,因此我们可以使用它们来查找n
的值。
现在我们有两个方程,我们可以找到两条线上存在的点。我们称之为P'。
如果P'介于A
和B
之间,则很容易找到。如果是(对于每一对!) - 那么P在三角形内部,否则,它不是。
实施例: