当大家看完这篇文章时,可以了解 processing中Pvector,ArrayList对象,constrain函数以及final关键字的基本使用。

 

如果对这三个东西都很了解的同学可以直接跳过这部分。如果看完这部分还是不太能理解这些的同学不用着急,这些后面我们都会在之后的代码实现部分使用。

 

Pvector是一个描述二维或者三维向量的类,在processing作品中被广泛用于描述物体position(位置),velocity(速度),acceleration(加速度),是模拟物体运动的效果的一把利器。下面是一些基本的用法。

 

了解更多https://processing.org/reference/PVector.html

 

 

 

ArrayList用一个来存储可变数量对象的容器。和一个普通数组很像,但是其具有方便增加和删除元素,以及动态的改变数组的大小的特点,这些使得PVector在processing作品中被广泛用于存储粒子系统。(了解更多:https://processing.org/reference/ArrayList.html)

 

下面是一些基本的用法:

 

 

Constrain函数的作用是限制一个值不超过最大值和最小值,可以用于防止物体越界。(了解更多:https://processing.org/reference/constrain_.html)

 

下面是基本的用法:

 

首先通过观看视频,我们可以发现在鼠标所在的点附近的星星是最小的,离该点越远,星星的面积越大,移动的速度越快。就好像星星都从这个点里出来一样,我们暂且把这个点叫做消失点。并且观察可得,消失点把屏幕分成了四个区域A,B,C,D(如图一所示),同时把星星也分成了四类。其中A中的星星向左上方移动,B中点向右上方移动,C中的点向左下方移动,D中的点向右下方移动。

 

 

 

 

第四步我们实现点击鼠标,星星的速度发生改变的效果。效果如下:

 

我们有很多可以扩展的地方,比如改变Star类里的MAX_DEPTH来改变星域的立体感,改变StarField类的STAR_COUNT,Star类SCALE的来改变星域的密度和范围。

 

目前为止对于每一星星我们只是简单的画了一个白色的小圆,其实这里有很大的发挥空间。比如用Noise函数根据星星在屏幕坐标系的位置计算星星的颜色,或者用你思念的人的名字或者其中的字母来替代圆圈,创造出那一片独一无二,只属于你的灿烂的星域!

 

 

福利:想获得全部代码,请公众号:想当然 后台回复“繁星”,即可获得!