2

给定:3D 空间中的 3 个三角形顶点,该三角形上一个点的 x,y 坐标(包括三角形区域)。

Wanted:给定点的 z 坐标。

所有 3 个三角形顶点都有不同的 (x,y) 坐标(它们是高度图坐标),因此不需要处理多个(无限)匹配的情况。

我正在尝试在 C 中执行此操作,这意味着对简单数字类型(例如浮点数)进行操作的算法将是最好的(没有矩阵或向量操作)。

4

1 回答 1

3

这通常使用向量/矩阵来完成,它们只是底层操作的较短符号。

  • 从三个顶点中选择一个参考点 O = (ox, oy) = Point1
  • 制作两个向量 U=(ux,uy) = point2 - O; V=(vx,vy) = 点 3 - O

  • 求解 u 和 v 的线性系统 x,y = u*U + v*V

    x = u * (p2x-ox) + v * (p3x-ox)
    y = u * (p2y-oy) + v * (p3y-oy)

检查 0 <= u,v <= 1 和 0<=u+v<=1
如果是,则点 x,y 在三角形内且
z = u*(p2z-oz)+v*(p3z-盎司)

于 2012-10-26T11:58:07.153 回答