模拟星云

课程要求

参考《代码本色》教程,运用不少于3个章节的动画技术,实现一个交互应用,将动画技术充分运用于交互过程中,最好能充分融入其他课程的知识。

简介

本次作业实现了一个类似星云的粒子系统,通过鼠标和键盘控制可以变换大小与观看视角和动静状态,主要用到技术:粒子系统,力,震荡中的三角函数等。

设计思路

不久前曝光了首张黑洞照片引起热议,由此引发了我对天体的好奇,做了一个简单的尝试,但是由于能力不佳,并没有达成想要呈现出的那种朦胧感,个人更喜欢侧面的图片,更加具有想象空间。

主要技术和代码

整个代码最主要的是对于每个粒子运动的设定,

float theta[] = new float[num];用来设定每个粒子初始运动角度

float mtheta[] = new float[num];将角度转化为数字

float dtheta[] = new float[num];设定初始速度

int rdt[] = new int[num];对运动的半径进行刷新

几种运动形态的设定:

运动和静止:

模拟星云

侧面:

模拟星云 

 鼠标的控制:

模拟星云

模拟星云 

键盘:

模拟星云 

总结 

通过此次作业对于编程对于自然生活现象的模拟有了新的认识,无论是自己做作业的过程中还是看其他同学的作业展示都给了我一种奇妙感,编程不仅仅是一堆字母的排列组合,他所创造出的东西也可以是有生命力的。

展示

模拟星云

模拟星云

模拟星云

模拟星云 

模拟星云 

模拟星云 

参考 

https://blog.****.net/ant_look/article/details/50866807

《代码本色》第二章1.7,1.8,第三章3.3,3.4,第四章