Posts Tagged ‘CS148

这篇文章来源于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 年二月
« 二    
 1234
567891011
12131415161718
19202122232425
26272829  

TwitterWidget

21 小时 ago
@GClover1985 @Hanliinter 没错……他刚刚出现在群里面打了几个点
view tweet
21 小时 ago
刚刚在群里不小心枪了一下 @Hanliinter 大大,还好他没在……
view tweet
at 02/22/2012
3月9号毕业答辩,看来上班时间要往后拖拖了。。
view tweet
at 02/22/2012
@r475 我们据说答辩时间安排也出来了,稍晚些时候会邮件通知。目前最怕的还是抽盲审啊!其实像你们这样必盲的倒也省去许多烦恼了=-=
view tweet
at 02/22/2012
@rebecca_kidult 是电压力锅还是传统的那种用煤气灶烧的高压锅呀?
view tweet
at 02/20/2012
@SafenZhai 谢谢!我还是先好好上班和准备GRE吧><祝再拿到更多的offer呀~~
view tweet
at 02/20/2012
@SafenZhai 嗯。。现在就是研究生、接下来一年的工作和将来想要申请的是三个不同的领域……所以发愁这个-0-不知道工作经验可不可以弥补一下
view tweet
at 02/20/2012
@SafenZhai 申请经验~我也有申请2013 Fall PhD的打算:)
view tweet
at 02/20/2012
@SafenZhai cong!求经验传授
view tweet
at 02/20/2012
@goldengrape 其他设备都好说,像iphone这样在中国可能因为硬件不同而无法得到保修(似乎是连维修都不行)
view tweet
Follow me!

FeedBurner RSS