Solar system
สำหรับภาพนี้เป็นการออกแบบระบบสุริยะจักรวาล
ในการออกแบบนั้น ต้องมีการนำค่า Array ต่างๆ หลายอย่างมาทดลองกัน เพราะสำหรับดวงดาวแต่ละดวง
บางดวงอาจมีดวงจันทร์เป็นบริวารเหมือนกับโลกของเรา ดังนั้นการออกแบบดวงจันทร์ให้คู่กับดาวแต่ละดวง
ต้องใช้ Array เฉพาะของดวงจันทร์
และมีการสร้างฟังก์ชั่นสำหรับการสร้างดวงจันทร์แยกเอาไว้
เช่นเดียวกับฟังก์ชั่นหลัก นอกจากนี้ยังต้องมีการกำหนดสี
และการเขียนข้อความเรียงตามดวงดาวแต่ละดวง โดยเราวาดดวงอาทิตย์ไว้ด้านหน้าสุด
ส่วนใหญ่จำนวนที่ใช้ใน Array นั้นเป็นเลขทศนิยม
ส่วนการกำหนดสี และชื่อนั้น เราใช้ Array ชนิด color และ String ดังนั้น เราจำเป็นต้องมีความรู้เกี่ยวกับ
Array ไว้ จึงจะเข้าใจ และทำได้
Solar system
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;
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น