Q96:PT(1.2.2):球面2D方格纹理(Sphere 2D Checker)

本文详细介绍过程纹理中的方格纹理算法,包括平面与球面上的2D方格纹理生成原理及C++实现方式,并通过测试图形验证算法效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题中的“PT”表示:Procedural Texture(过程纹理)。表示该章节属于“过程纹理”的内容。
当前章节在“过程纹理”内容中的位置:
过程纹理(0)——概述
过程纹理(1)——方格纹理(1)——3D方格纹理
过程纹理(1)——方格纹理(2)——2D方格纹理(1)——平面2D方格纹理
过程纹理(1)——方格纹理(2)——2D方格纹理(2)——球面2D方格纹理

1,理论分析

平面2D方格纹理算法如下:
第一步:x、z坐标分别除以方格边长;然后,分别求取floor();然后,将两个结果相加;然后,将相加的结果对2取余。
第二步:确定撞击点是在方格的内部还是在条纹上。

对于球面2D方格纹理,和平面2D方格纹理算法差不多。只不过是将x、z坐标换成了球面参数方程的参数theta、phi。当然,“方格”的“边长”也就分别对应theta、phi两个角度的“弧度片段”。

定义几个参数:
这里写图片描述

算法后续部分则和平面2D方格纹理是一样的了。
这里写图片描述

这里写图片描述

2,C++代码实现

球面2D方格纹理对应的类为SphereChecker,基本和PlaneChecker相似,如下是两者主要差异代码的截图:

这里写图片描述

这里写图片描述这里写图片描述

3,测试图形

3.1 测试代码

截图如下:
这里写图片描述

3.2 输出图形

这里写图片描述

将条纹宽度值设为0时,图形是这样:
这里写图片描述

4,其他说明

完整代码下载路径
http://download.youkuaiyun.com/detail/libing_zeng/9794115

Referrance
[1]. Kevin Suffern, Ray Tracing from theGround Up, A K PetersLtd, 2007.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值