【发布时间】:2012-11-18 05:13:49
【问题描述】:
我正在阅读别人的代码,他将平面表示为法线和偏移,但是 我不确定那个偏移量是多少。我猜是从世界原点到平面中心的距离?
谢谢
【问题讨论】:
标签: game-engine computational-geometry raytracing
我正在阅读别人的代码,他将平面表示为法线和偏移,但是 我不确定那个偏移量是多少。我猜是从世界原点到平面中心的距离?
谢谢
【问题讨论】:
标签: game-engine computational-geometry raytracing
很可能是从世界原点到飞机的“距离”。不是“平面中心”(什么是“平面中心”?),而是平面本身。
我将“距离”这个词放在引号中,因为它可能会证明您的“距离”没有被标准化,即它被乘以某个因子。
你可能知道,3D平面的方程是
A*x + B*y + C*z + D = 0
其中(A, B, C) 是法线向量,D 实际上是从原点到平面的有符号 距离。但是,当且仅当向量 (A, B, C) 被归一化时,D 将表示常规欧几里德距离,即,A、B、C 和 D 的值被缩放,以便 |(A, B, C)| = 1。如果向量没有归一化,那么D就是距离乘以|(A, B, C)|。
有时术语“偏移”用于指代非归一化平面方程中的系数D。换句话说,在您的情况下,平面可能仅由其A、B、C 和D 系数表示。它们是否被规范化 - 你必须检查自己。
【讨论】:
D 将告诉您点O(原点)位于平面的哪一侧。如果它位于法线向量(A, B, C) 指向的同一侧,则D 为正。如果它位于其他大小上,D 是负数。如果O 位于平面上,则D 为零。
P(zp, yp, zp)并计算A*xp+B*yp+C*zp+D,结果会给出从平面到点P的有符号距离(可能不是标准化)。相同的规则适用:如果距离为正,则点 P 位于法线向量 (A, B, C) 指向的同一侧,反之亦然。如果值为零,那么P自然就在平面上。
D 是从O 到平面的最短“距离”。请记住,它已签名。当且仅当您对平面方程进行归一化时,它才是真正的欧几里得距离,即将所有系数除以|(A, B, C)|。