++ รู้จักใจตนเอง แล้วชีวิตจะมีสุข ++
Group Blog
 
 
สิงหาคม 2550
 
 1234
567891011
12131415161718
19202122232425
262728293031 
 
19 สิงหาคม 2550
 
All Blogs
 
การเขียนกราฟโดยใช้จุด

การเขียนกราฟโดยทั่วไปจะมีแกน x,y และมีค่า ลบ บวก และจุด 0,0 จะอยู่ตรงกลางกราฟที่จุดตัด x,y

แต่ในระบบพิกัดจุดในหน้าจอคอมพิวเตอร์จะไม่มีค่าที่เป็นลบ มีแต่บวกเท่านั้น ซึ่งจุด 0,0 จะอยู่ที่มุมบนซ้าย เลื่อนไปขวาเป็นบวก เลื่อนลงล่างก็เป็นบวก

ซึ่งการเขียนโปรแกรมเพื่อจำลองพิกัดจุดกราฟเราต้องทำการแปลงค่าเหล่านั้น

ตัวอย่างต่อไปนี้ ผู้เขียนได้แก้ปัญหาและใช้ตัวอย่างภาษา java ในการวาดจุดแต่ละจุดเพื่อให้จุดเหล่านั้นกลายเป็นกราฟตามต้องการ ซึ่งเป็นการแก้ปัญหาเบื้องต้น

และสามารถนำไปประยุกต์ใช้ในการเขียนกราฟตามสมการทางคณิตศาตร์ได้


Example

ตัวอย่างต่อไปนี้ จะการ plot กราฟโดยใช้หลักการ plot จุดแต่ละจุดจนกลายเป็นกราฟ
โดยจะยกตัวอย่างโค้ดภาษา Java บางส่วนเท่านั้น


.............................................

/* พิกัดจุดศูนย์กลาง x,y บนหน้าจอ ไม่ใช่จุด ศก จำลองบนกราฟ
จุด ศก บนกราฟจะเป็น 0,0 ซึ่งเรากำหนดพิกัดจุด 0,0 นี้ที่พิกัด 200,200
ซึ่งในความเป็นจริงเราอาจจะกำหนดที่พิกัดไหนบนหน้าจอก็ได้
*/


double x_center = 200;
double y_center = 200;


.............................................
// วาดจุด 1 จุด
public void writePixel(Graphics g, double x, double y){
g.drawOval((int) x, (int) y, (int) 0.01,(int) 0.01);
}

// สมการ
public double f(double x) {
double y = x;
return y;
}

// การ plot กราฟโดยใช้หลักการ plot จุดแต่ละจุดจนกลายเป็นกราฟ
public void drawGraph(Graphics g){

double x=0.0; // ตัวแปรผกผันที่มีการเพิ่มขึ้นเรื่อยๆ
double y=0.0; // ค่า y ที่ได้จากสมการ
double xPoint = 0; // พิกัดจุด x บนหน้าจอที่จะ plot
double yPoint = 0;// พิกัดจุด y บนหน้าจอที่จะ plot

/****** วนลูป plot จุดแต่ละจุดตามสมการ y = f(x) ********/

while (x<200){
// เส้นแรก x เป็นบวก
y=f(x);


/*
เนื่องจากพิกัดจุดจริงบนหน้าจอกับค่าที่ได้จากสมการไม่เหมือนกัน ดังนั้นจึงต้องทำการแปลงค่าที่ได้ให้สัมพันธ์กันก่อน โดย
xPoint=x_center+x , คือ พิกัดจุด X จริงบนหน้าจอจะเท่ากับ ค่าจุด ศก. บวกด้วยตัวแปร x ผกผัน เพราะจุด ศก.(0,0)จากกราฟ จะไม่ใช่จุดเดียวกับจุด 0,0 บนพิกัดหน้าจอ ดังนั้นเมื่อตัวแปร x เพิ่ม(+)พิกัดจุด X ก็จะเป็นบวกตาม

yPoint=y_center-y, มีหลักการเช่นเดียวกับ พิกัดจุด X แต่ว่า พิกัดจุด Y บนหน้าจอจะตรงข้ามกับระบบพิกัดจุดบนกราฟจำลอง คือ
พิกัดจุด Y บนหน้าจอ -> ขึ้น เป็นลบ ,ลง เป็นบวก แต่เนื่องจากค่า y ที่ได้จากสมการเป็นบวก
ดังนั้น พิกัดจุด Y บนหน้าจอจึงต้องลดค่าลง คือ ลดลงเรื่อยๆ
*/


xPoint = x_center+x;
yPoint = y_center-y;
writePixel(g,xPoint,yPoint); // plot จุด


// เส้นที่สอง x เป็นลบ
y = f(-x);

/*
เนื่องจากเส้นกราฟค่าตัวแปรผกผัน x มีทั้งค่าที่เป็นบวกและลบ ดังนั้น xPoint=x_center-x, ก็คือ
เมื่อค่าตัวแปรผกผัน x เป็นลบ พิกัดจุด X บนหน้าจอต้องมีค่าลดลงด้วย เืพื่อให้การ plot จุดกราฟจะได้พิกัดที่ถูกต้องบนกราฟ

ส่วนค่าพิกัดจุด Y บนหน้าจอจะตรงข้ามกับระบบพิกัดจุดบนกราฟจำลอง ดังที่ได้อธิบายมาแล้ว
ดังนั้น ถ้าต้องการพิกัดจุด Y บนหน้าจอที่เป็นจริง ต้องทำการลบค่า y ออก
เพราะการใส่ค่าลบจะรองรับทุกๆผลลัพธ์จากสมการ ไม่ว่าจะเป็นบวกหรือลบ
*/


xPoint = x_center-x;
yPoint = y_center-y;
writePixel(g,xPoint,yPoint);// plot จุด
x+=0.1; // เพิ่ม ค่า x ขึ้นเรื่อยๆ


}// end loop
}






Create Date : 19 สิงหาคม 2550
Last Update : 23 สิงหาคม 2550 10:52:26 น. 4 comments
Counter : 1024 Pageviews.

 
ไม่เข้าใจหิดเดียว.....อือๆๆๆ


โดย: noom IP: 202.28.68.33 วันที่: 11 กันยายน 2550 เวลา:13:06:57 น.  

 
ก็คือการเลื่อน coordinate ของจอคอมนั่นเอง

ในคอม บนซ้ายคือ (0,0) ล่างขวา คือ (width,height)

ก็แค่เลื่อน (0,0) มาให้ตรงกลาจอซะเท่านั้น


โดย: ตาเฒ่า IP: 58.8.21.58 วันที่: 20 กันยายน 2550 เวลา:9:50:40 น.  

 
สวัสดีทุกคนไม่เข้าใจเลย ปัญญาอ่อนแน่ๆ


โดย: ฮิราศ IP: 203.172.199.254 วันที่: 11 กุมภาพันธ์ 2551 เวลา:23:32:30 น.  

 
เข้าใจมาก


โดย: ยายเเก่ IP: 118.174.173.116 วันที่: 26 สิงหาคม 2551 เวลา:18:54:26 น.  

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 
รหัสส่งข้อความ
กรุณายืนยันรหัสส่งข้อความ

viroot
Location :


[ดู Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed

ผู้ติดตามบล็อก : 1 คน [?]




Google

ค้นหาทั่วโลกค้าหาในพันทิบ
Friends' blogs
[Add viroot's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.