2

我查看了堆栈溢出以尝试找到解决方案,并发现了一些确实有帮助但仍然不太确定如何解决我的问题的事情,或者我只是错过了一些非常明显的事情!

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

我看过三角测量和重心坐标之类的东西,但我不太确定它们是否适合解决方案。

我正在尝试在 C# 中实现这一点,如果需要可以提供更多示例

请提供任何帮助!

4

4 回答 4

3

你追求的公式是

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))

我认为。

于 2012-12-17T15:08:34.487 回答
2

三点不仅可以确定一个三角形,还可以确定一个平面。

首先找到通过这三个点的平面,然后使用平面方程求解 P 的 z 值。

于 2012-12-17T14:53:03.207 回答
0

您的 X,Y 与顶点的 X,Y,Z 位于同一空间 -从 3 个点找到平面方程,然后替换给定的 X,Y 并求解 Z。

于 2012-12-17T14:53:23.980 回答
0

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

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

于 2012-12-17T14:53:49.160 回答