橢圓伸縮之思考

我們討論的橢圓縮放基於二維空間,首先給出以下定義及性質:

1 基點:如果選擇一個能控制圖形比例(縮放)變換的點,使該點再變換後仍保持不變,則稱其爲基點(不動點)。

2 比例因子:Sx,Sy分別控制x軸和y軸座標值的縮小和放大,Sx,Sy爲大於0的任何數(兩者小於零時會發生鏡像,不在我們討論的範圍內),Sx,Sy小於1,圖形縮小;Sx,Sy大於1,圖形放大。

3 橢圓中心及直徑:橢圓是有心曲線,它存在這樣的點,該點平分通過它的所有弦,把該點稱作是橢圓的中心,把通過中心的弦叫做橢圓的直徑。

4 橢圓的共軛直徑:對於橢圓的任意直徑,容易知道平行於該直徑的弦的中點組成弦也是橢圓的直徑,這兩條直徑互爲對方的共軛直徑。

5 橢圓的軸:在衆多的共軛直徑中有一對是主方向,該方向對應的直徑即共軛又垂直,把這兩條直徑稱爲橢圓的軸,稱較長的軸爲長軸較短的軸爲短軸。

6 共軛直徑仿射不變性:橢圓的共軛直徑在經過仿射變換後仍爲共軛直徑。

在CAD應用軟件程序中,會根據橢圓中心點及長短軸對橢圓進行繪製,但是當橢圓發生伸縮變換後長短軸的位置及大小都會發生改變,需要重新確定長短軸,如下圖:

圖中紅色部分是一個橢圓及其外切長方形,通過觀察也可以發現原來的長軸和短軸在經過拉伸(Sx≠Sy)後已不是新橢圓的長軸和短軸,但是根據性質6可知它們仍爲新橢圓的共軛直徑,之後我們可以根據羅敏雪的《根據橢圓共軛直徑繪製橢圓曲線的算法》,由拉伸後的共軛直徑求新橢圓的長短軸。羅的算法及配圖如下:

(1)給出參數

已知橢圓中心O1(x0,y0),第1條共軛直徑的端點爲M(xm,ym),第2條共軛直徑的端點爲N(xn,yn)。

(2)已O1爲圓心,以O1n爲半徑,將N(xn,yn)點順時針轉90度得N1(xn1,yn1)點。

(3)求MN1的中點K(xk,yk)。

(4)求O1K的距離,在直線MN1上取KF=KG=O1K,分別求出FM、GM的距離。

(5)確定橢圓的長半軸大小,短半軸大小,及長短軸方向。

如果fm>gm,

則a=fm,b=gm,

此時,a=fm爲長半軸大小,b=gm爲短半軸大小,O1F爲短軸方向,O1G爲長軸方向;

否則a=gm,b=fm,

此時,a=gm爲長半軸大小,b=fm爲短半軸大小,O1G爲的短軸方向,O1F爲長軸方向。

參考文獻:

羅敏雪:根據橢圓共軛直徑繪製橢圓曲線的算法

王穗:圓和橢圓的透視仿射對應

強會英:橢圓拉伸變形長短軸的計算及應用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章