博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求反射向量
阅读量:6943 次
发布时间:2019-06-27

本文共 479 字,大约阅读时间需要 1 分钟。

在图形学中,计算光照模型时,经常需要求取反射向量,一般的shader函数库都提供计算反射向量的方法,下面介绍一下如何手动计算反射向量。

给定入射光线向量I和平面法向量N,求反射向量R,如下图。为了方便计算,这里假定I和N都是单位向量(模为1,编程时可先将I和N单位化)

方法一

设入射光线向量I和反射平面的法向量N之间的夹角为theta。连接I的始端和R的末端,则有

R = 2P - I              (1)

现在问题变成了如何求取P,设入射点0到P与N的交点的向量为S,那么有

P = I + S               (2)

现在问题变成了如何求取向量S,向量S即向量-N(注意,这里是-N,因为S和N的方向相反。)在向量N上的投影,根据公式有

因为N是单位向量,简化一下得到

将S代入公式(2),再将P代入公式(1)得到

方法二

将R平移一下,与向量N的延长线相交。

由于入射角和反射角相等,且I和R的长度也相等,所以三角形ION是等腰三角形。故有

ON = 2S

所以有

R = I + 2S

而S是-I在N上的投影,所以有

由于N是单位向量,简化一下得到

所以

貌似方法二更直观些。

转载地址:http://pennl.baihongyu.com/

你可能感兴趣的文章
纳德拉:云计算是重要增长点18年目标200亿
查看>>
聚焦“微服务与容器云” 2017CIO时代线下CIO沙龙顺利举行
查看>>
入行数据科学,仅需6步
查看>>
Linux虚拟化技术KVM、QEMU与libvirt的关系(转)
查看>>
特斯联科技携手比特大陆共建国内首家物联网区块链实验室
查看>>
微服务架构
查看>>
数字化转型 Make it REAL
查看>>
Spring实现封装自定义注解@Trimmed清除字符串前后的空格
查看>>
CentOS 7安装过程
查看>>
Fiori里花瓣的动画效果实现原理
查看>>
HDU 小兔的棋盘
查看>>
首个人工智能专业委员会成立,产业发展再添动力
查看>>
jQuery UI 拖动(Draggable) - Handles和Cancel
查看>>
Oracle 存储过程发送邮件
查看>>
程序员必须知道的数据库增删改查
查看>>
Git常用命令
查看>>
oracle12c之 单机12.1.0.1打补丁
查看>>
[转]nodejs npm常用命令
查看>>
ibatis-调用存储过程
查看>>
Linux网络协议栈(三)——网络设备(1)
查看>>