วันพฤหัสบดีที่ 19 กันยายน พ.ศ. 2556

Solar System's Planets

Solar system

สำหรับภาพนี้เป็นการออกแบบระบบสุริยะจักรวาล ในการออกแบบนั้น ต้องมีการนำค่า Array ต่างๆ หลายอย่างมาทดลองกัน เพราะสำหรับดวงดาวแต่ละดวง บางดวงอาจมีดวงจันทร์เป็นบริวารเหมือนกับโลกของเรา ดังนั้นการออกแบบดวงจันทร์ให้คู่กับดาวแต่ละดวง ต้องใช้ Array เฉพาะของดวงจันทร์ และมีการสร้างฟังก์ชั่นสำหรับการสร้างดวงจันทร์แยกเอาไว้ เช่นเดียวกับฟังก์ชั่นหลัก นอกจากนี้ยังต้องมีการกำหนดสี และการเขียนข้อความเรียงตามดวงดาวแต่ละดวง โดยเราวาดดวงอาทิตย์ไว้ด้านหน้าสุด ส่วนใหญ่จำนวนที่ใช้ใน Array นั้นเป็นเลขทศนิยม ส่วนการกำหนดสี และชื่อนั้น เราใช้ Array ชนิด color และ String ดังนั้น เราจำเป็นต้องมีความรู้เกี่ยวกับ Array ไว้ จึงจะเข้าใจ และทำได้

Processing Code


int i = 0;  //ตัวแปรชนิด Global Variable ที่ใช้แทนได้ทั้งฟังก์ชั่น ตัวนี้นำไปใช้ในการนับ Array และเป็นจำนวนเต็ม

float [] r = {1.750, 6.052, 6.371, 3.390, 69.911, 58.232, 25.362, 24.622};  //Array ชุดที่เก็บข้อมูลสำหรับค่ารัศมีของดาวเคราะห์แต่ละดวง เป็นค่าทศนิยม

float [] d = {57.910, 108.200 , 180.600, 227.900, 478.500, 833.500, 1177.000, 1460.000};  //Array ชุดที่ใช้เก็บค่าระยะห่างระหว่างดวงดาว

float [] moon = {0, 0, 1, 2, 39, 30, 21, 8};  //Array ที่ใช้กำหนดจำนวนดวงจันทร์

String [] names = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"};  //Array ชนิด String [] ใช้สำหรับเก็บชื่อของดาวเคราะห์ทั้ง 8 ดวง

color [] c = {#764802, #DEAD65, #10237C, #D69123, #FF831C, #E8F0B1, #D6EBFF, #4E97DE};  //Array ที่ใช้สำหรับกำหนดสีของดาวเคราะห์ทั้งหมดตามลำดับ จากซ้ายไปขวา

int y = 150;

int a = 270;

void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดเรียกใช้งานฟังก์ชั่นต่างๆ

  background(6, 5, 41);  //ฟังก์ชั่นที่ใช้เติมสีให้กับพื้นหลัง โดยกำหนดตามแม่สี สีที่ใช้นี้คือ สีน้ำเงินเข้มจนเกือบดำ

  size(900, 300);  //ฟังก์ชั่นที่ใช้ในการกำหนดพื้นที่ หรือ size(width, height)

  fill(#FF0900);  //ฟังก์ชั่นที่ใช้ในการเติมสีให้กับสิ่งต่างๆ ตามค่าของแม่สี หรือเครื่องหมาย # สีที่ใส่นี้คือ สีแดง

  ellipse (10, 90, 250, 500);  //ฟังก์ชั่นที่ใช้ในการวาดวงรี หรือ ellipse(x, y, width, height) สิ่งที่วาดนี้คือ ดวงอาทิตย์

  while(i < moon.length) {  //กำหนดลูปเงื่อนไขในกรณีที่ค่า i มีค่าน้อยกว่าความยาวของ Array ชื่อ moon

    fill(255);  //เติมสีขาว

    textSize(12);  //ฟังก์ชั่นที่ใช้ในการกำหนดขนาดของข้อความ

    text(names[0], r[0]*65, a);  //ฟังก์ชั่นที่ใช้ในการเขียนข้อความ โดยครั้งนี้กำหนดให้เขียนข้อความตามตำแหน่งของข้อความใน Array ชื่อ names สังเกตได้จาก text(data, x, y)

    text(names[1], r[1]*27, a);

    text(names[2], r[2]*32, a);

    text(names[3], r[3]*71, a);

    text(names[4], r[4]*5, a);

    text(names[5], r[5]*9, a);

    text(names[6], r[6]*27+15, a);

    text(names[7], r[7]*34, a);

    fill(c[i]);  //เติมสีตาม Array ชื่อ c

    ellipse (130+d[i]/2, y, 2.2*r[i], 2.2*r[i]);

    fill(255, 255, 0);  //เติมสีเหลืองให้กับดวงจันทร์

    drawmoon(d[2]+50, r[2]*2, moon[2]);

    drawmoon(d[3]+20, r[3]*2, moon[3]);

    drawmoon(d[4]-110, r[4]*2, moon[4]);

    drawmoon(d[5]-285, r[5]*2, moon[5]);

    drawmoon(d[6]-458, r[6]*2, moon[6]);

    drawmoon(d[7]-600, r[7]*2, moon[7]);

    i = i+1;  //ค่าของ i มีค่าเพิ่มขึ้นทีละ 1 จนกว่าจะสิ้นสุดลูป

  }

 }

void drawmoon(float x, float rad, float n) {  //ฟังก์ชั่นที่ใช้ในการสร้างดวงจันทร์ โดยกำหนดพารามิเตอร์

  int i = 0;  //กำหนดตัวแปร i ชนิด Local Variable ใช้ในการแทนค่าในฟังก์ชั่นนี้

  while(i < n) {  //ลูปกรณีที่ i มีค่าน้อยกว่า n

    ellipse(x+rad*0.7*sin(i), 150+(cos(i)*rad*0.7), 5, 5);

    i = i+1;

  }

}

Canvas


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

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