查找三角形中某点的Z值

时间:2012-12-17 14:50:25

标签: c# math

我已经查看了堆栈溢出以尝试找到解决方案,并找到了一些确实有所帮助,但仍然不太确定如何继续我的问题,或者我只是遗漏了一些非常明显的东西!

如果我有3个点定义一个三角形,这些点中的每一个都有一个XYZ,然后我有一个位于三角形内的点P,我只有点P的X和Y,我该如何去做找到点P的Z值

我看过三角测量和重心坐标等问题,但我不太确定它们是否适合解决方案。

我正在尝试在C#中实现它,并且如果需要可以提供更多示例

任何帮助都会很棒!

4 个答案:

答案 0 :(得分:2)

你所追求的公式是

z = (z3(x-x1)(y-y2) + z1(x-x2)(y-y3) + z2(x-x3)(y-y1) - z2(x-x1)(y-y3) - z3(x-x2)(y-y1) - z1(x-x3)(y-y2))
  / (  (x-x1)(y-y2) +   (x-x2)(y-y3) +   (x-x3)(y-y1) -   (x-x1)(y-y3) -   (x-x2)(y-y1) -   (x-x3)(y-y2))

我想。

答案 1 :(得分:1)

三个点不仅决定一个三角形,还决定一个平面。

首先find the plane that passes through the three points,然后使用平面方程求解P的z值。

答案 2 :(得分:0)

在你的X中,Y与顶点的X,Y,Z位于同一空间 - {3}}来自3个点,然后用给定的X,Y替换并求解Z.

答案 3 :(得分:0)

您知道要查找的点的3个值中的2个。您可以简单地使用三角形的公式(并反转它)来找到您的Z值(可能使用投影矩阵;)):

http://en.wikipedia.org/wiki/Triangle#Further_formulas_for_general_Euclidean_triangles