恩恩恩~~~~看到強者學弟 "阿亂" 在部落格上面PO自己 PD的使用心得~
害我心養養的 這是他的網站 http://kickowang.blogspot.com/
呵呵那我也來寫一下Processing 最近使用的東西吧
先show個圖
恩恩~~~~在來是程式碼的部分
int Ball_Number = 100; //首先呢 先把圓形的個數設定為 100個
float Ball_Position_X[] = new float[Ball_Number]; // 圓形的x座標
float Ball_Position_Y[] = new float[Ball_Number]; // 圓形的y座標
float Ball_Velocity_X[] = new float[Ball_Number]; // 圓形的x方向速度
float Ball_Velocity_Y[] = new float[Ball_Number]; // 圓形的y方向速度
float Ball_Accuracy_X[] = new float[Ball_Number]; // 圓形的x方向加速度
float Ball_Accuracy_Y[] = new float[Ball_Number]; // 圓形的y方向加速度 噗噗
int Ball_Radius[] = new int[Ball_Number]; // 這個則是每個圓形的半徑, 到後面會隨著程式的進行越來越小~
int Count = 0; // 記數器 哈哈, 等等會用做每經過六次 圓的半徑就少一
void setup() //主要程式執行部份
{
size(800,800); //設定畫面大小為 800X800
background(0); //背景黑色
smooth(); // 畫面平滑 >/////////<
frameRate(30); //每秒更新速率設定為 每秒更新30次~
for(int i = 0; i < Ball_Number; i++) //初始化球的一些狀態
{
Ball_Position_X[i] = random(0,width);
Ball_Position_Y[i] = random(0,height);
Ball_Velocity_X[i] = random(-1,1);
Ball_Velocity_Y[i] = random(-1,1);
Ball_Accuracy_X[i] = 0;
Ball_Accuracy_Y[i] = 0;
Ball_Radius[i] = (int)(random(0,20)+40);
}
}
void draw()
{
for(int i = 0; i < Ball_Number; i++) // 更新每個球
{
if(Ball_Radius[i] > 1) // 如果球的半徑大於1的話才做下面的這些事~
{
Ball_Accuracy_X[i] = (mouseX - Ball_Position_X[i])/
sqrt(sq(mouseX-Ball_Position_X[i])+sq(mouseY-Ball_Position_Y[i]))*0.006; //首先先算出球對滑鼠單位向量的X分量 之後乘以0.006 當作X方向加速度
Ball_Accuracy_Y[i] = (mouseY - Ball_Position_Y[i])/
sqrt(sq(mouseX-Ball_Position_X[i])+sq(mouseY-Ball_Position_Y[i]))*0.006; // 再算出單位向量的Y分量 之後乘以0.006 當作Y方向加速度
Ball_Velocity_X[i] = Ball_Velocity_X[i] + Ball_Accuracy_X[i]; // 物理公式 哈哈
Ball_Velocity_Y[i] = Ball_Velocity_Y[i] + Ball_Accuracy_Y[i];
Ball_Position_X[i] = Ball_Position_X[i] +Ball_Velocity_X[i];
Ball_Position_Y[i] = Ball_Position_Y[i] +Ball_Velocity_Y[i];
fill(Ball_Radius[i]*10,255-Ball_Radius[i]*3,Ball_Radius[i]*5); // 顏色也會隨著半徑改變噢
ellipse(Ball_Position_X[i],Ball_Position_Y[i],Ball_Radius[i],Ball_Radius[i]); // 畫出球來
}
}
Count ++; // 每一次 count 都加一
if(Count > 6) // 但是當他大於六的時候
{
Count = 0; // 就規零
for(int i = 0; i < Ball_Number; i++)
{
if( Ball_Radius[i] > 1 )
{
Ball_Radius[i] = Ball_Radius[i]-1; //然後球的半徑減一,直到他的半徑小於一
}
}
}
}
留言列表