week05
///week05-1-i-love-u
size(300,300);
stroke(255,0,0);
for(int xx=0; xx<300;xx++){ //大的x 0..300
for(int yy=0; yy<300; yy++){ //大的y 0..300
float x= (xx-150)/100.0; //減一半,除100
float y= -(yy-150)/100.0; //減一半,除100
float d = x*x +y*y - 1;
if(d*d*d -x*x*y*y*y<0) point(xx,yy);
}
}
//week05-2-for-ellipse-arc-arc-radians-360
// 角度 degrees vs. radians 弧度/徑度
size(600,600);
background(0);
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
int now = i*6+j; //每個圓的編號
ellipse(50+j*100,50+i*100,80,80);
arc(50+j*100,50+i*100,60,60,0,now,PIE);
arc(50+j*100,50+i*100,40,40,0,radians(now*10),PIE);
text(now,j*100,i*100+30);
}
}
//week05-3
//degrees vs. radians
void setup(){
size(400,400);
}
void draw(){
background(128);
line(200,200,400,200);
line(200,200,mouseX,mouseY);
float dx = mouseX-200,dy = mouseY-200;
float a = atan2(dy,dx);
arc(200,200,200,200,0,a,PIE);
textSize(30);
text("radians: "+a,100,100); //radians弧度
text("degrees: "+degrees(a),100,130); // degrees 度
}
//week05-3b
//degrees vs. radians
void setup(){
size(400,400);
}
void draw(){
background(128);
line(200,200,400,200);
line(200,200,mouseX,mouseY);
float dx = mouseX-200,dy = mouseY-200;
float a = atan2(dy,dx);
if(a<0) arc(200,200,200,200,a,0,PIE);
else arc(200,200,200,200,0,a,PIE);
textSize(30);
text("radians: "+a,100,100); //radians弧度
text("degrees: "+degrees(a),100,130); // degrees 度
}
//week05-4-translate-mouaeX-mouseY-rotate-radians-
//比較rotate and translate 的順序
void setup(){
size(400,400);
}
void draw(){
background(204);
//請做以下測試: 把下面兩行調一下順序
//會發現: 畫東西之前的 translate()才有效果
//在電腦圖學裡,畫圖時,會照著之前累積的移動,旋轉 來放東西
translate(mouseX,mouseY);//移到mouse所在位置
rotate(radians(frameCount)*10);//1秒有60個frame,轉60度,要變radians單位
rect(-50,-5,100,10);//寬度100的棒子,但放在左上角
}
//week05-5-translate-mouaeX-mouseY-rotate-radians-
//比較rotate and translate 的順序
void setup(){
size(400,400);
}
void draw(){
background(204);
//請做以下測試: 把下面兩行調一下順序
//會發現: 畫東西之前的 translate()才有效果
//在電腦圖學裡,畫圖時,會照著之前累積的移動,旋轉 來放東西
rotate(radians(frameCount)*10);//1秒有60個frame,轉60度,要變radians單位
translate(mouseX,mouseY);//移到mouse所在位置
rect(-50,-5,100,10);//寬度100的棒子,但放在左上角
}
//week05-6-bad
//因為有很多的移動,旋轉,大腦會亂掉,所以用分階層做事
void setup(){
size(400,400);
}
void draw(){
background(204);
translate(width/2,height/2);//(把下面這坨)移到畫面中心
rotate(radians(frameCount)*10);
rect(-50,-5,100,10);
//希望在左邊-100的地方,也在轉,但是他亂掉了
translate(width/2-100,height/2);//(把下面這坨)移到畫面中心
rotate(radians(frameCount)*10);
rect(-50,-5,100,10);
}
//week05-6-good
//因為有很多的移動,旋轉,大腦會亂掉,所以用分階層做事
void setup(){
size(400,400);
}
void draw(){
background(204);
pushMatrix();
translate(width/2,height/2);//(把下面這坨)移到畫面中心
rotate(radians(frameCount)*10);
rect(-50,-5,100,10);
popMatrix();
pushMatrix();
translate(width/2-100,height/2);//(把下面這坨)移到畫面中心
rotate(radians(frameCount)*10);
rect(-50,-5,100,10);
popMatrix();
}
//week05-7-many-pushMatrix-popMatrix
void setup(){
size(500,500);
}
void draw(){
background(204);
for(int x = 50;x<500;x+=100){ //每個距離100
for(int y = 50; y<500;y+=100){ //每個距離100
pushMatrix();//今天的主角(在圖學裡,會往右縮排)
translate(x,y);//移到相應的xy座標
rotate(radians(frameCount));//長100的棒子
rect(-50,-5,100,10);
popMatrix();//今天的主角
}
}
}








沒有留言:
張貼留言