2020年10月26日 星期一

喵~規律畫圖~

找規律畫圖
  • 利用sin,cos找點
    • size(500,500);
    • for(int angle=0;angle<360;angle+=120){
    •   float angle2=radians(angle);
    •   float x= 100+cos(angle2)*50;
    •   float y= 100+sin(angle2)*50;
    •   ellipse(x,y,2,2);
    • }
  • 畫線連接~
    • size(500,500);
    • beginShape();///開始畫
    • for(int angle=0;angle<360;angle+=120){
    •   float angle2=radians(angle);
    •   float x= 100+cos(angle2)*50;
    •   float y= 100+sin(angle2)*50;
    •   vertex(x,y);
    • }
    • endShape(CLOSE);//結束畫(CLOSE)=封閉圖形
  • 轉動的三角形
    • void setup(){
    •   size(500,500);
    • }
    • void draw(){
    •   beginShape();
    •   for(int angle=0;angle<360;angle+=120){
    •     float angle2=radians(angle+mouseX);
    •     float x= 100+cos(angle2)*50;
    •     float y= 100+sin(angle2)*50;
    •     vertex(x,y);
    •   }
    •   endShape(CLOSE);
    • }
    • void setup(){
    •   size(500,500);
    • }
    • void draw(){
    •   background(255);//清畫面
    •   beginShape();
    •   for(int angle=0;angle<360;angle+=120){
    •     float angle2=radians(angle+mouseX);
    •     float x= 100+cos(angle2)*50;
    •     float y= 100+sin(angle2)*50;
    •     vertex(x,y);
    •   }
    •   endShape(CLOSE);
    • }
  • 會移動旋轉的三角形~
    • void setup(){
    •   size(500,500);
    • }
    • void draw(){
    •   beginShape();
    •   for(int angle=0;angle<360;angle+=120){
    •     float angle2=radians(angle+mouseX);
    •     float x= mouseX+cos(angle2)*50;
    •     float y= mouseY+sin(angle2)*50;
    •     vertex(x,y);
    •   }
    •   endShape(CLOSE);
    • }
    • void setup(){
    •   size(500,500);
    • }
    • void draw(){
    •   background(255);
    •   beginShape();
    •   for(int angle=0;angle<360;angle+=120){
    •     float angle2=radians(angle+mouseX);
    •     float x= mouseX+cos(angle2)*50;
    •     float y= mouseY+sin(angle2)*50;
    •     vertex(x,y);
    •   }
    •   endShape(CLOSE);
    • }
  • 自動順時鐘等速旋轉~
    • void setup(){
    •   size(500,500);
    • }
    • void draw(){
    •   beginShape();
    •   for(int angle=0;angle<360;angle+=120){
    •     float angle2=radians(angle+frameCount);
    •     float x= mouseX+cos(angle2)*50;
    •     float y= mouseY+sin(angle2)*50;
    •     vertex(x,y);
    •   }
    •   endShape(CLOSE);
    • }
    • void setup(){
    •   size(500,500);
    • }
    • void draw(){
    •   background(255);
    •   beginShape();
    •   for(int angle=0;angle<360;angle+=120){
    •     float angle2=radians(angle+frameCount);
    •     float x= mouseX+cos(angle2)*50;
    •     float y= mouseY+sin(angle2)*50;
    •     vertex(x,y);
    •   }
    •   endShape(CLOSE);
    • }
  • 名詞解釋~
    • frameCount 第幾個影格
      • 1hr=60min, 1min=60sec, 1sec=60frame
    • radians 弧度
      • degree(度):360度的世界
      • radians(弧度):PI的世界(sin(),cos()用)
    • x座標=cos(角度);
    • y座標=sin(角度);
    • beginShape();  開始畫
    • endShape();  結束畫
  • 加分:
    • void setup(){
    •   size(800,800);
    •   background(255);
    • }
    • void draw(){
    •   int a=30, c=-1, l=-1;
    •   for(int my=50;my<800;my+=80){
    •     for(int mx=50;mx<800;mx+=80){
    •       int r=30;
    •       if(l==-1) a=30;
    •       if(c==1&&l==1) a=20;
    •       if(c==-1&&l==1) a=40;
    •       for(int i=0;i<3;i++){
    •         beginShape();
    •         if(l==-1){
    •           if(c==1) stroke(255,0,0);
    •           else stroke(0);
    •         }
    •         else{
    •           if(c==1) stroke(0);
    •           else stroke(255,0,0);
    •         }
    •         for(int angle=0;angle<360;angle+=120){
    •           float angle2=radians(angle+a);
    •           float x= mx+cos(angle2)*r;
    •           float y= my+sin(angle2)*r;
    •           vertex(x,y);
    •           r-=3;
    •         } 
    •         endShape(CLOSE);
    •       }
    •       c*=-1;
    •     }
    •     l*=-1;
    •   }
    • }

                                                                                                                                                沒有留言:

                                                                                                                                                張貼留言