วาดวงรีด้วย MATLAB

จากความตอนที่แล้ว

ขั้นต่อไปคงเป็นการสร้างวงรี จริง ๆ แล้วเราเรียนเรื่องวงรีจากเรขาคณิตวิเคราะห์ในบทที่ว่าด้วยภาคตัดกรวยที่มี วงกลม วงรี พาราโบลา ไฮเปอร์โบลา ยากสุด ๆ กลับไปดูในแบบเรียนเอาเอง
นะครับ หรือที่ Conic Section Gallery

การวาดวงรีด้วย MATLAB สำหรับผมแล้วผมจะไม่ใช้เรขาคณิตวิเคราะห์ เพราะผมเป็นวิศวกรที่ไม่เขียนแบบด้วยไม้บรรทัดและวงเวียนอีกแล้ว ผมจะวาดแบบง่ายโดยให้ค่าบนแกน  y = r_1\sin\theta และค่าบนแกน  x = r_2\cos\theta ซึ่งคราวนี้ค่า  r_1 และ  r_2
จะมีขนาดไม่เท่ากัน

รหัสต้นของ MATLAB ที่ดูดีขึ้นก็จะเป็น

 

el1

ทีนี้ถ้าเราต้องการหมุนวงรีจะทำอย่างไรครับ ถ้าจะบวกองศาที่หมุนไปดื้อ ๆ นั้นจะไม่เป็นผล เพราะหมุนแกนตอนแกนตั้งมันก็หมุนด้วย ด้วยความสัตย์จริงผมต้องไปค้นหนังสือ
พีชคณิตเชิงเส้น เรื่อง orthogonal basis มาอ่าน ได้ความว่าเราสามารถใช้ orthogonal basis มาหมุนวงรีได้ ดังนี้

 g= U_\theta u, \qquad U_\theta = \begin{bmatrix}\cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}

โดยที่  u = [x \quad y]^T คือค่าบนแกนนอนและแกนตั้งตามลำดับ ก็จับมาคูณ
กันดื้อ ๆ เลยครับ ได้รหัสต้นดังนี้

el2

ก็จะได้รูปวงรีที่เอียงทำมุม 30 องศากับแกนนอนตามต้องการ

อนึ่ง เพื่อให้ได้อะไรบ้าง  U_\theta จะทำการเปลี่ยน orthogonal basis จาก  e_1 =\begin{bmatrix}1 & 0 \end{bmatrix}^T และ  e_2 = \begin{bmatrix} 0 & 1\end{bmatrix}^T ไปเป็น  e_1 =\begin{bmatrix}\cos\theta & \sin\theta\end{bmatrix}^T และ  e_2 = \begin{bmatrix} -\sin\theta & \cos\theta\end{bmatrix}^T นั่นเอง

Leave a Reply

Your email address will not be published. Required fields are marked *