จากความเดิมตอนที่แล้ว (Lab 1) ยูกิได้ใช้คำสาปดาวหกแฉกผนึก Blue Eye White Dragon ไว้แล้ว
แต่ไคบะไม่ลดละความย่อท้อ โดยการสังเวยมอนสเตอร์อีกหลายๆตัว เพื่อเรียก Blue Eye White Dragon ออกมาอีกให้ครบ 3 ตัว เพื่อที่จะ Fusion กันกลายเป็น Blue Eye Ultimate Dragon !!
"หึ !! ทำอะไรข้าไม่ได้หรอก !! ข้ามีคำสาปดาวหกแฉก 3 ใบ !!" ยูกิได้กล่าวเอาไว้
void setup()
{
// initialization
size(300,300);
background(0);
strokeWeight(4);
stroke(255,255,0);
translate(width/2,height/2);
DrawStar(50,50);
DrawStar(0,-50);
DrawStar(-50,50);
}
void DrawStar(int CenterStarX,int CenterStarY)
{
// variable
int WidthStar,HeightStar;
int d;
int SpaceBetweenCircle=5;
float RVertical,RSqrt,RCircle;
// assign variable
WidthStar = 40;
HeightStar = 40;
d = 20; //space between base of both triangle
SpaceBetweenCircle = 10; //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));
}
โดยผมนำโค้ดส่วนที่สร้างรูปดาวไปใส่ในฟังก์ชันชื่อ DrawStar โดยมี Parameter เป็นจุดศูนย์กลางของดาว
เมื่อผมเรียกใช้ฟังก์ชัน DrawStar 3 ครั้ง แต่เปลี่ยนค่า Parameter ไม่ให้เหมือนกัน ผมก็ได้ดาว 3 ดวง !!
วันพฤหัสบดีที่ 28 สิงหาคม พ.ศ. 2557
วันพุธที่ 27 สิงหาคม พ.ศ. 2557
Lab 2 - Favourite Subject/Topic (with Functions)
Increase/Decrease Space_Left_Screen to move screen to right/left.
Increase/Decrease H_CPU to increase/decrease the height of CPU.
Increase/Decrease H_Disk to move CD-Rom to top/bottom.
Functions
DrawScreen(int Space_Left_Screen); for draw screen
DrawCPU(int H_CPU,int H_Disk); for draw CPU
void setup() {
//variable
int H_CPU,H_Disk,Space_Left_Screen;
//assign variable
H_CPU = 20;
Space_Left_Screen = 50;
H_Disk = -10;
size(360,360);
background(2,222,83);
DrawScreen(Space_Left_Screen);
DrawCPU(H_CPU,H_Disk);
}
void DrawScreen(int Space_Left_Screen)
{
//draw case of screen
fill(200);
ellipse(Space_Left_Screen+180,240,100,60);
quad(Space_Left_Screen+170,190,Space_Left_Screen+190,190,Space_Left_Screen+200,236,Space_Left_Screen+160,250); //bottom
quad(Space_Left_Screen+160,185,Space_Left_Screen+170,190,Space_Left_Screen+160,250,Space_Left_Screen+145,242); //bottom
quad(Space_Left_Screen+130,160,Space_Left_Screen+170,140,Space_Left_Screen+170,220,Space_Left_Screen+130,200); //top
quad(Space_Left_Screen+170,140,Space_Left_Screen+230,130,Space_Left_Screen+230,200,Space_Left_Screen+170,220); //top
//draw screen
fill(0,197,227);
quad(Space_Left_Screen+178,146,Space_Left_Screen+224,138,Space_Left_Screen+224,196,Space_Left_Screen+178,210);
}
void DrawCPU(int H_CPU,int H_Disk)
{
//draw CPU
fill(200);
quad(80,154-H_CPU,120,146-H_CPU,120,266,80,278); //front
quad(20,134-H_CPU,80,154-H_CPU,80,278,20,254); //side
quad(57,127-H_CPU,120,146-H_CPU,80,154-H_CPU,20,134-H_CPU); //top
noStroke();
fill(50);
quad(83,160-H_Disk,118,152-H_Disk,118,160-H_Disk,83,168-H_Disk); //CD disk1
quad(83,172-H_Disk,118,164-H_Disk,118,172-H_Disk,83,180-H_Disk); //CD disk2
}
Increase/Decrease H_CPU to increase/decrease the height of CPU.
Increase/Decrease H_Disk to move CD-Rom to top/bottom.
Functions
DrawScreen(int Space_Left_Screen); for draw screen
DrawCPU(int H_CPU,int H_Disk); for draw CPU
void setup() {
//variable
int H_CPU,H_Disk,Space_Left_Screen;
//assign variable
H_CPU = 20;
Space_Left_Screen = 50;
H_Disk = -10;
size(360,360);
background(2,222,83);
DrawScreen(Space_Left_Screen);
DrawCPU(H_CPU,H_Disk);
}
void DrawScreen(int Space_Left_Screen)
{
//draw case of screen
fill(200);
ellipse(Space_Left_Screen+180,240,100,60);
quad(Space_Left_Screen+170,190,Space_Left_Screen+190,190,Space_Left_Screen+200,236,Space_Left_Screen+160,250); //bottom
quad(Space_Left_Screen+160,185,Space_Left_Screen+170,190,Space_Left_Screen+160,250,Space_Left_Screen+145,242); //bottom
quad(Space_Left_Screen+130,160,Space_Left_Screen+170,140,Space_Left_Screen+170,220,Space_Left_Screen+130,200); //top
quad(Space_Left_Screen+170,140,Space_Left_Screen+230,130,Space_Left_Screen+230,200,Space_Left_Screen+170,220); //top
//draw screen
fill(0,197,227);
quad(Space_Left_Screen+178,146,Space_Left_Screen+224,138,Space_Left_Screen+224,196,Space_Left_Screen+178,210);
}
void DrawCPU(int H_CPU,int H_Disk)
{
//draw CPU
fill(200);
quad(80,154-H_CPU,120,146-H_CPU,120,266,80,278); //front
quad(20,134-H_CPU,80,154-H_CPU,80,278,20,254); //side
quad(57,127-H_CPU,120,146-H_CPU,80,154-H_CPU,20,134-H_CPU); //top
noStroke();
fill(50);
quad(83,160-H_Disk,118,152-H_Disk,118,160-H_Disk,83,168-H_Disk); //CD disk1
quad(83,172-H_Disk,118,164-H_Disk,118,172-H_Disk,83,180-H_Disk); //CD disk2
}
Lab 2 - Tree (with Functions)
Increase Space_Left for move tree to right side.
Decrease Space_Left for move tree to left side.
Increase Space_Top for move tree to bottom.
Decrease Space_Top for move tree to top.
Functions
DrawTree(int Space_Left,int Space_Top); for draw a tree
DrawApple(int Space_Left,int Space_Top); for draw apples
Here is my coding.
void setup()
{
//variable
int Space_Left,Space_Top;
//assign variable
Space_Left = 20;
Space_Top = 80;
//setup
size(300,500);
background(0,238,255);
DrawTree(Space_Left,Space_Top);
DrawApple(Space_Left,Space_Top);
}
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);
}
Decrease Space_Left for move tree to left side.
Increase Space_Top for move tree to bottom.
Decrease Space_Top for move tree to top.
Functions
DrawTree(int Space_Left,int Space_Top); for draw a tree
DrawApple(int Space_Left,int Space_Top); for draw apples
Here is my coding.
void setup()
{
//variable
int Space_Left,Space_Top;
//assign variable
Space_Left = 20;
Space_Top = 80;
//setup
size(300,500);
background(0,238,255);
DrawTree(Space_Left,Space_Top);
DrawApple(Space_Left,Space_Top);
}
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);
}
วันอังคารที่ 26 สิงหาคม พ.ศ. 2557
Lab 1 - Celsius to Fahrenheit
Code แปลงอุณหภูมิจาก องศาเซลเซียส เป็น องศาฟาเรนไฮต์
void setup()
{
size(200,100);
background(255);
//variable
float celsius,fahrenheit;
//assign
celsius = 25;
fill(0)
fahrenheit = ((celsius/5)*9)+32;
println(celsius+" Celsius = "+fahrenheit+" Farenheit");
text(celsius+" Celsius = "+fahrenheit+" Farenheit",30,40);
}
Lab 1 - Soccer Field
ผมเชื่อว่า ทุกๆคนรู้จักกีฬาที่ชื่อว่า ฟุตบอล (หรือถ้าเป็นคนอเมริกันเขาเรียกว่า Soccer) และเชื่อว่ามีคนจำนวนไม่น้อยที่ชื่นชอบในกีฬานี้
ถ้าพูดถึงสโมสรฟุตบอลชื่อดัง ก็มีอยู่หลายสโมสร แต่มีอยู่สโมสรนึง ที่มีความยิ่งใหญ่ มีฐานแฟนคลับที่เหนียวแน่น เป็นสโมสรชื่อดังในลีก England Premier League มาพร้อมกับคำว่า "You'll Never Walk Alone" สโมสรนั้น มีชื่อว่า LIVERPOOL !!
แน่นอนครับ ถ้ากล่าวถึง Liverpool แล้ว มันคือสโมสรที่ผมเชียร์ คือสโมสรที่ผมรักไม่เคยเปลี่ยนแปลง
แม้ว่าสโมสรจะเคยย่ำแย่แค่ไหน จะเคยตกไปอยู่อันดับที่ 7 ตอนปิดฤดูการณ์ หรือช่วงขาขึ้นอย่างฤดูการณ์ 2013-2014 ที่จบที่อันดับที่ 2 โดยแซงทีมคู่ปรับอย่าง Manchester United ที่ฤดูการณ์นั้นอยู่แค่อันดับ 7 หรือแม้กระทั่งกองหน้าตัวสำคัญอย่าง Luis Suarez จะย้ายไปอยู่ทีม Barcelona ก็ตาม แต่สุดท้ายแล้วก็ตาม แต่ผมก็ยังคงรักและเชียร์ทีมนี้อยู่
ถ้าพูดถึงสโมสร Liverpool แล้ว ก็ต้องนึกถึงสนามประจำสโมสร ที่เป็นสนามที่เก่าแก่และมีมนต์ขลังต่อทีมผู้มาเยือนอย่างสนามที่มีชื่อว่า Anfield
ด้วยเหตุนี้ ผมเลยพยายามใช้ Processing เลียนแบบสนาม Anfield ขึ้นมา แต่ด้วยความสามารถที่ผมมี ก็ทำได้เท่านี้แหละครับ =w=
ส่วนนี่คือ Code ของผมครับ
void setup()
{
//Initialization
size(550,330);
background(6,179,0);
strokeWeight(7);
stroke(255);
noFill();
//Variable
int dW,dH;
int WField,HField;
int SizeCenterCircle;
float dGoal;
float dCorner;
/*
dW = Different distance from width of background to field
dH = Different distance from height of background to field
WField = Width of field
HField = Height of field
SizeCenterCircle = Width and Height of circle at Center line
dGoal = Different distance from outline from top to outside of goal area
dCorner = Different distance from corner of field
*/
//Assign
dW = 40;
dH = 40;
WField = width-(2*dW);
HField = height-(2*dH);
SizeCenterCircle = 80;
dGoal = HField/4;
dCorner = HField/8;
//Draw
rect(dW,dH,WField,HField); //Draw Field
line(dW+(WField/2),dH,dW+(WField/2),dH+HField); //Draw Center line
ellipse(width/2,height/2,SizeCenterCircle,SizeCenterCircle); //Draw Circle at Center line
rect(dW,dH+dGoal,1.25*dGoal,2*dGoal); //Draw Left Goal Area
rect(dW+WField-(1.25*dGoal),dH+dGoal,1.25*dGoal,2*dGoal); //Draw Right Goal Area
line(dW,dH+dCorner,dW+dCorner,dH); //Draw Left-Top Corner
line(dW+WField,dH+dCorner,dW+WField-dCorner,dH); //Draw Right-Top Corner
line(dW,dH+HField-dCorner,dW+dCorner,dH+HField); //Draw Left-Bottom Corner
line(dW+WField,dH+HField-dCorner,dW+WField-dCorner,dH+HField); //Draw Right-Bottom Corner
}
dW = ความห่างจากขอบ background ด้านซ้ายจนถึงขอบสนาม
dH = ความห่างจากขอบ background ด้านบนจนถึงขอบสนาม
WField = ความกว้างของสนาม
HField = ความสูงของสนาม
SizeCenterCircle = เส้นผ่านศูนย์กลางของวงกลมกลางสนาม
dGoal = 1/4 ของ HField ซึ่ง ความกว้างของพื้นที่ผู้รักษาประตูคือ 1.25*dGoal
dCorner = ความห่างของเส้นเตะมุมจนถึงมุมของสนาม
ถ้าพูดถึงสโมสรฟุตบอลชื่อดัง ก็มีอยู่หลายสโมสร แต่มีอยู่สโมสรนึง ที่มีความยิ่งใหญ่ มีฐานแฟนคลับที่เหนียวแน่น เป็นสโมสรชื่อดังในลีก England Premier League มาพร้อมกับคำว่า "You'll Never Walk Alone" สโมสรนั้น มีชื่อว่า LIVERPOOL !!
แน่นอนครับ ถ้ากล่าวถึง Liverpool แล้ว มันคือสโมสรที่ผมเชียร์ คือสโมสรที่ผมรักไม่เคยเปลี่ยนแปลง
แม้ว่าสโมสรจะเคยย่ำแย่แค่ไหน จะเคยตกไปอยู่อันดับที่ 7 ตอนปิดฤดูการณ์ หรือช่วงขาขึ้นอย่างฤดูการณ์ 2013-2014 ที่จบที่อันดับที่ 2 โดยแซงทีมคู่ปรับอย่าง Manchester United ที่ฤดูการณ์นั้นอยู่แค่อันดับ 7 หรือแม้กระทั่งกองหน้าตัวสำคัญอย่าง Luis Suarez จะย้ายไปอยู่ทีม Barcelona ก็ตาม แต่สุดท้ายแล้วก็ตาม แต่ผมก็ยังคงรักและเชียร์ทีมนี้อยู่
ถ้าพูดถึงสโมสร Liverpool แล้ว ก็ต้องนึกถึงสนามประจำสโมสร ที่เป็นสนามที่เก่าแก่และมีมนต์ขลังต่อทีมผู้มาเยือนอย่างสนามที่มีชื่อว่า Anfield
ด้วยเหตุนี้ ผมเลยพยายามใช้ Processing เลียนแบบสนาม Anfield ขึ้นมา แต่ด้วยความสามารถที่ผมมี ก็ทำได้เท่านี้แหละครับ =w=
ส่วนนี่คือ Code ของผมครับ
void setup()
{
//Initialization
size(550,330);
background(6,179,0);
strokeWeight(7);
stroke(255);
noFill();
//Variable
int dW,dH;
int WField,HField;
int SizeCenterCircle;
float dGoal;
float dCorner;
/*
dW = Different distance from width of background to field
dH = Different distance from height of background to field
WField = Width of field
HField = Height of field
SizeCenterCircle = Width and Height of circle at Center line
dGoal = Different distance from outline from top to outside of goal area
dCorner = Different distance from corner of field
*/
//Assign
dW = 40;
dH = 40;
WField = width-(2*dW);
HField = height-(2*dH);
SizeCenterCircle = 80;
dGoal = HField/4;
dCorner = HField/8;
//Draw
rect(dW,dH,WField,HField); //Draw Field
line(dW+(WField/2),dH,dW+(WField/2),dH+HField); //Draw Center line
ellipse(width/2,height/2,SizeCenterCircle,SizeCenterCircle); //Draw Circle at Center line
rect(dW,dH+dGoal,1.25*dGoal,2*dGoal); //Draw Left Goal Area
rect(dW+WField-(1.25*dGoal),dH+dGoal,1.25*dGoal,2*dGoal); //Draw Right Goal Area
line(dW,dH+dCorner,dW+dCorner,dH); //Draw Left-Top Corner
line(dW+WField,dH+dCorner,dW+WField-dCorner,dH); //Draw Right-Top Corner
line(dW,dH+HField-dCorner,dW+dCorner,dH+HField); //Draw Left-Bottom Corner
line(dW+WField,dH+HField-dCorner,dW+WField-dCorner,dH+HField); //Draw Right-Bottom Corner
}
dW = ความห่างจากขอบ background ด้านซ้ายจนถึงขอบสนาม
dH = ความห่างจากขอบ background ด้านบนจนถึงขอบสนาม
WField = ความกว้างของสนาม
HField = ความสูงของสนาม
SizeCenterCircle = เส้นผ่านศูนย์กลางของวงกลมกลางสนาม
dGoal = 1/4 ของ HField ซึ่ง ความกว้างของพื้นที่ผู้รักษาประตูคือ 1.25*dGoal
dCorner = ความห่างของเส้นเตะมุมจนถึงมุมของสนาม
Lab 1 - Spoon and Fork
บอกเลยครับงานนี้ แตกต่างจากงาน Lab 1 - Star แน่นอน เพราะว่านั่งปั่นคืนก่อนส่ง - -.
อะไรๆมันก็ช่างมาประดังกันวันนี้ ผมปั่นงานไม่ทัน ทีหลังจะไม่ดองงานแล้วครับ TT
เพราะฉะนั้น งานนี้อาจจะรูปร่างดูไม่สวยงาม แต่ตัว Coding สามารถปรับแต่งได้มากมายแน่นอนครับ
ส่วนตรงนี้คือ code ของผม
void setup()
{
//Initialization
size(300,500);
background(255);
stroke(3);
fill(180);
//Variable
//Spoon Variable
int WSpoon , HSpoon ;
int WSpoonHandle , HSpoonHandle;
int RefX,RefY;
//Fork Variable
int WFork , HFork ;
int WForkHandle , HForkHandle;
int Space;
/*
W = Width , H = Height
Reference X , Y at left-top of spoon handle (RefX,RefY)
Space = space between spoon's handle and fork's handle
*/
//Assign Variable
//Assign Spoon
RefX = 90;
RefY = 200;
WSpoon = 50;
HSpoon = 80;
WSpoonHandle = 20;
HSpoonHandle = 150;
//Assign Fork
WFork = 50;
HFork = 80;
WForkHandle = 20;
HForkHandle = 150;
Space = 100;
//Draw Spoon
rect(RefX,RefY,WSpoonHandle,HSpoonHandle); //Draw Spoon's Handle
ellipse(RefX+(WSpoonHandle/2),RefY-(HSpoon/2),WSpoon,HSpoon); //Draw Spoon
//Draw Fork
rect(RefX+Space,RefY,WForkHandle,HForkHandle); //Draw Fork's Handle
beginShape(); //Draw Fork
vertex(RefX+Space,RefY);
vertex(RefX+Space-((WFork-WSpoonHandle)/2),RefY);
vertex(RefX+Space-((WFork-WSpoonHandle)/2),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((1*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((1*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((2*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((2*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((3*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((3*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((4*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((4*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+WFork,RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+WFork,RefY);
vertex(RefX+Space-((WFork-WSpoonHandle)/2),RefY);
endShape();
}
ต่อมา เรามาดูกันว่าตัวแปรตัวไหนบ้าง ที่สามารถปรับค่าเพื่อกำหนดขนาดส่วนไหนได้
จากภาพ สามารถเพิ่มลดค่าของตัวแปร เพื่อเพิ่มลดขนาดของส่วนต่างๆได้
ส่วนจุดสีเขียว คือจุดอ้างอิงในการวาดรูปทั้งหมด ซึ่งอยู่ตรงมุมซ้ายบนสุดของด้ามของช้อน สามารถปรับตำแหน่งได้โดยการปรับค่าของตัวแปร RefX และ RefY
ส่วนระยะห่างระหว่างมุมซ้ายบนของด้ามของช้อน กับมุมซ้ายบนของด้ามของส้อม สามารถปรับค่าความห่างได้ที่ตัวแปร Space
อะไรๆมันก็ช่างมาประดังกันวันนี้ ผมปั่นงานไม่ทัน ทีหลังจะไม่ดองงานแล้วครับ TT
เพราะฉะนั้น งานนี้อาจจะรูปร่างดูไม่สวยงาม แต่ตัว Coding สามารถปรับแต่งได้มากมายแน่นอนครับ
ส่วนตรงนี้คือ code ของผม
void setup()
{
//Initialization
size(300,500);
background(255);
stroke(3);
fill(180);
//Variable
//Spoon Variable
int WSpoon , HSpoon ;
int WSpoonHandle , HSpoonHandle;
int RefX,RefY;
//Fork Variable
int WFork , HFork ;
int WForkHandle , HForkHandle;
int Space;
/*
W = Width , H = Height
Reference X , Y at left-top of spoon handle (RefX,RefY)
Space = space between spoon's handle and fork's handle
*/
//Assign Variable
//Assign Spoon
RefX = 90;
RefY = 200;
WSpoon = 50;
HSpoon = 80;
WSpoonHandle = 20;
HSpoonHandle = 150;
//Assign Fork
WFork = 50;
HFork = 80;
WForkHandle = 20;
HForkHandle = 150;
Space = 100;
//Draw Spoon
rect(RefX,RefY,WSpoonHandle,HSpoonHandle); //Draw Spoon's Handle
ellipse(RefX+(WSpoonHandle/2),RefY-(HSpoon/2),WSpoon,HSpoon); //Draw Spoon
//Draw Fork
rect(RefX+Space,RefY,WForkHandle,HForkHandle); //Draw Fork's Handle
beginShape(); //Draw Fork
vertex(RefX+Space,RefY);
vertex(RefX+Space-((WFork-WSpoonHandle)/2),RefY);
vertex(RefX+Space-((WFork-WSpoonHandle)/2),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((1*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((1*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((2*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((2*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((3*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((3*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((4*WFork)/5),RefY-(HSpoon/2));
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+((4*WFork)/5),RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+WFork,RefY-HSpoon);
vertex(RefX+Space-((WFork-WSpoonHandle)/2)+WFork,RefY);
vertex(RefX+Space-((WFork-WSpoonHandle)/2),RefY);
endShape();
}
ต่อมา เรามาดูกันว่าตัวแปรตัวไหนบ้าง ที่สามารถปรับค่าเพื่อกำหนดขนาดส่วนไหนได้
จากภาพ สามารถเพิ่มลดค่าของตัวแปร เพื่อเพิ่มลดขนาดของส่วนต่างๆได้
ส่วนจุดสีเขียว คือจุดอ้างอิงในการวาดรูปทั้งหมด ซึ่งอยู่ตรงมุมซ้ายบนสุดของด้ามของช้อน สามารถปรับตำแหน่งได้โดยการปรับค่าของตัวแปร RefX และ RefY
ส่วนระยะห่างระหว่างมุมซ้ายบนของด้ามของช้อน กับมุมซ้ายบนของด้ามของส้อม สามารถปรับค่าความห่างได้ที่ตัวแปร Space
วันอาทิตย์ที่ 24 สิงหาคม พ.ศ. 2557
Lab 1 - Star
"จะไปเป็นดาวววววโดดเด่นบนฟากฟ้าาาาา~~"
ถ้าพูดถึงดาว แต่ละคนก็มีดาวในจินตนาการตัวเองอยู่
แต่สำหรับผมแล้ว ถ้าพูดถึงดาว ผมนึกถึงสิ่งนี้
ไคบะ : เทิร์นของข้า ขอสังเวยมอนสเตอร์ 3 ตัว เพื่อเรียก Blue Eye White Dragon !!
ยูกิ : หึ เจ้าจบสิ้นแล้ว ขอเปิดการ์ดกับดัก "คำสาปดาวหกแฉก" !!
ไคบะ : ม่ายยยยยยยยยยยยยยยยยยยยย~~~
ใช่แล้วครับ มันคือ การ์ดกับดัก "คำสาปดาวหกแฉก" จากการ์ตูนเรื่อง YU-GI-OH แม้เรื่องนี้มันจะเป็นการ์ตูนที่เก่าแล้ว แต่การ์ดใบนี้ ผมยังจำมันได้เสมอ
ว่าแล้ว ผมก็ใช้ Processing วาดรูปเลียนแบบการ์ดใบนี้เอาซะเลย
ส่วนนี่ก็คือ code ของผม
void setup()
{
// initialization
size(300,300);
background(0);
strokeWeight(4);
stroke(255,255,0);
translate(width/2,height/2);
// variable
int CenterStarX,CenterStarY;
int WidthStar,HeightStar;
int d;
int SpaceBetweenCircle;
float RVertical,RSqrt,RCircle;
// assign variable
CenterStarX = 0;
CenterStarY = 0;
WidthStar = 160;
HeightStar = 184;
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));
}
ขอบ่นแปปนึง
อย่างแรกเลย ผมเกลียดระบบพิกัดแกน X,Y ของ Processing มากเลย
ทำไมรึ ? ก็เพราะว่ามันไม่เหมือนกับระบบพิกัดฉากในวิชาคณิตศาสตร์ไงล่ะครับ
จุด (0,0) ไปอยู่มุมซ้ายบนของ background ผมเลยใช้คำสั่ง translation(width/2,height/2) เพื่อให้จุด (0,0) อยู่ตรงกลาง
และก็อีกอย่างที่ทำให้ผมเกลียดมัน คือ แกน Y เมื่อเลื่อนขึ้นด้านบน แทนที่จะเป็นค่า +Y ดันเป็น -Y ซะอย่างงั้น
ช่างมันเถอะ !! เรามาต่อกันดีกว่า
รูปดาวรูปนี้ เพิ่มใช้เป็นสามเหลี่ยม 2 รูปกลับหัวแล้วมาซ้อนกัน อีกทั้งยังใส่วงกลม 2 วงซ้อนกัน จนกลายเป็นดาวอย่างที่เห็น
ต่อมา จาก code ด้านบน เราสามารถแก้อะไรได้บ้าง
CenterStarX : พิกัด X ของจุดศูนย์กลางของดาว
CenterStarY : พิกัด Y ของจุดศูนย์กลางของดาว
HeightStar : ความสูงของดาว
WidthStar : ความกว้างของดาว
d : ระยะห่างระหว่างฐานของสามเหลี่ยม
แล้วจากการที่เราสามารถปรับขนาดของดาวได้ ทำให้บางครั้งยอดแหลมของดาวอาจจะทะลุออกนอกวงกลมไป ทำให้ผมต้องทำการปรับขนาดของวงกลมให้พอดีกับยอดของดาว แต่ถ้าให้ผมมานั่งปรับเองทุกครั้งที่ปรับขนาดของดาว ก็คงจะเหนื่อย ผมก็เลยต้องเขียนโปรแกรมให้วงกลมปรับขนาดเอง
อย่างแรก เราต้องหารัศมีของวงกลมก่อน โดยรัศมีของวงกลม คือ ตั้งแต่จุดศูนย์กลางของดาว จนถึงยอดแหลมของดาว แต่ทว่า มันมีตั้งหลายยอดแหลม แล้วจะใช้รัศมีของยอดแหลมไหนล่ะ
งั้นเอาอย่างงี้ละกัน ผมดูคร่าวๆแล้ว มันมีรัศมีอยู่ 2 ค่า คือ รัศมีจากจุดศูนย์กลางไปยอดแนวตั้ง กับ รัศมีจากจุดศูนย์กลางไปยอดด้านข้าง
จากรูป RVertical = HeightStar/2
ส่วน RSqrt หาโดยทฤษฏีบทที่แสนยาก (หรอ)
ด้วยทฤษฏีบทของพีทาโกรัส
RSqrt^2 = (d/2)^2 + (WidthStar/2)^2
เพระาฉะนั้น
RSqrt = sqrt((d/2)^2 + (WidthStar/2)^2)
แล้วทีนี้ เราจะใช้รัศมีค่าไหนในการสร้างวงกลมล่ะ ?
สิ่งที่ผมต้องการ ก็แค่ต้องการไม่ให้ยอดแหลมใดๆเกินออกมานอกวงกลม ดังนั้น ผมจึงเลือกใช้รัศมีที่มีค่ามากที่สุดมาเป็นรัศมีของวงกลม ด้วย code นี้
if(RVertical > RSqrt)
{
RCircle = RVertical;
}
else
{
RCircle = RSqrt;
}
ทีนี้ ผมก็จะได้ค่า RCircle มาเป็นรัศมีของวงกลมวงในแล้ว เย้ๆ
ส่วนวงกลมวงนอก ผมก็สร้างตัวแปรชื่อ SpaceBetweenCircle เพื่อเก็บค่าระยะห่างระหว่างวงกลมวงนอกและวงกลมวงใน
เวลาผมสร้างวงกลมวงนอก ผมก็นำ RCircle มาบวกกับ SpaceBetweenCircle แค่นี้ผมก็ได้วงกลมวงนอกแล้ว
แต่สุดท้าย เวลาสร้างรูป ผมต้องสร้างวงกลมวงนอกก่อน ตามด้วยวงกลมวงใน และปิดท้ายด้วยสร้างดาว เป็นอันเสร็จสมบูรณ์ เย้
ถ้าพูดถึงดาว แต่ละคนก็มีดาวในจินตนาการตัวเองอยู่
แต่สำหรับผมแล้ว ถ้าพูดถึงดาว ผมนึกถึงสิ่งนี้
ไคบะ : เทิร์นของข้า ขอสังเวยมอนสเตอร์ 3 ตัว เพื่อเรียก Blue Eye White Dragon !!
ยูกิ : หึ เจ้าจบสิ้นแล้ว ขอเปิดการ์ดกับดัก "คำสาปดาวหกแฉก" !!
ไคบะ : ม่ายยยยยยยยยยยยยยยยยยยยย~~~
ใช่แล้วครับ มันคือ การ์ดกับดัก "คำสาปดาวหกแฉก" จากการ์ตูนเรื่อง YU-GI-OH แม้เรื่องนี้มันจะเป็นการ์ตูนที่เก่าแล้ว แต่การ์ดใบนี้ ผมยังจำมันได้เสมอ
ว่าแล้ว ผมก็ใช้ Processing วาดรูปเลียนแบบการ์ดใบนี้เอาซะเลย
ส่วนนี่ก็คือ code ของผม
void setup()
{
// initialization
size(300,300);
background(0);
strokeWeight(4);
stroke(255,255,0);
translate(width/2,height/2);
// variable
int CenterStarX,CenterStarY;
int WidthStar,HeightStar;
int d;
int SpaceBetweenCircle;
float RVertical,RSqrt,RCircle;
// assign variable
CenterStarX = 0;
CenterStarY = 0;
WidthStar = 160;
HeightStar = 184;
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));
}
ขอบ่นแปปนึง
อย่างแรกเลย ผมเกลียดระบบพิกัดแกน X,Y ของ Processing มากเลย
ทำไมรึ ? ก็เพราะว่ามันไม่เหมือนกับระบบพิกัดฉากในวิชาคณิตศาสตร์ไงล่ะครับ
จุด (0,0) ไปอยู่มุมซ้ายบนของ background ผมเลยใช้คำสั่ง translation(width/2,height/2) เพื่อให้จุด (0,0) อยู่ตรงกลาง
และก็อีกอย่างที่ทำให้ผมเกลียดมัน คือ แกน Y เมื่อเลื่อนขึ้นด้านบน แทนที่จะเป็นค่า +Y ดันเป็น -Y ซะอย่างงั้น
ช่างมันเถอะ !! เรามาต่อกันดีกว่า
รูปดาวรูปนี้ เพิ่มใช้เป็นสามเหลี่ยม 2 รูปกลับหัวแล้วมาซ้อนกัน อีกทั้งยังใส่วงกลม 2 วงซ้อนกัน จนกลายเป็นดาวอย่างที่เห็น
ต่อมา จาก code ด้านบน เราสามารถแก้อะไรได้บ้าง
CenterStarX : พิกัด X ของจุดศูนย์กลางของดาว
CenterStarY : พิกัด Y ของจุดศูนย์กลางของดาว
HeightStar : ความสูงของดาว
WidthStar : ความกว้างของดาว
d : ระยะห่างระหว่างฐานของสามเหลี่ยม
แล้วจากการที่เราสามารถปรับขนาดของดาวได้ ทำให้บางครั้งยอดแหลมของดาวอาจจะทะลุออกนอกวงกลมไป ทำให้ผมต้องทำการปรับขนาดของวงกลมให้พอดีกับยอดของดาว แต่ถ้าให้ผมมานั่งปรับเองทุกครั้งที่ปรับขนาดของดาว ก็คงจะเหนื่อย ผมก็เลยต้องเขียนโปรแกรมให้วงกลมปรับขนาดเอง
อย่างแรก เราต้องหารัศมีของวงกลมก่อน โดยรัศมีของวงกลม คือ ตั้งแต่จุดศูนย์กลางของดาว จนถึงยอดแหลมของดาว แต่ทว่า มันมีตั้งหลายยอดแหลม แล้วจะใช้รัศมีของยอดแหลมไหนล่ะ
งั้นเอาอย่างงี้ละกัน ผมดูคร่าวๆแล้ว มันมีรัศมีอยู่ 2 ค่า คือ รัศมีจากจุดศูนย์กลางไปยอดแนวตั้ง กับ รัศมีจากจุดศูนย์กลางไปยอดด้านข้าง
จากรูป RVertical = HeightStar/2
ส่วน RSqrt หาโดยทฤษฏีบทที่แสนยาก (หรอ)
ด้วยทฤษฏีบทของพีทาโกรัส
RSqrt^2 = (d/2)^2 + (WidthStar/2)^2
เพระาฉะนั้น
RSqrt = sqrt((d/2)^2 + (WidthStar/2)^2)
แล้วทีนี้ เราจะใช้รัศมีค่าไหนในการสร้างวงกลมล่ะ ?
สิ่งที่ผมต้องการ ก็แค่ต้องการไม่ให้ยอดแหลมใดๆเกินออกมานอกวงกลม ดังนั้น ผมจึงเลือกใช้รัศมีที่มีค่ามากที่สุดมาเป็นรัศมีของวงกลม ด้วย code นี้
if(RVertical > RSqrt)
{
RCircle = RVertical;
}
else
{
RCircle = RSqrt;
}
ทีนี้ ผมก็จะได้ค่า RCircle มาเป็นรัศมีของวงกลมวงในแล้ว เย้ๆ
ส่วนวงกลมวงนอก ผมก็สร้างตัวแปรชื่อ SpaceBetweenCircle เพื่อเก็บค่าระยะห่างระหว่างวงกลมวงนอกและวงกลมวงใน
เวลาผมสร้างวงกลมวงนอก ผมก็นำ RCircle มาบวกกับ SpaceBetweenCircle แค่นี้ผมก็ได้วงกลมวงนอกแล้ว
แต่สุดท้าย เวลาสร้างรูป ผมต้องสร้างวงกลมวงนอกก่อน ตามด้วยวงกลมวงใน และปิดท้ายด้วยสร้างดาว เป็นอันเสร็จสมบูรณ์ เย้
วันพุธที่ 20 สิงหาคม พ.ศ. 2557
Lab 1 - Hope and Dream (with Variable)
Increase/Decrease Left_M for move a man to right/left.
Increase/Decrease Left_M for move a woman to right/left.
From Lab-0. It has space between us.
I feel lonely. I miss her.
So I'll go to right and make her to left.
So we'll nearly and don't feel alone.
Here is my coding
void setup()
{
//variable
int Left_M,Left_F;
//assign variable
Left_M = 60; //inc = man to right , dec = man to left
Left_F = -60; //inc = woman to right , dec = woman to left
size(500,300);
background(134,255,74);
noStroke();
//Draw man
fill(255,214,156); //face
ellipse(Left_M+150,100,30,30); //face
fill(0); //hair
beginShape(); //hair
vertex(Left_M+133,95);//1
bezierVertex(Left_M+138,82,Left_M+162,82,Left_M+167,95); //2
vertex(Left_M+133,95);//3
endShape();
fill(0,151,252); //shirt
beginShape(); //shirt
vertex(Left_M+135,115); //1
vertex(Left_M+165,115); //2
vertex(Left_M+190,140); //3
vertex(Left_M+180,150); //4
vertex(Left_M+165,135); //5
vertex(Left_M+165,180); //6
vertex(Left_M+135,180); //7
vertex(Left_M+135,135); //8
vertex(Left_M+120,150); //9
vertex(Left_M+110,140); //10
vertex(Left_M+135,115); //11,1
endShape();
fill(20,25,33); //jeans
beginShape(); //jeans
vertex(Left_M+165,180); //1
vertex(Left_M+170,245); //2
vertex(Left_M+155,245); //3
vertex(Left_M+150,200); //4
vertex(Left_M+145,245); //5
vertex(Left_M+130,245); //6
vertex(Left_M+135,180); //7
endShape();
//Draw woman
fill(255,214,156); //face
ellipse(Left_F+350,100,30,30); //face
fill(255,0,238); //shirt
beginShape(); //shirt
vertex(Left_F+335,115); //1
vertex(Left_F+365,115); //2
vertex(Left_F+390,140); //3
vertex(Left_F+380,150); //4
vertex(Left_F+365,135); //5
vertex(Left_F+365,180); //6
vertex(Left_F+335,180); //7
vertex(Left_F+335,135); //8
vertex(Left_F+320,150); //9
vertex(Left_F+310,140); //10
vertex(Left_F+335,115); //11,1
endShape();
fill(0); //hair
beginShape(); //hair
vertex(Left_F+360,93); //1
vertex(Left_F+340,93); //2
vertex(Left_F+340,125); //3
vertex(Left_F+330,125); //4
vertex(Left_F+330,93); //5
bezierVertex(Left_F+335,72,Left_F+365,72,Left_F+370,93); //6
vertex(Left_F+370,125); //7
vertex(Left_F+360,125); //8
vertex(Left_F+360,93); //9
endShape();
fill(20,25,33); //skirt
beginShape(); //skirt
vertex(Left_F+365,180); //1
vertex(Left_F+380,245); //2
vertex(Left_F+320,245); //3
vertex(Left_F+335,180); //4
endShape();
//Draw HEART !!
beginShape();
fill(255,0,0);
vertex(250,100); //1
bezierVertex(200,60,220,20,250,40);
bezierVertex(280,20,300,60,250,100);
endShape();
}
Increase/Decrease Left_M for move a woman to right/left.
From Lab-0. It has space between us.
I feel lonely. I miss her.
So I'll go to right and make her to left.
So we'll nearly and don't feel alone.
Here is my coding
void setup()
{
//variable
int Left_M,Left_F;
//assign variable
Left_M = 60; //inc = man to right , dec = man to left
Left_F = -60; //inc = woman to right , dec = woman to left
size(500,300);
background(134,255,74);
noStroke();
//Draw man
fill(255,214,156); //face
ellipse(Left_M+150,100,30,30); //face
fill(0); //hair
beginShape(); //hair
vertex(Left_M+133,95);//1
bezierVertex(Left_M+138,82,Left_M+162,82,Left_M+167,95); //2
vertex(Left_M+133,95);//3
endShape();
fill(0,151,252); //shirt
beginShape(); //shirt
vertex(Left_M+135,115); //1
vertex(Left_M+165,115); //2
vertex(Left_M+190,140); //3
vertex(Left_M+180,150); //4
vertex(Left_M+165,135); //5
vertex(Left_M+165,180); //6
vertex(Left_M+135,180); //7
vertex(Left_M+135,135); //8
vertex(Left_M+120,150); //9
vertex(Left_M+110,140); //10
vertex(Left_M+135,115); //11,1
endShape();
fill(20,25,33); //jeans
beginShape(); //jeans
vertex(Left_M+165,180); //1
vertex(Left_M+170,245); //2
vertex(Left_M+155,245); //3
vertex(Left_M+150,200); //4
vertex(Left_M+145,245); //5
vertex(Left_M+130,245); //6
vertex(Left_M+135,180); //7
endShape();
//Draw woman
fill(255,214,156); //face
ellipse(Left_F+350,100,30,30); //face
fill(255,0,238); //shirt
beginShape(); //shirt
vertex(Left_F+335,115); //1
vertex(Left_F+365,115); //2
vertex(Left_F+390,140); //3
vertex(Left_F+380,150); //4
vertex(Left_F+365,135); //5
vertex(Left_F+365,180); //6
vertex(Left_F+335,180); //7
vertex(Left_F+335,135); //8
vertex(Left_F+320,150); //9
vertex(Left_F+310,140); //10
vertex(Left_F+335,115); //11,1
endShape();
fill(0); //hair
beginShape(); //hair
vertex(Left_F+360,93); //1
vertex(Left_F+340,93); //2
vertex(Left_F+340,125); //3
vertex(Left_F+330,125); //4
vertex(Left_F+330,93); //5
bezierVertex(Left_F+335,72,Left_F+365,72,Left_F+370,93); //6
vertex(Left_F+370,125); //7
vertex(Left_F+360,125); //8
vertex(Left_F+360,93); //9
endShape();
fill(20,25,33); //skirt
beginShape(); //skirt
vertex(Left_F+365,180); //1
vertex(Left_F+380,245); //2
vertex(Left_F+320,245); //3
vertex(Left_F+335,180); //4
endShape();
//Draw HEART !!
beginShape();
fill(255,0,0);
vertex(250,100); //1
bezierVertex(200,60,220,20,250,40);
bezierVertex(280,20,300,60,250,100);
endShape();
}
Lab 1 - Favourite Subject/Topic (with Variable)
Increase/Decrease Space_Left_Screen to move screen to right/left.
Increase/Decrease H_CPU to increase/decrease the height of CPU.
Increase/Decrease H_Disk to move CD-Rom to top/bottom.
void setup() {
//variable
int H_CPU,H_Disk,Space_Left_Screen;
//assign variable
H_CPU = 20;
Space_Left_Screen = 50;
H_Disk = -10;
size(360,360);
background(2,222,83);
//draw case of screen
fill(200);
ellipse(Space_Left_Screen+180,240,100,60);
quad(Space_Left_Screen+170,190,Space_Left_Screen+190,190,Space_Left_Screen+200,236,Space_Left_Screen+160,250); //bottom
quad(Space_Left_Screen+160,185,Space_Left_Screen+170,190,Space_Left_Screen+160,250,Space_Left_Screen+145,242); //bottom
quad(Space_Left_Screen+130,160,Space_Left_Screen+170,140,Space_Left_Screen+170,220,Space_Left_Screen+130,200); //top
quad(Space_Left_Screen+170,140,Space_Left_Screen+230,130,Space_Left_Screen+230,200,Space_Left_Screen+170,220); //top
//draw screen
fill(0,197,227);
quad(Space_Left_Screen+178,146,Space_Left_Screen+224,138,Space_Left_Screen+224,196,Space_Left_Screen+178,210);
//draw CPU
fill(200);
quad(80,154-H_CPU,120,146-H_CPU,120,266,80,278); //front
quad(20,134-H_CPU,80,154-H_CPU,80,278,20,254); //side
quad(57,127-H_CPU,120,146-H_CPU,80,154-H_CPU,20,134-H_CPU); //top
noStroke();
fill(50);
quad(83,160-H_Disk,118,152-H_Disk,118,160-H_Disk,83,168-H_Disk); //CD disk1
quad(83,172-H_Disk,118,164-H_Disk,118,172-H_Disk,83,180-H_Disk); //CD disk2
}
Increase/Decrease H_CPU to increase/decrease the height of CPU.
Increase/Decrease H_Disk to move CD-Rom to top/bottom.
void setup() {
//variable
int H_CPU,H_Disk,Space_Left_Screen;
//assign variable
H_CPU = 20;
Space_Left_Screen = 50;
H_Disk = -10;
size(360,360);
background(2,222,83);
//draw case of screen
fill(200);
ellipse(Space_Left_Screen+180,240,100,60);
quad(Space_Left_Screen+170,190,Space_Left_Screen+190,190,Space_Left_Screen+200,236,Space_Left_Screen+160,250); //bottom
quad(Space_Left_Screen+160,185,Space_Left_Screen+170,190,Space_Left_Screen+160,250,Space_Left_Screen+145,242); //bottom
quad(Space_Left_Screen+130,160,Space_Left_Screen+170,140,Space_Left_Screen+170,220,Space_Left_Screen+130,200); //top
quad(Space_Left_Screen+170,140,Space_Left_Screen+230,130,Space_Left_Screen+230,200,Space_Left_Screen+170,220); //top
//draw screen
fill(0,197,227);
quad(Space_Left_Screen+178,146,Space_Left_Screen+224,138,Space_Left_Screen+224,196,Space_Left_Screen+178,210);
//draw CPU
fill(200);
quad(80,154-H_CPU,120,146-H_CPU,120,266,80,278); //front
quad(20,134-H_CPU,80,154-H_CPU,80,278,20,254); //side
quad(57,127-H_CPU,120,146-H_CPU,80,154-H_CPU,20,134-H_CPU); //top
noStroke();
fill(50);
quad(83,160-H_Disk,118,152-H_Disk,118,160-H_Disk,83,168-H_Disk); //CD disk1
quad(83,172-H_Disk,118,164-H_Disk,118,172-H_Disk,83,180-H_Disk); //CD disk2
}
Lab 1 - Tree (with Variable)
Increase Space_Left for move tree to right side.
Decrease Space_Left for move tree to left side.
Increase Space_Top for move tree to bottom.
Decrease Space_Top for move tree to top.
Example
Space_Left = 20
It's mean move to right side 20 points.
Space_Top = 80
It's mean move to bottom 80 points.
Here is my coding.
void setup()
{
//variable
int Space_Left,Space_Top;
//assign variable
Space_Left = 20;
Space_Top = 80;
//setup
size(300,500);
background(0,238,255);
//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);
//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);
}
Decrease Space_Left for move tree to left side.
Increase Space_Top for move tree to bottom.
Decrease Space_Top for move tree to top.
Example
Space_Left = 20
It's mean move to right side 20 points.
Space_Top = 80
It's mean move to bottom 80 points.
Here is my coding.
void setup()
{
//variable
int Space_Left,Space_Top;
//assign variable
Space_Left = 20;
Space_Top = 80;
//setup
size(300,500);
background(0,238,255);
//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);
//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);
}
วันพฤหัสบดีที่ 14 สิงหาคม พ.ศ. 2557
Lab 0 - Hope and Dream
My Hope and Dream is having a nice family in the future.
Here is my coding
void setup()
{
size(500,300);
background(134,255,74);
noStroke();
//Draw man
fill(255,214,156); //face
ellipse(150,100,30,30); //face
fill(0); //hair
beginShape(); //hair
vertex(133,95);//1
bezierVertex(138,82,162,82,167,95); //2
vertex(133,95);//3
endShape();
fill(0,151,252); //shirt
beginShape(); //shirt
vertex(135,115); //1
vertex(165,115); //2
vertex(190,140); //3
vertex(180,150); //4
vertex(165,135); //5
vertex(165,180); //6
vertex(135,180); //7
vertex(135,135); //8
vertex(120,150); //9
vertex(110,140); //10
vertex(135,115); //11,1
endShape();
fill(20,25,33); //jeans
beginShape(); //jeans
vertex(165,180); //1
vertex(170,245); //2
vertex(155,245); //3
vertex(150,200); //4
vertex(145,245); //5
vertex(130,245); //6
vertex(135,180); //7
endShape();
//Draw woman
fill(255,214,156); //face
ellipse(350,100,30,30); //face
fill(255,0,238); //shirt
beginShape(); //shirt
vertex(335,115); //1
vertex(365,115); //2
vertex(390,140); //3
vertex(380,150); //4
vertex(365,135); //5
vertex(365,180); //6
vertex(335,180); //7
vertex(335,135); //8
vertex(320,150); //9
vertex(310,140); //10
vertex(335,115); //11,1
endShape();
fill(0); //hair
beginShape(); //hair
vertex(360,93); //1
vertex(340,93); //2
vertex(340,125); //3
vertex(330,125); //4
vertex(330,93); //5
bezierVertex(335,72,365,72,370,93); //6
vertex(370,125); //7
vertex(360,125); //8
vertex(360,93); //9
endShape();
fill(20,25,33); //skirt
beginShape(); //skirt
vertex(365,180); //1
vertex(380,245); //2
vertex(320,245); //3
vertex(335,180); //4
endShape();
//Draw HEART !!
beginShape();
fill(255,0,0);
vertex(250,100); //1
bezierVertex(200,60,220,20,250,40);
bezierVertex(280,20,300,60,250,100);
endShape();
}
Here is my coding
void setup()
{
size(500,300);
background(134,255,74);
noStroke();
//Draw man
fill(255,214,156); //face
ellipse(150,100,30,30); //face
fill(0); //hair
beginShape(); //hair
vertex(133,95);//1
bezierVertex(138,82,162,82,167,95); //2
vertex(133,95);//3
endShape();
fill(0,151,252); //shirt
beginShape(); //shirt
vertex(135,115); //1
vertex(165,115); //2
vertex(190,140); //3
vertex(180,150); //4
vertex(165,135); //5
vertex(165,180); //6
vertex(135,180); //7
vertex(135,135); //8
vertex(120,150); //9
vertex(110,140); //10
vertex(135,115); //11,1
endShape();
fill(20,25,33); //jeans
beginShape(); //jeans
vertex(165,180); //1
vertex(170,245); //2
vertex(155,245); //3
vertex(150,200); //4
vertex(145,245); //5
vertex(130,245); //6
vertex(135,180); //7
endShape();
//Draw woman
fill(255,214,156); //face
ellipse(350,100,30,30); //face
fill(255,0,238); //shirt
beginShape(); //shirt
vertex(335,115); //1
vertex(365,115); //2
vertex(390,140); //3
vertex(380,150); //4
vertex(365,135); //5
vertex(365,180); //6
vertex(335,180); //7
vertex(335,135); //8
vertex(320,150); //9
vertex(310,140); //10
vertex(335,115); //11,1
endShape();
fill(0); //hair
beginShape(); //hair
vertex(360,93); //1
vertex(340,93); //2
vertex(340,125); //3
vertex(330,125); //4
vertex(330,93); //5
bezierVertex(335,72,365,72,370,93); //6
vertex(370,125); //7
vertex(360,125); //8
vertex(360,93); //9
endShape();
fill(20,25,33); //skirt
beginShape(); //skirt
vertex(365,180); //1
vertex(380,245); //2
vertex(320,245); //3
vertex(335,180); //4
endShape();
//Draw HEART !!
beginShape();
fill(255,0,0);
vertex(250,100); //1
bezierVertex(200,60,220,20,250,40);
bezierVertex(280,20,300,60,250,100);
endShape();
}
วันพุธที่ 13 สิงหาคม พ.ศ. 2557
Lab 0 - Favourite Subject/Topic
My favourite Subject/Topic is COMPUTER !!
Here is my coding
void setup() {
size(360,360);
background(2,222,83);
//draw case of screen
fill(200);
ellipse(180,240,100,60);
quad(170,190,190,190,200,236,160,250); //bottom
quad(160,185,170,190,160,250,145,242); //bottom
quad(130,160,170,140,170,220,130,200); //top
quad(170,140,230,130,230,200,170,220); //top
//draw screen
fill(0,197,227);
quad(178,146,224,138,224,196,178,210);
//draw CPU
fill(200);
quad(80,154,120,146,120,266,80,278); //front
quad(20,134,80,154,80,278,20,254); //side
quad(57,127,120,146,80,154,20,134); //top
noStroke();
fill(50);
quad(83,160,118,152,118,160,83,168); //CD disk1
quad(83,172,118,164,118,172,83,180); //CD disk2
}
Here is my coding
void setup() {
size(360,360);
background(2,222,83);
//draw case of screen
fill(200);
ellipse(180,240,100,60);
quad(170,190,190,190,200,236,160,250); //bottom
quad(160,185,170,190,160,250,145,242); //bottom
quad(130,160,170,140,170,220,130,200); //top
quad(170,140,230,130,230,200,170,220); //top
//draw screen
fill(0,197,227);
quad(178,146,224,138,224,196,178,210);
//draw CPU
fill(200);
quad(80,154,120,146,120,266,80,278); //front
quad(20,134,80,154,80,278,20,254); //side
quad(57,127,120,146,80,154,20,134); //top
noStroke();
fill(50);
quad(83,160,118,152,118,160,83,168); //CD disk1
quad(83,172,118,164,118,172,83,180); //CD disk2
}
สมัครสมาชิก:
บทความ (Atom)