//week05-1-i-love-you
利用數學公式算出愛心的線條然後畫出愛心
size(300,300); stroke(255,0,0); for(int xx=0;xx<300;xx++){//大的X 0..300 for(int yy=0;yy<300;yy++){//大的Y0..300 float x=(xx-150)/100.0;//減一半,除一半 float y=-(yy-150)/100.0; // 0..300便-150..+150便-1.5-+1.5 float d=x*x+y*y-1; if(d*d*d-x*x*y*y*y<0) point(xx,yy); } }//week05-1b-i-love-you讓愛心固定在中間,改位置和出發點 size(300,300); stroke(255,0,0); translate(width/2,height/2);//transalte(150,150) for(int xx=-150;xx<150;xx++){//大的X 0..300 for(int yy=-150;yy<150;yy++){//大的Y0..300 float x=xx/100.0;//除100-1.5..+1.5 float y=-yy/100.0; // 0..300便-150..+150便-1.5-+1.5 float d=x*x+y*y-1; if(d*d*d-x*x*y*y*y<0) point(xx,yy); } }
//week05-2 //角度 degress vs radans 弧度/徑度先劃出很多個圓,再給他編號,再加上角度 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-atan2-dy-dx-text-radians //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); text("degrees:"+degrees(a),100,130); }//week05-3b-atan2-dy-dx-text-radians //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); text("degrees:"+degrees(a),100,130); }//week05-4 //比較rotate與translate的順序 void setup(){ size(400,400); } void draw(){ background(204); translate(mouseX,mouseY); rotate(radians(frameCount)); rect(-50,-5,100,10); }
//week05-5 //比較rotate與translate的順序 void setup(){ size(400,400); } void draw(){ background(204); rotate(radians(frameCount)*10); translate(mouseX,mouseY); rect(-50,-5,100,10); }//week05-6-push-bad // void setup(){ size(400,400); } void draw(){ background(204); translate(width/2,height/2); rotate(radians(frameCount)*10); rect(-50,-5,100,10); translate(width/2-100,height/2); rotate(radians(frameCount)*10); rect(-50,-5,100,10); }//week05-6-push-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){ for(int y=50;y<500;y+=100){ pushMatrix(); translate(x,y); rotate(radians(frameCount)); rect(-50,-5,100,10); popMatrix(); } } }
沒有留言:
張貼留言