码迷,mamicode.com
首页 > 其他好文 > 详细

由高度场求法线

时间:2017-08-09 23:56:35      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:com   alt   没有   技术   二维   两种   ges   可见   image   

设高度场由函数z=h(x,y)给出,则问题就是求此曲面的法线。

注:文中d代表偏导数。

方法一:

把z=h(x,y)看成山坡,则在点P(x,y)处,其爬坡方向由二维梯度给出

gradh=(dh/dx,dh/dy,0)。

(gradh在XY平面内,由低海拔指向高海拔)。

根据“梯度的模等于方向导数”有:

|gradh|=tan(theta),theta为坡度角。

因为|gradh|=tan(theta),所以若设up=(0,0,1)(即让up的模为1),则恰有-gradh+up=normal。如图:

技术分享

于是就有normal=-gradh+up=-(dh/dx,dh/dy,0)+(0,0,1)=(-dh/dx,-dh/dy,1)。

 

方法二:

构造三维标量场F(x,y,z)=h(x,y)-z。

则z=h(x,y)为F的0等值面。

F在点(x,y,z)处梯度为gradF=(dF/dx,dF/dy,dF/dz)=(dh/dx,dh/dy,-1)。

由于梯度必定垂直于等值面。

所以z=h(x,y)在点(x,y,z)处的法向量normal=gradF=(dh/dx,dh/dy,-1)。

 

注:

1,可见两种方法得出的结果是一致的。

2,是取(-dh/dx,-dh/dy,1)还是取(dh/dx,dh/dy,-1)根据需求而定,如本文由高度场求法线这种用于图形学用途,显然是会取(-dh/dx,-dh/dy,1),

3,以上两种方法都没有对结果进行归一化,在实际用于图形学时应进行归一化。

 

由高度场求法线

标签:com   alt   没有   技术   二维   两种   ges   可见   image   

原文地址:http://www.cnblogs.com/wantnon/p/7329142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!