问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(3)——椭球抛物面

35.3 椭球抛物面

35.3.1 数学推导

椭球抛物面的方程如下:




所以,其一:我们需要对两个实根进行排序(先处理小的)

 

另外,由于,是开放曲面,也就是,光线有可能撞击到曲面的正反两面,所以,对于撞击点处的标准化之后的法向量,我们需要做如下判断:

                        if (dot(rec.normal,r.direction()) > 0) {

                            rec.normal =-rec.normal;

                        }//(法向量决定着反射光线和折射光线)

 

还有,由于我们引入了height_y参数来限制曲面的高度,但是,我们要注意到:小实根对应的交点超出高度范围时(之前的一贯做法:小根不在t_mint_max范围,就直接return false),大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值