【问题标题】:A plane represented as normal and offset?表示为法线和偏移的平面?
【发布时间】:2012-11-18 05:13:49
【问题描述】:

我正在阅读别人的代码,他将平面表示为法线和偏移,但是 我不确定那个偏移量是多少。我猜是从世界原点到平面中心的距离?

谢谢

【问题讨论】:

    标签: game-engine computational-geometry raytracing


    【解决方案1】:

    很可能是从世界原点到飞机的“距离”。不是“平面中心”(什么是“平面中心”?),而是平面本身。

    我将“距离”这个词放在引号中,因为它可能会证明您的“距离”没有被标准化,即它被乘以某个因子。

    你可能知道,3D平面的方程是

    A*x + B*y + C*z + D = 0
    

    其中(A, B, C) 是法线向量,D 实际上是从原点到平面的有符号 距离。但是,当且仅当向量 (A, B, C) 被归一化时,D 将表示常规欧几里德距离,即,ABCD 的值被缩放,以便 |(A, B, C)| = 1。如果向量没有归一化,那么D就是距离乘以|(A, B, C)|

    有时术语“偏移”用于指代非归一化平面方程中的系数D。换句话说,在您的情况下,平面可能仅由其ABCD 系数表示。它们是否被规范化 - 你必须检查自己。

    【讨论】:

    • @user1796942:没错。系数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自然就在平面上。
    • 那么这个距离是世界原点到平面上最近点的距离吗?
    • @user1796942:没错。系数D 是从O 到平面的最短“距离”。请记住,它已签名。当且仅当您对平面方程进行归一化时,它才是真正的欧几里得距离,即将所有系数除以|(A, B, C)|
    • 我对平面的这种表示没有经验,你有一些代码链接可以找到射线平面交点,平面是这样表示的吗?
    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 2013-04-15
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多