วันพุธที่ 10 กรกฎาคม พ.ศ. 2556

My Music 2

Phiang aw Flute

รูปนี้เป็นรูปขลุ่ยเพียงออที่ผมวาด โดยนำมาซ้อนกับพื้นหลังที่ผมเคยออกแบบไว้ก่อนหน้านี้ ในชุดนี้ผมยังคงใช้ตัวแปรชนิด Global variables เพื่อให้แทนตัวแปรได้หมดทุกตัวในแต่ละฟังก์ชั่น เพียงแค่เปลี่ยนให้เป็นการใช้ทศนิยม และจำนวนเต็ม ยังคงต้องมีการบวกหรือลบด้วยตัวเลขเพื่อให้ได้ค่าที่ต้องการ ผมยังคงใช้ฟังก์ชั่นหลัก 2 ชนิดคือ void setup() ซึ่งใช้ในการกำหนด และ void draw() ซึ่งใช้ในการวาด ผมใช้ฟังก์ชั่นในการวาดรูปสี่เหลี่ยม และวงรี หรือ rect และ ellipse เพียงสองอย่างเท่านั้น ส่วนการตกแต่งภาพนั้น ผมยังคงใช้ฟังก์ชั่น fill() ตามปกติ นอกจากนี้ พื้นหลังได้ถูกออกแบบให้มันเคลื่อนไหวได้เหมือน animation เป็นสายรุ้งเหมือนเสียงเพลงที่ไพเราะ โดยใช้ฟังก์ชั่น if() ในการกำหนดเงื่อนไข โดยต้องคำนวณขนาด และความเร็วให้พอเหมาะ สำหรับภาพนี้ ยังคงไม่ยากเท่าไรที่จะวาด ขอเชิญทุกคนลองทำกันได้

Processing Code

float r=0;
float r2=0;
float r3=0;
float r4=0;
float r5=0;
float r6=0; //ฟังก์ชั่นเหล่านี้เป็นฟังก์ชั่นชนิด Global variables ใช้กับฟังก์ชั่นได้ทุกชุดในงานชิ้นนี้
float r7=0; //float คือฟังก์ชั่นที่ใช้กับจำนวนที่มีทศนิยม
void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดขนาด และพื้นหลัง มีได้เพียง 1 ชุดเท่านั้น
  size(400, 400); //ฟังก์ชั่นที่ใช้ในการกำหนดขนาด หรือ size(width, height)
  background(114, 237, 250); //ฟังก์ชั่นที่ใช้ในการกำหนดพื้นหลังให้มีสีตามแม่สีได้
}

void drawFlute() {  //ฟังก์ชั่นที่เราสร้างขึ้น ชื่อ drawFlute
  fill(#FF0303); //ฟังก์ชั่นที่ใช้ในการเติมสีตามค่าของแม่สี หรือเครื่องหมาย #
  ellipse(203, 200, r, r); //ฟังก์ชั่นที่ใช้ในการวาดวงรี หรือ ellipse(x, y, width, height)
  fill(#FFAB03);
  ellipse(203, 200, r2, r2);
  fill(#FFEB03);
  ellipse(203, 200, r3, r3);
  fill(#4BED0C);
  ellipse(203, 200, r4, r4);
  fill(#0D0AFF);
  ellipse(203, 200, r5, r5);
  fill(#7D0CC9);
  ellipse(203, 200, r6, r6);
  fill(#FA0FFF);
  ellipse(203, 200, r7, r7);
  fill(#FFFFFF);
  ellipse(203, 200, 120, 120);
  r=r+9.0;
  r2=r2+8.5;
  r3=r3+8.0;
  r4=r4+7.5;
  r5=r5+7.0;
  r6=r6+6.5;
  r7=r7+6.0; //เงื่อนไขในการกำหนดการหดตัว หรือขยายตัวของวงรีที่สร้างขึ้น และมีตัวแปรเหล่านี้อยู่ ตัวเลขที่นำไปบวกสามารถเพิ่มความเร็วได้ แต่ถ้านำไปลบจะทำให้ฟังก์ชั่นกระทำในทิศตรงข้าม
  if(r>600) {
    r=0;
  } else
  if(r2>600) {
    r2=0;
  }
  if(r3>600) {
    r3=0;
  }
  if(r4>600) {
    r4=0;
  }
  if(r5>600) {
    r5=0;
  }
  if(r6>600) {
    r6=0;
  }
  if(r7>600) {
    r7=0;
  } //ฟังก์ชั่นเงื่อนไขในการกำหนดขนาด และทิศทางของตัวแปร
  int w=10;
  int x=50;
  int y=100; //ตัวแปรเหล่านี้เป็น Vocal variables ใช้ได้เฉพาะในฟังก์ชั่นชุดนี้
  int z=200; //int ใช้กับตัวแปรที่เป็นจำนวนเต็ม
  fill(#FFD752);
  ellipse(z+5, x, x, x+10);
  rect(y+80, x, x, z+100);
  fill(#FFD752);
  ellipse(z+5, z+140, x, x+10);
  fill(#F0B905);
  ellipse(z+5, z+140, w+25, w+35);
  fill(#020303);
  ellipse(z+5, x, w, w);
  ellipse(z+5, y, w, w);
  ellipse(z+5, y+25, w, w);
  ellipse(z+5, y+50, w, w);
  ellipse(z+5, y+75, w, w);
  ellipse(z+5, z, w, w);
  ellipse(z+5, z+25, w, w);
}

void draw() {  //ฟังก์ชั่นหลักที่่ใช้ในการวาด มีได้เพียง 1 ฟังก์ชั่นเท่านั้น
  drawFlute();
} //เรียกใช้ฟังก์ชั่นที่สร้างขึ้น หากไม่มีฟังก์ชั่นนี้ ฟังก์ชั่นที่สร้างขึ้นจะไม่สามารถใช้งานได้

หมายเหตุ สังเกตได้ว่า เครื่องหมาย // เป็นการบอกว่า ฟังก์ชั่นชุดนี้ไม่่ใช้งาน และฟังก์ชั่นหลักที่ใข้ยังเป็น function without parameter  

Canvas


ไม่มีความคิดเห็น:

แสดงความคิดเห็น