标题中的“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.csdn.net/detail/libing_zeng/9794115

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

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

  1. Q96:PT(1.2.3):圆柱2D方格纹理(Cylinder 2D Checker)

    标题中的"PT"表示:Procedural Texture(过程纹理).表示该章节属于"过程纹理"的内容. 当前章节在"过程纹理"内容中的位 ...

  2. Q96:PT(1):方格纹理(Checker)(2)——2D Checker

    标题中的"PT"表示:Procedural Texture(过程纹理).表示该章节属于"过程纹理"的内容. 当前章节在"过程纹理"内容中的位 ...

  3. Q96:PT(1):方格纹理(Checker)(1)——3D Checker

    标题中的"PT"表示:Procedural Texture(过程纹理).表示该章节属于"过程纹理"的内容. 当前章节在"过程纹理"内容中的位 ...

  4. Q96:PT(3.5):木纹纹理(Wood Texture)

    标题中的"PT"表示:Procedural Texture(过程纹理).表示该章节属于"过程纹理"的内容. 当前章节在"过程纹理"内容中的位 ...

  5. Q96:PT(3.4):砂岩纹理(Sandstone Texture)

    标题中的"PT"表示:Procedural Texture(过程纹理).表示该章节属于"过程纹理"的内容. 当前章节在"过程纹理"内容中的位 ...

  6. Q96:PT(3.3):大理石纹理(Marble Texture)

    标题中的"PT"表示:Procedural Texture(过程纹理).表示该章节属于"过程纹理"的内容. 当前章节在"过程纹理"内容中的位 ...

  7. 二维纹理 Texture 2D

    二维纹理 Texture 2D 原文链接http://www.ceeger.com/Manual/Textures.html Textures bring your Meshes, Particles ...

  8. HazelEngine 学习记录 - 2D Renderer Transforms and 2D Renderer Textures

    2D Renderer Transforms and 2D Renderer Textures 在2D renderer 中,我们渲染的图元基本上全是矩形,加载纹理时,也是将对应的纹理贴到一个矩形内, ...

  9. 球面图绘制函数-sphere

    球面图绘制由函数sphere来实现 [X,Y,Z]=sphere(N) 此函数生成3个(N+1)*(N+1)的矩阵,利用函数        surf(X,Y,Z) 可产生单位球面. [X,Y,Z]=s ...

最新文章

  1. nginx php-fpm display_errors,php5-fpm的display_errors不能使用nginx
  2. MFC多线程同步互斥
  3. 冒险者传说pc6java_冒险者传说
  4. 给写新疆开放互联网一周纪念
  5. Java监听器完整入门实例
  6. 农产品加工进销存单_农产品进销存ERP—物资的内部腾挪转换也是交易的一种形式...
  7. 【英语学习】【English L06】U03 House L2 Let's look for an apartment online
  8. vue 查询框赋值后不可编辑_vue input 赋值无效
  9. motion的移植和使用
  10. 2018-12-20 第二章Java 预习作业
  11. 什么是透明、匿名、高匿代理?详解!
  12. H5基础阶段二(表格、表单)
  13. python-docx页眉横线
  14. 在自己本地原有的镜像基础上用dockerfile加一下库进去
  15. 分享 编写子程序代码(把伪代码转换为真正的代码)
  16. 电脑出现0xv0000225无法开机的两种解决方法
  17. 高通安卓关闭WiFi服务不卸载驱动
  18. mysql point 经纬度_lbs - Mysql POINT类型数据,怎么计算经纬度偏差
  19. win10家庭版加密oracle修正,WIN10更新后解决credssp加密oracle修正问题
  20. 聊聊Redis的数据热点问题

热门文章

  1. Redis--发布订阅
  2. 父元素没有高度,子元素高度失效
  3. spring+hibernate:在applicationCOntext.XML中配置C3P0参数说明
  4. Mac系统下设置Maven环境
  5. 快速排序—三路快排 vs 双基准
  6. 关于 TApplication 详解 六 ---- TColorDialog
  7. GoogLeNetV1,V2,V3
  8. Ubuntu安装anaconda,tensorflow,keras,pytorch
  9. 程序员面试金典——9.1上楼梯
  10. 海思uboot启动流程详细分析(二)