วันพฤหัสบดีที่ 25 กรกฎาคม พ.ศ. 2556

Binary Display

BINARY DISPLAY ONE PLUS ONE

 สำหรับรูปนี้ เป็นการคำนวณค่าของ Binary ที่ค่อยๆ เพิ่่มขึ้น ทั้งหมดนี้อยู่ในฟังก์ชั่นหลักรวมกันเพียง 1 ชุด ตอนแรกในการทำ นับว่ายากมาก เพราะว่า ผมยังไม่ค่อยรู้จักตัวแปรชนิดนี้ ตอนแรกผมก็ลองกำหนดฟังก์ชั่นหลักมาก่อนเพียงหนึ่งฟังก์ชั่น แล้วใช้ฟังก์ชั่นย่อยลงไปเรื่อยๆ แต่ก่อนนั้น ผมกำหนดตัวแปร และ Array ที่รวมกลุ่มของค่า Binary ไว้ เมื่อเปรียบเทียบกันแล้ว จะได้ true = 1 และ false = 0 ผลลัพธ์ที่ออกมาจึงแสดงสองคำนี้สลับกันไปตามที่จัดไว้ในตัวแปร Array ชนิด boolean หลังจากนั้นจึงประกาศตัวแปรที่เราต้องหา หรือนำไปใช้ในวงเล็บของ boolean ชนิดนี้ หลังจากนั้นจึงประกาศตัวแปรสำหรับวงกลม หลังจากนั้นจึงกำหนดเงื่อนไขในการวน loop และเงื่อนไขธรรมดา แต่ละเงื่อนไขนั้นแตกต่างกันออกไป สุดท้ายผมได้เขียนผลลัพธ์ไว้ด้านล่างเหมือนกับบวกตัวเลขในแนวตั้ง ซึ่งเป็นผลลัพธ์ที่เปรียบเทียบกันกับตัวเลข สำหรับผมแล้ว ในเรื่องนี้ ผมยังคงศึกษาอยู่ คงอธิบายได้เท่านี้ ขอเชิญทำกันได้

Processing Code

void setup() {  //ประกาศสิ่งที่ต้องการให้คงที่ไม่มีการทำซ้ำ มีได้เพียง 1 ชุดในงานชิ้นหนึ่งเท่านั้น
  size(340, 100);  //กำหนดขนาดของภาพ หรือ Output ดูได้จาก size(width, height)
  background(116, 196, 255);  //ใช้ใส่สีให้กับพื้นหลังของภาพ โดยใช้ค่าตามแม่สี หรือเครื่องหมาย # สีที่ใส่นี่คือ สีฟ้าอมเขียวอ่อน
  boolean [] T = {true, true, false, false, false, false};  /*เทียบเหมือนกับ BINARY 110000*/ 
  boolean [] K = {true, false, false, true, false, true};  /*เทียบเหมือนกับ BINARY 100101*/
  boolean [] result = new boolean [T.length];  /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า result ไว้เก็บค่า T^K*/  
  boolean [] translate = new boolean [T.length];  /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า translate ไว้เก็บค่าตัวที่ทด*/
  boolean [] TK = new boolean [T.length];  /*สร้างตัวแปร Array ชนิด boolean ขึ้นมาชื่อว่า TK ไว้เก็บค่าคำตอบ*/ 
  int i;  /*ประกาศตัวแปร i ขึ้นมาเป็นจำนวนเต็ม ซึ่งเป็นตัวแปรแบบ local variable*/
  boolean z = false;  /*สร้างตัวแปรชนิด boolean ขึ้นมาชื่อว่า z = false*/ 
  int d = 42;  /*เส้นผ่านศูนย์กลางของวงกลม*/ 
  int x = d, y = 50;  /*ประกาศตัวแปร x และ y ขึ้นมาเป็นจำนวนเต็ม โดยให้มีค่าเท่ากับ d และ 50 ตามลำดับ ซึ่งเป็นตัวแปรแบบ local variable*/ 

for(i = T.length-1; i >= 0; i--) {  /*ให้ค่าเริ่มต้นของ i = T.length-1 ตรวจสอบเงื่อนไขว่า i >= 0 หรือไม่ ทุกครั้งก่อนออกจาก loop i ลบไปทีละ 1*/
  result[i] = T[i]^K[i];  /*นำค่า T[i]^K[i] มาใส่ในตัวแปร result[i]*/ 
  if(T[i]&K[i] == true) {  /*T[i]&K[i] เป็น true หรือไม่*/ 
    if(i-1 >= 0) {  /*i-1 มากกว่าหรือเท่ากับ 0 หรือไม่*/
    translate[i-1] = false;  /*กำหนดให้ translate ตัวที่ i-1 มีค่าเป้น false*/
    } else z = true;  /*ให้ z = true*/ 
  }
}

if(z == true) {  /*หาก F=true เติมสีเขียวอ่อน*/
  fill(#2BF511);  
  ellipse(x, y, d, d);  /*วาดวงกลมที่มีจุดกึ่งกลางที่ (x, y) และมีเส้นผ่านศูนย์กลางเป็น d หน่วย*/   
}

for(i = 0; T.length>i; i++) {  /*ให้ค่าเริ่มต้นของ i=0 ตรวจสอบเงื่อนไขว่า i น้อยกว่าความยาวของ T หรือไม่ ทุกครั้งก่อนออกจาก loop i บวกเพิ่มไปทีละ 1*/
  TK[i] = result[i]^translate[i];  /*กำหนดให้ result[i]^translate[i] มีค่าเป็น TK[i]*/ 
  if(TK[i] == true) {  /*หาก TK[i] = true ให้เติมสีเขียวอ่อน*/
  fill(#2BF511); 
  } else{  /*หากไม่ใช่ ให้เติมสีแดง*/
  fill(#FF030B);
}
  x+=d;  /* ทำการบวกค่า x เพิ่มทีละ d*/
  ellipse(x, y, d, d);  //วาดวงกลมที่มีจุดกึ่งกลางที่ (x, y) และมีเส้นผ่านศูนย์กลางเป็น d หน่วย
  }
}

Canvas

  110000 
  100101
1010101

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

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