Coordinate system เป็นเรื่องที่มีความสำคัญมากในการเรียนรู้เรื่อง computer graphics เป็นระบบที่ใช้ตัวเลข(number) สัญญลักษณ์ (symbols) และแกน (axis) เพื่อระบุตำแหน่งของ object ในโลกเสมือน มีรูปแบบที่สำคัญได้แก่
Cartesian coordinates
2D Cartesian coordinates
ระบบนี้เป็นระบบที่ถูกนำไปใช้งานค่อนข้างบ่อยและกว้างขวางกว่าระบบอื่น ถูกนำเสนอโดยนักคณิตศาสตร์ชาวฝรั่งเศสชื่อ René Descartes ในช่วงศตวรรษที่ 17 ระบบนี้ประกอบด้วย
♦ มีแกน (axis) ที่ตั้งฉากกัน 2 แกน วางบนพื้นที่สมมุติเรียกว่า plane แนวตั้งเรียก "Vertical axis หรือ Y axis (แกน y)" และแนวนอนเรียก "Horizontal axis หรือ X axis (แกน X)"
♦ จุดที่แกนทั้งสองตัดกันเรียกว่า "origin" บนแกนทั้งสองจะถูกแบ่งออกเป็นส่วนๆมีหมายเลขกำกับ
♦ เมื่อแกนทั้งสองตัดกัน ทำให้ plane ถูกแบ่งออกเป็น 4 ส่วน เรียกว่า quadrant 1, quadrant 2,quadrant 3 และ quadrant 4 (ดูรูปที่ 1)
♦ บน X axis มีหมายเลขบอกระยะห่างจาก Y axis ไปทั้งทางซ้ายและทางขวา หากนับไปทางซ้ายของ Y axis ตัวเลขจะมีเครื่องหมายลบ (-) นำหน้า เช่น -1,-2,-3,... ทำนองเดียวกันกับตัวเลขบน Y axis จะมีตัวเลขบอกระยะห่างจาก X axis ทั้งทิศขึ้นบนและลงล่าง หากนับไปทางด้านล่างของ X axis จะมีเครื่องหมายลบ (-) นำหน้า
♦ การระบุตำแหน่งบน plane เขียนในรูปแบบคู่อันดับ (order pair) (x,y) โดยที่ x คือตัวเลขที่บอกระยะห่างจาก Y axis และ y คือตัวเลขที่บอกระยะห่างจาก X axis
♦ ตำแหน่งบน plane ณ จุด origin คือ (0,0) และการนับตำแหน่งของวัตถุบน plane จะต้องเริ่มนับจากจุด origin เสมอ
รูปที่ 1 Cartesian plane |
ตัวอย่างการระบุตำแหน่งของจุดสีฟ้าในรูปที่ 2 ด้วย Cartesian coordinate คือ (5,4)
1. 5 หมายถึงระยะห่างจาก Y-axis ไปทางขวามือ 5 หน่วย
2. 4 หมายถึงระยะห่างจาก X axis ขึ้นไปข้างบน 4 หน่วย
รูปที่ 2 |
3D Cartesian coordinates
ที่กล่าวมาเป็นระบบ Cartesian coordinate ใช้ 2 แกนในการบอกตำแหน่งเป็นการรับทราบในแบบ 2 มิติ (2-dimension,2D) ในการมองแบบ 3 มิติ (3-dimension,3D) ต้องเพิ่มแกนเข้ามาอีก 1 แกนที่ตั้งฉากกับ X-Y plane (ในรูปที่ 2 แสดงด้วย plane สีฟ้า) ซึ่งจะตั้งฉากกับทั้งแกน X และ Y เรียกว่าแกน Z (Z axis) (ดูรูปที่ 3) ในการระบุตำแหน่งใช้ตัวเลข 3 ตัวในรูปแบบ (x,y,z) โดยที่ตัวเลขที่ 3 คือระยะห่างจาก X-Y plane ของวัตถุ
รูปที่ 3 |
พื้นที่ว่าง (space) ในมุมมองแบบ 3D จะถูกแบ่งออกเป็น 8 ส่วน (octant) ดังรูปที่ 4 โดยแต่ละส่วนมีระบบจำนวนที่ใช้บอกตำแหน่งดังนี้
Octant | (x,y,z) |
---|---|
1 | (+,+,+) |
2 | (-,+,+) |
3 | (-,-,+) |
4 | (+,-,+) |
5 | (+,+,-) |
6 | (-,+,-) |
7 | (-,-,-) |
8 | (+,-,-) |
รูปที่ 4 |
พื้นที่ว่างใน 3D การหมุนของแกนทั้ง 3 เป็นอิสระ ดังนั้นเพื่อให้เกิดความเข้าใจตรงกันในการกำหนดทิศ จึงมีการกำหนด left hand rule และ righ hand rule ขึ้นมา ดังนี้
♦ กรณีใช้ Left hand rule : หงายฝ่ามือซ้ายขึ้น กางนิ้งโป้งออกให้ตั้งฉากกับฝ่ามือ ทิศที่นิ้วโป้งชี้จะเป็นทิศของ Z+ ทิศที่นิ้วชี้ชี้ไปจะเป็นทิศของ X+ ยกนิ้วกลางขึ้นให้ตั้งฉากกับฝ่ามือ ทิศที่นิ้วกลางชี้ไปเป็นทิศของ Y+ (หรืออาจใช้ทิศของฝ่ามือก็ได้)
♦ กรณีใช้ Right hand rule : เปลี่ยนไปใช้มือขวาแล้วทำเช่นเดียวกับ left hand rule จะได้ว่าทิศของนิ้วโป้งคือ Z+ ทิศของนิ้วชี้คือทิศของ X+ และฝ่ามือคือทิศของ Y+
รูปที่ 5 |
Polar coordinates
ระบบ polar coordinate เป็นการระบุตำแหน่งในมุมมอง 2D โดยใช้จุดอ้างอิงที่เทียบได้กับจุด origin ในระบบ cartesian เรียกว่า (Pole) ตำแหน่งของวัตถุระบุด้วยตัวเลข 2 ตัว (r,\(\theta\)) (บางคนอาจใช้ \( \rho \) แทน r) โดย \( r \) คือระยะห่างระหว่าง pole กับวัตถุ และ \( \theta \) คือมุมที่วัดจากแกน polar axis ไปยังวัตถุ ไม่ได้มีการระบุว่า polar axis ต้องชี้ไปทางไหนแต่มักจะถูกกำหนดให้เป็นแกนเดียวกันกับ X+ axis ในระบบ cartesian coordinates
รูปที่ 6 |
การวัดค่าของ \(\theta\) จะเริ่มต้นจาก polar axis (แนวเดียวกับแกน X+) โดยที่อาจมีเครื่องหมายลบ(-)หรือไม่ก็ได้ ในกรณีที่มีเครื่องหมายลบหมายถึงการวัดมุมในทิศตามเข็มนาฬิกา (clockwise) หากไม่มีเครื่องหมายลบจะเป็นวัดในทิศทางทวนเข็มนาฬิกา (counterclockwise)
รูปที่ 7 |
ระบบ polar coordinates มีการแบ่งพื้นที่ออกเป็นตาราง (grid) เพื่อใช้ระบุ coordinate เช่นเดียวกับ cartesian coordinates แต่อยู่ในรูปแบบของมุมและระยะทาง ดังรูปที่ 8 เช่นจุดสีแดง ตั้งอยู่บน coordinate ที่ (6,\(45^{\circ}\)) หมายถึง จุดสีแดงอยู่ห่างจากจุด pole (origin) ไปทางขวา 6 หน่วย ทำมุม \( 45^{\circ}\) กับ polar axis
รูปที่ 8 |
การเทียบ \( \theta \) กับ quadrant :
ระบบ polar coordinates ไม่มีการแบ่งพื้นที่เป็น quadrant เพราะมีแกนเดียว การเทียบเป็น quadrant ต้องใช้ค่าของ \(\theta \) ดังแสดงในรูปที่ 9
รูปที่ 9 |
การแปลง (r,\(\theta\)) ไปเป็น coordinate (x,y) :
จะใช้การคำนวณจาก trigonometry เพื่อคำนวณหาจุดที่ r ฉายลงบนแกน X และแกน Y ถ้าให้จุดสีแดงในรูปที่ 10 มี coordinate เป็น (r,\( \theta \))
รูปที่ 10 |
จะได้ว่า
\[ \begin{align*} sin(\theta) &= \frac{y}{r}\\ r \cdot sin(\theta) &= y \\\\\\ cos(\theta) &= \frac{x}{r}\\ r \cdot cos(\theta) &= x \\\\\\ \end{align*} \]การแปลงจาก polar coordinate ไปยัง cartesian coordinate จะใช้สมการ
\[ \begin{align*} (x,y) = (r \cdot cos(\theta),r \cdot sin(\theta)) \tag{1.0} \end{align*} \](1.0) ใช้ได้เมื่อ \(\theta \) มีค่าระหว่ง [\( 0^{\circ}, 90^{\circ} \) ] หรือ quadrant ที่ 1 ในกรณีที่ \( \theta \) ไม่ได้อยู่ในช่วงนี้ จะต้องทำการปรับค่าของมุมให้เหมาะสมดังนี้
ค่าของ \( \theta \) | ค่าของ (x,y) |
---|---|
(\( 0^{\circ}, 90^{\circ} \) ] | \( \begin{align*} x &= r \cdot cos(\theta) \\ y&=r \cdot sin(\theta) \end{align*}\) |
(\( 90^{\circ}, 180^{\circ} \) ] | \( \begin{align*} x &= -r \cdot cos(180^{\circ} - \theta) \\ y&=r \cdot sin(180^{\circ}-\theta) \end{align*}\) |
(\( 180^{\circ}, 270^{\circ} \) ] | \( \begin{align*} x &= -r \cdot cos(\theta - 180^{\circ} ) \\ y&=-r \cdot sin(\theta - 180^{\circ}) \end{align*}\) |
(\( 270^{\circ}, 360^{\circ} \) ] | \( \begin{align*} x &= r \cdot cos(360^{\circ} -\theta ) \\ y&=-r \cdot sin(360^{\circ} - \theta ) \end{align*}\) |
การแปลงจาก (x,y) ไปเป็น (r,\( \theta\)) :
ใช้ Pythagoras theorem มาแปลงค่าของ x,y ไปเป็นค่า r จากรูปที่ 10 จะได้
\[ \begin{align*} r^2 &= x^2 + y^2 \\ \therefore r &= \sqrt{x^2 + y^2} \tag{1.1} \end{align*} \]จากตอนก่อนหน้า เราทราบว่าง
\[ \begin{align*} \frac{y}{x} &= \frac{r\cdot sin(\theta)}{r\cdot cos(\theta)}\\ \frac{y}{x} &= tan(\theta)\\ \therefore \theta &= tan^{-1}(\theta) \tag{1.2} \end{align*} \]นั่นคือ (x,y) \(\rightarrow (\sqrt{x^2 + y^2},tan^{-1}(\theta)) \)
ความคิดเห็น
แสดงความคิดเห็น