Archive for the ‘OpenGL’ Category

这篇文章来源于Standford Univ.的CS148课程的第一周Assignment,作业内容是要求用基本的OpenGL的图元绘制知识来创作一些有趣的图形。 一、Knoch Snowflake介绍 我选择的是绘制鼎鼎有名的Koch Snowflake,它是最早有描述的分形图像之一,因为形状类似雪花且每一边都是基于Koch Curve而得名。从本质上来说,Koch Curve的构建可以用优美的递归形式来描述: 一条线段平均分成三段, 基于中间那条线段的位置绘制一个等边三角形,并且指向线段的外侧, 移除该条线段 而Koch Curve正是通过有限次地不断重复以上三步所得到的曲线,下图展示了递归0-4次时的曲线: Iteration 0:   Iteration 1:   Iteration 2:   Iteration 3:   Iteration 4: …… 二、绘制Koch Snowflake 那么应该如何利用OpenGL的基本图元(Primitives)来绘制呢?一开始的时候我设想的是根据预期的迭代次数,找到一个通用公式,从而计算出对应的顶点坐标,然后再用GL_LINE将它们连接起来即可,但是找到这么一个公式比较困难。突然我想到了小时候玩的logo语言,利用代码控制屏幕中小乌龟的位移,它走过的地方就画出一条线,基于Koch曲线如此优美的递归定义,用这种一笔画的方式来绘制,就会非常方便。为了采用这种方法,我们需要定义下列两个绘制函数: draw_line用于从当前位置绘制一条长度为length的线段 turn将改变当前画笔的方向angle_in_degrees个角度,根据图形学的惯例,逆时针(counterclockwise)方向为正 这两个方法的实现将会在下文简述 C++语言: 绘制函数 // drawing functions void draw_line(double length); void turn(int angle_in_degrees); 有了绘制函数和Koch曲线的递归定义,要画出它来就非常简单了: C++语言: 绘制Koch Snowflake void koch_curve(unsigned order, double length) { [...]


About this blog

I'm now a graduate student of Computer Applied Technology in Tongji University. I like Computer Graphics, Web 2.0, Magic, Music and am partially a geek. This blog is about C++, algorithm, cg, comments and other things I may get in touch with in the near future. Hope everyone enjoy this little site. Contact me: 4everlove.xu AT gmail.com

Photostream

日历

2012 年五月
« 二    
 12345
6789101112
13141516171819
20212223242526
2728293031  

TwitterWidget

20 分钟 ago
@pipitu @r475 @Hanliinter 为了你将来的GRE,记住glisten这个单词吧=-=
view tweet
21 分钟 ago
@Hanliinter @r475 有一班直达的公交……
view tweet
59 分钟 ago
@r475 @Hanliinter 考虑到日常和妹子的现充时间,可以省下很多成本(ry 其实我那边也不算中山公园了,好像在中介上面已经归到娄山关路或者古北去了……
view tweet
2 小时 ago
@Hanliinter 不过像我这样工作在徐汇,想要住在中山公园的,估计现在大部分公租房的条件就满足不了
view tweet
2 小时 ago
@Hanliinter 国内的公租房规模还太小啊~
view tweet
4 小时 ago
@ispinel 嗯……或者刷一刷等级的时候,现在看来只要保持在中烧以上应该就安全一点了@@
view tweet
5 小时 ago
@ispinel 赞!虽然似乎没有达到它标称的速度,不过比毛细宽带上传管要好太多了~
view tweet
20 小时 ago
husband居然有勤俭持家的意思,想来挺233的
view tweet
22 小时 ago
招行毕业转卡才给了8k的额度,果然有点小气啊……还是看不起咱这低收入人士?
view tweet
22 小时 ago
Lily Kershaw - As It Seems (From Criminal Minds S07 finale)。话说CM这一季后面几集又在平淡上激起了几许涟漪,可惜E姐就走了TAT
view tweet
Follow me!

FeedBurner RSS