从高度图计算法线

16
我正在尝试使用中心差分将高度图转换为法线矩阵,以后将对应于给定点的陡峭程度。我找到了几个正确结果的链接,但没有解释背后的数学原理。
  T
L O R
  B

这个链接中,我意识到我可以这样做:

Vec3 normal = Vec3(2*(R-L), 2*(B-T), -4).Normalize();

事实上,我不知道2*-4来自何处。
这篇关于中央差分的解释中,我看到我们应该将该值除以2,但我仍然不知道如何将所有这些连接起来。
我真正想知道的是这背后的线性代数定义。我有一个高度图,我想测量中央差异,并且我想获得法向量,以便稍后用于测量陡峭程度。
PS:Z轴是高度。
1个回答

18

从向量微积分中,表面的法线由 梯度算子 给出:

图片描述

高度图 h(x, y) 是函数 f 的一种特殊形式:

图片描述

对于离散化的高度图,假设网格大小为 1,上述两个导数项的一阶近似值为:

图片描述

由于从 LRx 步长为 2,y 步长相同。上述公式恰好是您所得到的公式,除以 4。当将此向量归一化时,4 的因素被消除。

(本答案的撰写并未伤及任何线性代数)


让我们在聊天中继续这个讨论 - Sammi3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接