OpenGL 画荷花
来源:互联网 发布:淘宝买家地域分析 编辑:程序博客网 时间:2024/04/29 14:53
本文参考 基于OpenGL的荷花开放过程模拟_刘金定 (这是百度文库的链接,读者可自己搜索)
我们在这里会实现简单的OpenGL画莲花过程,并实现简单的莲花绽放过程,对学习OpenGL和3D数学有着极大的帮助.
demo下载
一 画荷花花瓣
荷花是由一片一片的花瓣组成的,我们这里首先绘制一片花瓣,这里类似于3ds max 做出来的模型.
我们先来补习一下数学方面的知识,引自OpenGL绘制球体
球面参数方程
球面的参数曲线可以用球坐标表示,引入参数u,v,其中v是球面点与原点的连线与z轴正向的夹角,u表示连线在xy平面的投影与x轴正向的夹角,如下图所示:
则球面参数方程可以表示为:
球面法向量
已知球面的参数方程以后,很容易求得给定点的法向量,分别对u和v方向求偏导数,然后对两个所得向量进行叉积即可:
for(float i=0;i<8;i++){glBegin(GL_QUAD_STRIP);for(float j=0;j<16;j++){glColor3f(sinf(3.1416f/2.0f-3.1416f/36.0f*j)+(sinf(3.1416f/144.0f*i)),0.0f,cosf(3.1416f/2.0f-3.1416f/12.0f*j));//颜色glVertex3f(sinf(PI*j)*cosf(PI*i),cosf(PI*j),sinf(PI*j)*sinf(PI*i));//顶点glColor3f(sinf(3.1416f/2.0f-3.1416f/36.0f*j)+(sinf(3.1416f/144.0f*i)),0.0f,cosf(3.1416f/2.0f-3.1416f/12.0f*j));//颜色glVertex3f(sinf(PI*j)*cosf(PI*(i+1)),cosf(PI*j),sinf(PI*j)*sinf(PI*(i+1)));//顶点}glEnd();}
这是表示花瓣是由8*16的小的变形的方格组成.
我们再对这个花瓣进行环绕循环.形成八瓣的花朵.接着再在里面画上一朵小花,用glScalef(0.6,0.7,0.6)来对里面花瓣进行缩小.
这里还没有开放的花朵,定义了一个OnTimer函数,点击 菜单开始 实现花朵的自动开放.
demo下载地址
2 0
- OpenGL 画荷花
- 荷花
- 荷花
- 夏日荷花
- 又遇荷花
- 冬日里的荷花
- 荷花盛开的日子
- 早上,荷花开了
- unity 自制小荷花
- 荷花的养殖
- [JZOJ 4855]荷花池塘
- 如何拍好荷花 一
- 如何拍好荷花 二
- 映日荷花别样红
- 荷花-处女作-少一个叶
- 【jzoj4855】【荷花池塘】【最短路】
- 用Illustrator制作荷花的矢量图
- css3+jq 编写的含苞待放的荷花
- MSsql 增删改某个表时,用触发器调用DLL通知外部窗体程序
- Android虚拟机,控制台Console报错几例及解决办法
- cmd不是内部或外部命令
- 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)
- android最清楚,也是最不清楚的weigth属性
- OpenGL 画荷花
- qt creator 中解决不能中文输入的问题
- Linux文件读写
- 正则化方法:L1和L2 regularization、数据集扩增、dropout
- Java正则表达式教程
- 为什么你投十份简历,只有一两家公司约你?又或者为什么你每投一份简历都能获得面试机会?
- 正在连接127.0.0.1..无法打开到主机的连接. 在端口 1433: 连接失败 解决方法
- 研究首屏时间?你先要知道这几点细节
- Java关于排序的介绍2-归并排序