计算机图形学:任意点相对于任意平面的反射矩阵

转载请注明出处http://hi.baidu.com/wsliulao5/blog/item/bca731dde0a26cdc8d10291f.html,谢谢。

问题:已知空间中任意平面n*(x-x0,y-y0,z-z0)=0和空间中任意点V,其中n为该平面的法向量,x0,y0,z0为该平面上的一点。

求:该点相对于该平面的镜像点v'和V到V'的转换矩阵,如下图所示:

该平面方程也可以表示为n*p+d=0,其中p=(x,y,z),d= -n*(x0,y0,z0)。假设点V到平面的距离是k,且点V位于平面的正半空间,则由向量知识及上图,我们可知v=v'+2k*n/|n|,于是,v'=v-2k*n/|n|。

下面我们来求点V到平面的距离k:

点V和平面上的点(x0,y0,z0)所形成的向量在平面的法向量上的投影就是k,于是k=n*(Vx-x0,Vy-y0,Vz-z0)=n*V+d

于是v'=v-2(n*v + d)*n/|n|

即(x',y‘,z',1)=(x,y,z,1)- 2n*V*n/|n| - 2d*n/|n|

整理得

x' = x - 2(nx*Vx + ny*Vy + nz*Vz)*nx/|n| - 2d*nx/|n|

y' = y - 2(nx*Vx + ny*Vy + nz*Vz)*ny/|n| - 2d*ny/|n|

x' = z - 2(nx*Vx + ny*Vy + nz*Vz)*nz/|n| - 2d*nz/|n|

其中nx,ny,nz为向量n的各个分量,Vx,Vy,Vz为向量V的各个分量。

于是得转换矩阵为:

| -2nx*nx/|n| + 1       -2ny*nx/|n|           -2nz*nx/|n|           0 |

| -2nx*ny/|n|             -2ny*ny/|n| + 1     -2nz*ny/|n|          0 |

| -2nx*nz/|n|             -2ny*nz/|n|            -2nz*nz/|n| + 1    0 |

| -2nx*d/|n|               -2ny*d/|n|              -2nz*d/|n|            1 |

如果n为单位向量,则上式可以简化为

x' = x - 2(nx*Vx + ny*Vy + nz*Vz)*nx - 2d*nx

y' = y - 2(nx*Vx + ny*Vy + nz*Vz)*ny - 2d*ny

x' = z - 2(nx*Vx + ny*Vy + nz*Vz)*nz - 2d*nz

于是转换矩阵可以简化为:

| -2nx*nx + 1       -2ny*nx           -2nz*nx           0 |

| -2nx*ny             -2ny*ny + 1     -2nz*ny          0 |

| -2nx*nz            -2ny*nz            -2nz*nz + 1     0 |

| -2nx*d              -2ny*d              -2nz*d            1 |

如点V位于平面的负半空间,假设此时平面的法向量为n',n'相对于原点对称的向量为n,则-n'=n,于是我们有v'=V + 2kn'/|n'| = V - 2kn/|n|,根据以上可知结论不变。

如点V位于平面上,则k=n*V+d=0,于是V'=V,故结论不变(以上矩阵由v'=v-2(n*v + d)*n/|n|得出,故x' = x - 2(nx*Vx + ny*Vy + nz*Vz)*nx - 2d*nx=x,于是结论矩阵任然正确)。

D3D中有一个函数用于创建反射矩阵:

D3DXMATRIX *D3DXMxtrixReflect( D3DXMATRIX *pOut, CONST D3DXPLANE *pPlane );

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值