首页 > 分享 > OpenGL 画荷花

OpenGL 画荷花

xiaogeformax 于 2016-03-06 21:46:34 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文参考 基于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下载地址

相关知识

郁金香怎么画?洋荷花有什么上色技巧?
初学写意荷花,这样画花头与荷叶!
夏日风情、一朵花一幅画,荷花随风四处飞扬,花瓣雨落下,只剩下一梦繁华
荷花文化背景
荷花的7种象征意义 进门见荷花图好不好
=写意+工笔荷花的画法
写意荷花创作图例示范
手画请柬的花束,花叶,毛笔。牡丹,玫瑰,百合,荷花,棉花元素。花卉向量集合。装饰构图,插图贺卡,婚礼请柬图片
荷花的结构及步骤画法
借用荷花别名 芙蓉流芳百世

网址: OpenGL 画荷花 https://m.huajiangbk.com/newsview490341.html

所属分类:花卉
上一篇: 剪贴画~瓶花
下一篇: 泰拉瑞亚魔力花怎么做有什么用 魔