我查看了堆栈溢出以尝试找到解决方案,并发现了一些确实有帮助但仍然不太确定如何解决我的问题的事情,或者我只是错过了一些非常明显的事情!
如果我有 3 个点定义一个三角形,每个点都有一个 XYZ,然后我有一个位于三角形内的点 P,我只有点 P 的 X 和 Y,我该如何找到 Z P 点的值?
我看过三角测量和重心坐标之类的东西,但我不太确定它们是否适合解决方案。
我正在尝试在 C# 中实现这一点,如果需要可以提供更多示例
请提供任何帮助!
你追求的公式是
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))
我认为。
三点不仅可以确定一个三角形,还可以确定一个平面。
首先找到通过这三个点的平面,然后使用平面方程求解 P 的 z 值。
您的 X,Y 与顶点的 X,Y,Z 位于同一空间 -从 3 个点找到平面方程,然后替换给定的 X,Y 并求解 Z。
您知道要查找的点的 3 个值中的 2 个。您可以简单地使用三角形的公式(并将其反转)来找到您的 Z 值(也许使用投影矩阵;)):
http://en.wikipedia.org/wiki/Triangle#Further_formulas_for_general_Euclidean_triangles