原创内容,转载请注明EOE论坛。 声明:因为本人的学习都是居于杨丰盛老师的《Android应用开发揭秘》一书,因此,本内容教程代码和大部分的内容都来自公布在网络上的杨老师的代码。C/C++部分可以看NeHe的OpenGL教程:http://yarin.blog.51cto.com/1130898/380974
效果图片
1 . 局部顶点:我们将这张图片由X、Y轴平均分割成44份,也就是有45个分割点,这些构成小方格的点就是局部顶点了。
2. 局部纹理:因为顶点是局部的,也就是说,要对局部顶点构成的每一个小方格进行纹理(贴图)。纹理的单位也整数“1”,所以,每个小方格就表示纹理的1/44部分了。
3. 三角函数:因为三角函数“正弦”或者“余弦”在坐标轴上是波动的,那么我们将图片平躺在以X、Y轴的平面上,Z轴作为表示“正弦”或者“余弦”的波动轴。那么就会有我们看到的波动的效果了。
上主要代码:
--> 分析下代码的主要部分:
上面的两个循环初始化网格上的点。使用整数循环可以消除由于浮点运算取整造成的脉冲锯齿的出现。我们将x和y变量都除以5,再减去4.5。这样使得我们的波浪可以“居中”(译者:这样计算所得结果将落在区间[-4.5,4.5]之间)。(NeHe文章翻译)
点[x][y][2]最后的值就是一个sine函数计算的结果。Sin()函数需要一个弧度参变量。将float_x乘以40.0f,得到角度值。然后除以360.0f再乘以PI,乘以2,就转换为弧度了。(NeHe文章翻译)
我们每次要将当前的小方格的局部坐标保存起来,在下一次将该坐标传递给下一个小方格---物理学上,粒子波动的效果。比如跳绳。
如果疑问,我会在补充内容。
效果图: