วันอาทิตย์ที่ 7 กันยายน พ.ศ. 2557

Lab 2 - Forest

ขโมยป่าของ "วรุณาทิตย์ ทองสาลี" มาอีกที อิอิ
http://a5730174.blogspot.com/2014/09/lab2-forest.html



void setup()
{
    //variable
    int Space_Left,Space_Top;
    //assign variable
    Space_Left = -100;
    Space_Top = -40;
    //setup
    size(300,200);
    background(0,238,255);
    DrawTree(Space_Left,Space_Top);
    DrawApple(Space_Left,Space_Top);
    //friend's tree 
    draw_rect(130,100,50,150) ; 
    draw_circle(150,90,30); // circle 
    draw_circle(125,110,30); // circle
    draw_circle(100,100,30); // circle 
    draw_circle(75,90,30); // circle 
    draw_circle(100,80,30); // circle 
    draw_circle(125,70,30); // circle 
    draw_circle(150,60,30); // circle 
    draw_circle(175,70,30); // circle 
    draw_circle(200,80,30); // circle 
    draw_circle(225,90,30); // circle 
    draw_circle(200,100,30); // circle 
    draw_circle(175,110,30); // circle
} 

void DrawTree(int Space_Left,int Space_Top)
{
    //draw tree
    fill(194,88,52);
    noStroke();
    rect(Space_Left+110,Space_Top+150,80,300);
    //add curve to tree
    noStroke();
    fill(0,238,255);
    ellipse(Space_Left+110,Space_Top+300,40,300);
    ellipse(Space_Left+190,Space_Top+300,40,300);
    //add leaf
    noStroke();
    fill(98,255,0);
    ellipse(Space_Left+60,Space_Top+150,80,80);
    ellipse(Space_Left+80,Space_Top+120,80,80);
    ellipse(Space_Left+100,Space_Top+100,80,80);
    ellipse(Space_Left+240,Space_Top+150,80,80);
    ellipse(Space_Left+220,Space_Top+120,80,80);
    ellipse(Space_Left+200,Space_Top+100,80,80);
    ellipse(Space_Left+150,Space_Top+80,120,85);
    ellipse(Space_Left+150,Space_Top+100,120,85);
    ellipse(Space_Left+150,Space_Top+160,150,80);
}

void DrawApple(int Space_Left,int Space_Top)
{
    //add apple
    noStroke();
    fill(255,0,0);
    ellipse(Space_Left+70,Space_Top+150,24,24);
    ellipse(Space_Left+152,Space_Top+160,24,24);
    ellipse(Space_Left+220,Space_Top+140,24,24);
    stroke(125,49,9);
    strokeWeight(4);
    line(Space_Left+70,Space_Top+138,Space_Left+70,Space_Top+128);
    line(Space_Left+152,Space_Top+148,Space_Left+152,Space_Top+138);
    line(Space_Left+220,Space_Top+128,Space_Left+220,Space_Top+118);

}

void draw_rect (int x, int y , int small , int longg) { 
 fill(#8B4513); 
 noStroke(); 
 rect(x+80,y,small,longg); 
} 
void draw_circle (int x,int y , int radius){ 
fill(#00FF00); 
noStroke(); 
ellipse(x+80,y,2*radius,2*radius); //my tree ==" 
fill(#8A5C00); 
draw_tree(105, 80, 165, 80, 165, 163, 105, 163); //brown tree 
fill(#19A319); 
noStroke(); 
draw_leaves(100, 90, 40, 40); //green leaves1 
draw_leaves(85, 65, 40, 40); //green leaves2 
draw_leaves(105, 50, 40, 40); //green leaves3 
draw_leaves(153, 45, 30, 40); //green leaves4 
draw_leaves(185, 75, 40, 40); //green leaves5 
draw_leaves(175, 60, 40, 40); //green leaves6 
draw_leaves(175, 90, 30, 40); //green leaves7 
draw_leaves(140, 63, 90, 65); //green leaves8 
} 
void draw_tree(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4){ 
quad(x1,y1+50, x2, y2+50, x3, y3+50, x4, y4+50); 
} 
void draw_leaves(int x,int y,int width,int height){ 
ellipse(x, y+50, width, height); }

Lab 2 - Bicycle

ผมฟังเพลงๆนึงมาครับ เลยเป็นแรงบันดาลใจให้ผมวาดจักรยานคันนี้




void setup()

{
  //Initialization
  size(800,400);
  background(255);
  strokeWeight(1);
  frameRate(60);
}
float spin = 0;
void draw(){
  background(255);
  //variable
  float RefX,RefY;
  float ThickBody;
  float LHand;
  float HBody,LBody;
  float WSit,HSit,LSit;
  //assign
  RefX = mouseX;
  RefY = mouseY;
  ThickBody = 10;
  LHand = 25;
  HBody = 75;
  LBody = 150;
  WSit = 10;
  HSit = 20;
  LSit = 60;
  strokeWeight(ThickBody);
  //draw handle
  stroke(0);
  line(RefX,RefY,RefX+LHand,RefY);
  //draw front
  stroke(255,0,0);
  line(RefX,RefY,RefX-LHand,RefY);
  line(RefX-LHand,RefY,RefX-LHand-(LBody/4),RefY+(2*HBody));
  //draw body
  triangle(RefX-LHand-(LBody/28),RefY+HBody,RefX-LHand-(LBody/28)+LBody,RefY+HBody,RefX-LHand-(LBody/28)+((3*LBody)/4),RefY+(2*HBody));
  triangle(RefX-LHand-(LBody/28)+LBody,RefY+HBody,RefX-LHand-(LBody/28)+((3*LBody)/4),RefY+(2*HBody),RefX-LHand-(LBody/28)+((3*LBody)/4)+((2*LBody)/4),RefY+(2*HBody));
  //draw seat
  stroke(0);
  line(RefX-LHand-(LBody/28)+LBody,RefY+HBody,RefX-LHand-(LBody/28)+LBody+WSit,RefY+HBody-HSit);
  noStroke();
  fill(196,124,0);
  rect(RefX-LHand-(LBody/28)+LBody+WSit-(LSit/2),RefY+HBody-HSit-(LSit/4),LSit,LSit/4);
  noFill();
  stroke(0);
  //draw wheel
  DrawWheel(RefX-LHand-(LBody/28)+((3*LBody)/4)+((2*LBody)/4),RefY+(2*HBody),50);
  DrawWheel(RefX-LHand-(LBody/4),RefY+(2*HBody),50);
  spin = spin+0.5;
}

void DrawWheel(float CenterX,float CenterY,float R){
  int n=12;
  float dTire=8;
  float rad;
  rad = TWO_PI/n;
  //draw tire
  strokeWeight(dTire);
  noFill();
  ellipse(CenterX,CenterY,2*R,2*R);
  strokeWeight(2);
  for(int i=0;i<n;i=i+1){
    line(CenterX,CenterY,CenterX+(R*cos((rad*i)-spin)),CenterY-(R*sin((rad*i)-spin)));
  }
}


Lab 2 - Turtle

เต่า เต่า เต่า
เต่ามันมีสี่ขา
สี่ตีนเดินมา มันทำหัวผลุบๆโผล่ๆ




void setup()
{
  //Initialization
  size(400,400);
  background(0,238,255);
  frameRate(60);
}

float I=0;

float J=0;
int CheckStateI = 0;
int CheckStateJ = 0;
void draw(){
    background(0,238,255);
    DrawTurtle(mouseX,mouseY);
    
    if(CheckStateI == 0) { 
        I=I+0.5; 
    } else { 
        I=I-0.5; 
        }
    if(I >= 40) { 
        CheckStateI = 1; 
        }
    if(I <= 0) { 
        CheckStateI = 0; 
        }
        
    if(CheckStateJ == 0) { 
        J=J+0.5; 
    } else { 
        J=J-0.5; 
        }
    if(J >= 20) { 
        CheckStateJ = 1; 
        }
    if(J <= -20) { 
        CheckStateJ = 0; 
        }
        
}

void DrawTurtle(int RefX,int RefY){

    //variable
    float WBack,HBack,dBack;
    float HHead;
    float LArm;
    float LTail;
    float WEye,HEye;
    //assign
    WBack = 80;
    HBack = 120;
    dBack = 15;
    HHead = 20+I;
    LArm = 30;
    LTail = 40;
    WEye = 5;
    HEye = 5;
    
    fill(37,184,0);
    //draw head turtle
    beginShape();
    vertex(RefX+(WBack/4),RefY-(HBack/4));
    vertex(RefX-(WBack/4),RefY-(HBack/4));
    vertex(RefX-(WBack/4),RefY-(HBack/2)-dBack-HHead);
    bezierVertex(RefX-(WBack/8),RefY-(HBack/2)-dBack-HHead-20,RefX+(WBack/8),RefY-(HBack/2)-dBack-HHead-20,RefX+(WBack/4),RefY-(HBack/2)-dBack-HHead);
    vertex(RefX+(WBack/4),RefY-(HBack/4));
    endShape();
    
    //draw eye
    fill(0);
    //left eye
    ellipse(RefX-(WBack/8),RefY-(HBack/2)-dBack-HHead,WEye,HEye);
    //right eye
    ellipse(RefX+(WBack/8),RefY-(HBack/2)-dBack-HHead,WEye,HEye);
    
    fill(37,184,0);
    //draw arm turtle
    //left arm top
    beginShape();
    vertex(RefX-(WBack/4),RefY-(HBack/8));
    vertex(RefX-(WBack/2)-dBack-LArm,RefY-(HBack/8));
    bezierVertex(RefX-(WBack/2)-dBack-LArm-20,RefY-(1.5*HBack/8),RefX-(WBack/2)-dBack-LArm-20,RefY-(2*HBack/8),RefX-(WBack/2)-dBack-LArm,RefY-(2.5*HBack/8));
    vertex(RefX-(WBack/4),RefY-(2.5*HBack/8));
    vertex(RefX-(WBack/4),RefY-(HBack/8));
    endShape();
    //left arm bottom
    beginShape();
    vertex(RefX-(WBack/4),RefY+(HBack/8));
    vertex(RefX-(WBack/2)-dBack-LArm,RefY+(HBack/8));
    bezierVertex(RefX-(WBack/2)-dBack-LArm-20,RefY+(1.5*HBack/8),RefX-(WBack/2)-dBack-LArm-20,RefY+(2*HBack/8),RefX-(WBack/2)-dBack-LArm,RefY+(2.5*HBack/8));
    vertex(RefX-(WBack/4),RefY+(2.5*HBack/8));
    vertex(RefX-(WBack/4),RefY+(HBack/8));
    endShape();
    //right arm top
    beginShape();
    vertex(RefX+(WBack/4),RefY-(HBack/8));
    vertex(RefX+(WBack/2)+dBack+LArm,RefY-(HBack/8));
    bezierVertex(RefX+(WBack/2)+dBack+LArm+20,RefY-(1.5*HBack/8),RefX+(WBack/2)+dBack+LArm+20,RefY-(2*HBack/8),RefX+(WBack/2)+dBack+LArm,RefY-(2.5*HBack/8));
    vertex(RefX+(WBack/4),RefY-(2.5*HBack/8));
    vertex(RefX+(WBack/4),RefY-(HBack/8));
    endShape();
    //right arm top
    beginShape();
    vertex(RefX+(WBack/4),RefY+(HBack/8));
    vertex(RefX+(WBack/2)+dBack+LArm,RefY+(HBack/8));
    bezierVertex(RefX+(WBack/2)+dBack+LArm+20,RefY+(1.5*HBack/8),RefX+(WBack/2)+dBack+LArm+20,RefY+(2*HBack/8),RefX+(WBack/2)+dBack+LArm,RefY+(2.5*HBack/8));
    vertex(RefX+(WBack/4),RefY+(2.5*HBack/8));
    vertex(RefX+(WBack/4),RefY+(HBack/8));
    endShape();
    
    //draw tail
    beginShape();
    vertex(RefX+(WBack/4),RefY+(3*HBack/8));
    vertex(RefX-(WBack/4),RefY+(3*HBack/8));
    bezierVertex(RefX-(WBack/8),RefY+(HBack/2)+dBack+(2*LTail/4),RefX-(WBack/16),RefY+(HBack/2)+dBack+(3*LTail/4),RefX+J,RefY+(HBack/2)+dBack+LTail);
    bezierVertex(RefX+(WBack/16),RefY+(HBack/2)+dBack+(2*LTail/4),RefX+(WBack/8),RefY+(HBack/2)+dBack+(3*LTail/4),RefX+(WBack/4),RefY+(3*HBack/8));
    endShape();
    
    //draw back turtle
    ellipse(RefX,RefY,WBack+(2*dBack),HBack+(2*dBack));
    ellipse(RefX,RefY,WBack,HBack);
    
    //draw line back turtle
    line(RefX,RefY-(HBack/2),RefX,RefY+(HBack/2));
    line(RefX-(WBack/2),RefY,RefX+(WBack/2),RefY);
    
}

วันอังคารที่ 2 กันยายน พ.ศ. 2557

Lab 2 - Pencil

ถ้าให้ผมวาดดินสอ ผมจะไม่วาดดินสอธรรมดา แต่ผมจะวาดดินสอ RAINBOWWWWW !!



void setup(){
  background(255);
  size(500,500);
  frameRate(60);
}
int n=0;
void draw(){
  background(255);
  DrawPencil(mouseX,mouseY,n);
  n = second()%7;
}

void DrawPencil(float RefX,float RefY,int nColor){
  //variable draw pencil
  float WPencil,HPencil;
  float HHeadPencil;
  //assign
  WPencil=40;
  HPencil=300;
  HHeadPencil=35;
  //draw head pencil
  fill(252,200,86);
  triangle(RefX,RefY,RefX-(WPencil/2),RefY-HHeadPencil,RefX+(WPencil/2),RefY-HHeadPencil);
  fill(0);
  triangle(RefX,RefY,RefX-(WPencil/(2*3)),RefY-(HHeadPencil/3),RefX+(WPencil/(2*3)),RefY-(HHeadPencil/3));
  //draw handle pencil
  fill(PickColor(nColor));
  rect(RefX-(WPencil/2),RefY-HHeadPencil-HPencil,WPencil/3,HPencil);
  fill(PickColor(nColor+1));
  rect(RefX-(WPencil/2)+(WPencil/3),RefY-HHeadPencil-HPencil,WPencil/3,HPencil);
  fill(PickColor(nColor+2));
  rect(RefX-(WPencil/2)+(2*WPencil/3),RefY-HHeadPencil-HPencil,WPencil/3,HPencil);
}

color PickColor(int Choose){
  color ReturnColor=color(0);
  switch(Choose){
    case 0:
      ReturnColor = color(#FF0000);
      break;
    case 1:
      ReturnColor = color(#FFff00);
      break;
    case 2:
      ReturnColor = color(#00ff00);
      break;
    case 3:
      ReturnColor = color(#00ffff);
      break;
    case 4:
      ReturnColor = color(#0000ff);
      break;
    case 5:
      ReturnColor = color(#FF00ff);
      break;
    case 6:
      ReturnColor = color(#FF0000);
      break;
    case 7:
      ReturnColor = color(#FFff00);
      break;
    case 8:
      ReturnColor = color(#00ff00);
      break;
    case 9:
      ReturnColor = color(#00ffff);
      break;
  }
  return ReturnColor;
}

Lab 2 - Star (with Animation)

ต่อจาก Lab ที่แล้ว คำสาปดาวหกแฉกมันเป็นวงแหวนเวทย์ เวลาร่ายเวทย์ ถ้าวงแหวนเวทย์อยู่นิ่งๆเฉยๆมันจะดูไม่ใช่ เพราะงั้น วงแหวนเวทย์มันต้องขยับได้ !!! งั้นผมจะร่ายเวทย์ให้มันขยับได้บัดเดี๋ยวนี้



void setup()
{
  // initialization
  size(300,300);
  background(0);
  strokeWeight(4);
  stroke(255,255,0);
  frameRate(60);

}
int y=49;
int check=0;
void draw()
{
  background(0);
  translate(width/2,height/2);
  if(check==0)
  {
  y = y-1;
  }
  if(check==1)
  {
    y = y+1;
  }
  // variable
  int CenterStarX,CenterStarY;
  int WidthStar,HeightStar;
  int d;
  int SpaceBetweenCircle;
  float RVertical,RSqrt,RCircle;
  // assign variable
  CenterStarX = 0;
  CenterStarY = 0;
  WidthStar = 160+y;
  HeightStar = 184+y;
  d = 100; //space between base of both triangle
  SpaceBetweenCircle = 40; //space between inside and outside circle
  RVertical = HeightStar/2; //radius from center of star to top vertex of star
  RSqrt = sqrt((pow((d/2),2))+(pow((WidthStar/2),2))); //radius from center of star to side vertex of star
  if(RVertical > RSqrt)
  {
    RCircle = RVertical;
  }
  else
  {
    RCircle = RSqrt;
  }
  // draw outside circle
  fill(0,120,0);
  ellipse(CenterStarX,CenterStarY,(RCircle*2)+(SpaceBetweenCircle*2),(RCircle*2)+(SpaceBetweenCircle*2));
  // draw inside circle
  fill(0,0,100);
  ellipse(CenterStarX,CenterStarY,(RCircle*2),(RCircle*2));
  // draw top vertex triangle
  noFill();
  triangle(CenterStarX,CenterStarY-(HeightStar/2)+3,CenterStarX-(WidthStar/2)+3,CenterStarY+(d/2),CenterStarX+(WidthStar/2)-3,CenterStarY+(d/2));
  // draw bottom vertex triangle
  noFill();
  triangle(CenterStarX,CenterStarY+(HeightStar/2)-3,CenterStarX-(WidthStar/2)+3,CenterStarY-(d/2),CenterStarX+(WidthStar/2)-3,CenterStarY-(d/2));
  if(y==50)
  {
    check = 0;
  }
  if(y==0)
  {
    check = 1;
  }
}