1,理论分析
圆柱面的纹理映射,可以仿照球面的纹理映射。
只需要定义圆柱面对应的“映射技术”(即OpenCylinderMap)。
当然,也可以在OpenCylinder::hit()中计算撞击点时,计算出纹理映射相关的u、v值。为什么可以这么做?我们先看一下ImageTexture::get_color()中计算纹理图片中位置(row,column)的两种方式:
所以只需要在OpenCylinder::hit()中计算撞击点时添加如下代码段即可:
这段代码的原理可以参考“问题三十六(4)”:
http://blog.csdn.net/libing_zeng/article/details/54562516
2,测试图形
测试代码:
和球面测试时差不多,只需要做如下修改:
1,将新建“映射技术”对象的代码注视掉:
//