【问题标题】:How to find y at given point (x,z) on 3D triangle?如何在 3D 三角形上的给定点 (x,z) 找到 y?
【发布时间】:2015-02-17 10:13:45
【问题描述】:

在 y 为上/下、z 为前/后、x 为左/右的坐标系中(如在 Unity3D 中)。


(这是我的意思的糟糕图)

是的
|
|____x
\
z

(我猜z会进出你的显示器)


给定坐标 (x,z) 保证在这个三角形上,我如何得到 y?假设您知道所有三个三角形点的 (x,y,z) 坐标,以及人脸的法线。三角形可以在任何轴上倾斜。

【问题讨论】:

    标签: c# unity3d geometry


    【解决方案1】:

    好吧,给定三角形内的任何向量v 和正常的n,我们知道nv 的点积等于0(三角形上的所有点都为真)。所以:

    nx * vx + ny * vy + nz * vz = 0

    解决vy 的小代数,我们有:

    vy = -((nz * vz) + (nx * vx)) / ny

    但有一件事。 v 必须在三角形平面内,因此您需要将该向量放在三角形平面内,方法是从 v 中减去一个顶点(例如 t1)。

    所以:

    vx = t1x - x, vz = t1z - z, and vy = t1y - y

    因此,您的最终 y 坐标为:y = t1y - vy 其中vy 已在上面定义。

    【讨论】:

    • 你能定义三角形内的向量是什么意思吗?那是(x,z)坐标,(x,y,z)坐标还是方向上的向量?我了解基本概念,但我的数学术语不是最新的。你在 t1 部分失去了我。为什么我要从 v 中减去一个顶点?你能像我是个大孩子一样给我解释一下吗?
    • t1 是三角形三个顶点中的 任何v 必须是与法线正交的向量,以便点积为零。您已经拥有t1xz,以及您的普通:n。将您的值代入上述等式将得到您想要的y
    • t1 中减去{x, y, z} 确保得到的向量v 与您的法线正交。
    猜你喜欢
    • 2011-07-27
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多