|
| 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | |
|
|
|
|
|
|
|
การแก้ปัญหาเมื่อมีการป้อนค่าเกินสเกลในตาราง
เมื่อมีการป้อนค่าเกินกว่าสเกลในตาราง ถ้าค่าสเกลตายตัวจะทำให้เกิดปัญหา คือ กราฟที่ได้จะออกนอกกรอบตารางกราฟ การแก้ปัญหานี้ผู้เขียนได้สร้างคลาส Step สำหรับคำนวณอัตราการเพิ่มสเกล เมื่อมีการป้อนค่าเข้าไป โดยมีฟังก์ชั่น
findStep(int num) สำหรับคำนวณหาค่าอัตราการเพิ่มสเกล
Example
int scalePlot = 40; // ระยะห่างระหว่างแต่ละสเกลบนระบบพิกัดจริงบนหน้าจอ เช่น แต่ละสเกลห่างกัน 40 pixel เป็นต้น
int x_value = 100;// กำหนดตัวแปร x ที่ป้อนเข้าไป int scale ; // อัตราการเพิ่มสเกลแต่ละสเกล เช่น แต่ละสเกลเพิ่มขึ้นทีละ 5 ก็จะได้ค่าเป็น 5,10,15,20,....
......................................................................................
จากตัวอย่างที่แล้ว ให้แก้โค้ดในส่วนการ plot กราฟ เป็นดังต่อไปนี้ โดยเพิ่มค่า อัตราส่วนคูณด้วย x,y ทุกๆค่าเข้าไป ให้ทำแบบนี้กับค่าตัวแปรทุกค่า อาจจะเป็น x,y,z ...ก็ได้ แล้วแต่เหตุการณ์
xPoint = x_center+(getRatio*x); yPoint = x_center-(getRatio*y);
/* * ค่าอัตราการเพิ่มสเกล ที่จะพิมพ์ ว่าจะเพิ่มทีละเท่าไหร่ เช่น เพิ่มทีละ 2,5,10,.... * x คืิอ ค่าตัวเลขที่ป้อนเข้าไปเพื่อหาอัตราการเพิ่มสเกล อาจจะเป็นค่าที่มีการป้อนจาก จุด ศก.,ตัวแปร x,y เป็นต้น */
public int getScale(int x) { scale = Step.findStep(x)/2; // คำนวณหาอัตราการเพิ่มสเกล
return scale; }
/* * อัตราส่วนระหว่าง กับอัตราการเพิ่มสเกลแกน x,y * จะต้องนำค่านี้ไปใช้เวลาค่าในกราฟมีการเปลี่ยนเแปลงสเกล เพื่อให้ค่าที่ได้สัมพันธ์กัน * = ระยะห่างระหว่างแต่ละสเกลบนระบบพิกัดจริงบนหน้าจอ/อัตรา scale แต่ละช่อง */
public double getRatio{
return scalePlot*Math.pow(getScale(x_value),-1); }
........................................
เท่านี้ เมื่อมีการป้อนค่าทุกๆค่า ไม่ว่าจะมากน้อยเพียงไร กราฟก็จะคำนวณ และแสดงกราฟได้อย่างถูกต้อง
Create Date : 22 สิงหาคม 2550 |
Last Update : 24 สิงหาคม 2550 16:19:27 น. |
|
9 comments
|
Counter : 3538 Pageviews. |
|
|
|
โดย: churryduck วันที่: 28 สิงหาคม 2550 เวลา:8:52:16 น. |
|
|
|
โดย: tu_bong IP: 203.172.110.72 วันที่: 30 สิงหาคม 2550 เวลา:9:58:30 น. |
|
|
|
โดย: Bernadette วันที่: 30 สิงหาคม 2550 เวลา:10:04:30 น. |
|
|
|
โดย: fowleres วันที่: 30 สิงหาคม 2550 เวลา:21:50:36 น. |
|
|
|
โดย: สเนโก้ วันที่: 31 ตุลาคม 2550 เวลา:23:50:59 น. |
|
|
|
โดย: goH9 IP: 118.172.39.192 วันที่: 22 มกราคม 2551 เวลา:18:47:44 น. |
|
|
|
โดย: เน็ต IP: 118.172.39.192 วันที่: 22 มกราคม 2551 เวลา:18:49:28 น. |
|
|
|
โดย: เเบงค์ IP: 117.47.206.99 วันที่: 3 กันยายน 2551 เวลา:16:25:53 น. |
|
|
|
|
|
|
|