專利名稱::一種在計算機屏幕上繪制傾斜橢圓的方法
技術領域:
:本發(fā)明涉及計算機圖形
技術領域:
,具體涉及一種在計算機屏幕上繪制傾斜橢圓的方法。
背景技術:
:在計算機領域的許多場合,要使用相對于計算機屏幕傾斜的橢圓(橢圓的長軸與顯示屏幕坐標系的X軸既不平行也不垂直)來表示一定的區(qū)域,比如大多醫(yī)學圖像的病灶區(qū)域,在計算機屏幕上都需要用傾斜的橢圓來描繪并顯示出來。而目前在計算機屏幕上能夠使用的.大多是普通的橢圓(橢圓的長軸平行或垂直于顯示屏幕坐標系的x軸)而不能快速繪制傾斜橢圓。
發(fā)明內容本發(fā)明要解決的技術問題是提供一種在計算機屏幕上繪制傾斜橢圓的方法,克服現(xiàn)有技術不能在計算機屏幕上快速繪制傾斜橢圓的缺陷。本發(fā)明為解決上述技術問題所釆用的技術方案為一種在計算機屏幕上繪制傾斜橢圓的方法,包括步驟Al、確定要繪制的橢圓的中心點坐標、短軸長度、長軸長度和沿計算機屏幕坐標系的傾斜角;A2、根據(jù)所述橢圓的短軸長度、長軸長度計算所述橢圓的周長L;A3、根據(jù)如下公式計算并保存所述橢圓的第一個四分之一弧長的屏幕坐標其中(x、y)是所述橢圓的屏幕坐標,a是所述橢圓的長軸長度,b是所述橢圓的短軸長度,P是所述橢圓沿計算機屏幕坐標系的傾斜角,(c,,c》是所述橢圓的中心點坐標,參數(shù),的步進長度W根據(jù)公式W=2;r/Z計算,計算坐標的同時將參數(shù),對應的正弦值及余弦值的相反數(shù)保存;A4、'根據(jù)所述參數(shù),對應的正弦值及余弦值的相反數(shù)計算并保存所述橢圓的第二個四分之一弧長的屏幕坐標;A5根據(jù)所述橢圓的第一個和第二個四分之一弧長的屏幕'坐標及如下公式計算并保存所述橢圓的其余屏幕坐標<formula>formulaseeoriginaldocumentpage6</formula>A6、將所述橢圓的屏幕坐標送計算機屏幕顯示。所述的在計算機屏幕上繪制傾斜橢圓的方法,其中使用C++STL中的向量來存^L所述橢圓的坐標值。一種在計算機屏幕上繪制傾斜橢圓的方法,包括步驟Bl、在計算機屏幕上任取三個不在同一直線上的三個點P,、P2、尸3并保存其相應的坐標(h,'^)、(x2,;;2)、(x3,y3),第一點iU^,X)與第二點A(A,h)構成需繪制橢圓的對稱軸頂點,第三點尸3(&^3)到所述對稱軸的距離設為所述橢圓的另一對稱軸的半軸長度;B2、.根據(jù)如下公式計算所述橢圓的長軸長度a和短軸長度b:B3、根據(jù)所述橢圓的短軸長度、長軸長度計算所述的橢圓的周長L;B4、根據(jù)如下公式計算并保存所述橢圓的第一個四分之一弧長的屏幕坐標<formula>formulaseeoriginaldocumentpage7</formula>其中(x、y)是所述橢圓的屏幕坐標,a是所述橢圓的長軸長度,b是所述橢圓的短軸長度,參數(shù)f的步進長度&根據(jù)公式W-2;r/丄計算,計算坐標的同時將參數(shù),對應的正弦值及余弦值的相反數(shù)保存;B5、根據(jù)所述參數(shù)^對應的正弦值及余弦值的相反數(shù)計算并保存所述橢圓的第二個四分之一弧長的屏幕坐標;B6、根據(jù)所述橢圓的第一個和第二個四分之一弧長的屏幕坐標及如下公式計算并保存所述橢圓的其余屏幕坐標<formula>formulaseeoriginaldocumentpage7</formula>B7、將所述橢圓的屏幕坐標送計算機屏幕顯示。所速的在計算機屏幕上繪制傾斜橢圓的方法,其中使用C++STL中的向量來存^:所述橢圓的坐標值。所述的在計算機屏幕上繪制傾斜橢圓的方法,其中在計算機屏幕上任取二個點及設定默認的所迷橢圓的半軸長度繪制所述傾斜橢圓。本發(fā)明的有益效果為本發(fā)明在計算機屏幕上繪制傾斜橢圓的方法筒捷、高效、實用,是橢圓繪制方法的一大進步。圖1為現(xiàn)有技術計算機屏幕坐標系示意圖;圖2為現(xiàn)有技術計算機屏幕坐標系旋轉一定角度的示意圖;圖3為本發(fā)明橢圓關于坐標系軸對稱的點之間的坐標關系示意圖;圖4為本發(fā)明屏幕上三個點與傾斜橢圓之間的關系示意圖;圖5為本發(fā)明根據(jù)屏幕上二個點及默認短半軸長度繪制的傾斜橢圓示意圖;圖6為本發(fā)明根據(jù)屏幕上三個點繪制的傾斜橢圓示意圖。具體實施方式下面根據(jù)附圖和實施例對本發(fā)明作進一步詳細說明橢圓函數(shù)的標準參數(shù)方程橢圓有兩條對稱軸,焦點.所在的對稱軸稱為焦點軸,兩條對稱軸的交點,稱為橢圓的中心。對稱軸與橢圓的交點稱為橢圓的頂點,焦點軸上兩頂點的線段稱為橢圓的長軸,另一軸上兩頂點間的線革史稱為橢圓的短軸。若長軸長為2a,短軸長為26,則分別稱量o與6為橢圓的長半軸和短半軸。那么中心在原點的橢圓的標準方程如式(1-1)所示由于在繪制橢圓的過程中需要的是橢圓上各個點的坐標,而由標準方程不易求出各個點的坐標,.所以將其轉化為參數(shù)方程進行求解各個點的坐標。其參數(shù)方程如式(1-2)所示j(0^<2O(1-2)如圖l.所示,針對屏幕的坐標系而言,其坐標原點位于屏幕的左上頂點處,因此在屏幕上顯示的完整橢圓都是中心不在坐標原點的橢圓。不妨假設橢圓中心點c的坐標為(c,,G),則橢圓的方程就變成了式(1-3)所示的形式轉換為參數(shù)方程如式(1-4)所示:<formula>formulaseeoriginaldocumentpage9</formula>(1-3)<formula>formulaseeoriginaldocumentpage9</formula>(1-4)旋轉后的橢圓參數(shù)方程如圖2所示,坐標系X-y如果逆時針旋轉0角度,則原坐標系中任意一點2(z,;r)經過旋轉后的新坐標0c,力的表達式如式U-5)所示|x=J^cos^—7sin^(15)由中心坐標平移后的橢圓參數(shù)方程式(1-4)及坐標旋轉公式(1-5)可知,當橢圓以原點為中心逆時針旋轉P角后的參數(shù)方程如式(1-6)所示<formula>formulaseeoriginaldocumentpage9</formula>(1-6)橢圓的周長計算根據(jù)橢圓的定義,知道焦距是橢圓兩個焦點之間的線段長度,記作2c。由幾何關系可得長半軸o、短半軸6和焦距的一半c之間的關系如式(1-7)所示<formula>formulaseeoriginaldocumentpage10</formula>那么橢圓的周長丄可以用式(1-8)~(1-10)來表示1.當6>|時,周長丄的表達式如式(1-8)所示<formula>formulaseeoriginaldocumentpage10</formula>2.當6>a/2時,周長i的表達式如式(1-9)所示:2<formula>formulaseeoriginaldocumentpage10</formula>當6<|時,周長£的表達式如式(1-10)所示:<formula>formulaseeoriginaldocumentpage10</formula>繪制傾斜橢圓需要的幾個參數(shù)由我轉后的橢圓參數(shù)方程可以知道,只需要參數(shù)a、參數(shù)Z)、橢圓的中心點坐標和逆時針旋轉的角度P即可。表0-1需要使用的4個參數(shù)<table>tableseeoriginaldocumentpage10</column></row><table>幕坐標系的范圍內1.計算橢圓四分之一弧長上對應點的坐標組成橢圓像素點的^t目與其周長之間的關系由于計算機屏幕上的點均是以像素來表示的,所以都是整數(shù)。又因為橢圓的周長等于橢圓上各個相鄰點之間距離的和,而橢圓上每兩個相鄰點的距離則等于兩個相鄰或相鄰對角上兩個像素的距離。對于計算機屏幕上的像素而言,每兩個相鄰像素的距離定義為兩個像素中心之間的長度,這個長度正好是一個像素的寬度或者說是一個像素的高度。也因此橢圓的周長一定大于組成橢圓的像素個數(shù)。利用參數(shù)方程計算四分之一橢圓弧長上的點的坐標在得知長半軸"、參數(shù)短半軸6和逆時針旋轉的角度^之后,根據(jù)式(1-6)所示的參數(shù)方程,遍歷參數(shù)ao^"i)即可。根據(jù)橢圓的軸對稱性質和中心對稱性質,只需求得橢圓上四分之一弧長上的點的坐標即可根據(jù)對稱性得到其余各點。因此遍歷的范圍如式(2-1)所示(2-1)2遍歷時參數(shù)f的步進長度由于四分之一橢圓弧長上的點的個數(shù)小于橢圓周長的四分之一,所以以橢圓周長的四分之一的倒數(shù)與i乘積作為步長進行遍歷即可得到四分之一橢圓弧長上的點的坐標。即利用式(1-8)~(1-10)的周長公式,計算出橢圓的周長丄。因此遍歷時參數(shù)f的步進長度W如式(2-2)所示口2;r/Z(2-2)申請保存橢圓上點的變量£尸為了保存計算得到的橢圓上的像素點坐標,需要申請一個存放橢圓上像素點坐標的變量。首先定義一個像素點坐標的結構體,定義的格式如下structPointintxjintyj};由于橢圓上像素點的個數(shù)事先是不知道的,因此使用C++STL中的vector,向內存申i青一個Point類型的vector,申i青的變量如下std::vector<Point>EP那么接下來就可以按照范圍和步進長度遍歷參數(shù)^了。變量£P保存橢圓上像素點的條件由于遍歷的次數(shù)大于橢圓四分之一弧長上像素點的個數(shù),因此在往變量W中存放弧長上像素點時先判斷該點是否與變量£戶中的最后一個點相同,如果相同的話就不保存該像素點。因此往變量五尸中存入橢圓上像素點的條件就是本次計算出來的像素點坐標與'保存在變量五尸中的最后一個像素點坐標不相同。這樣遍歷之后,變量五P中就恰好包含了橢圓四分之一弧長上的像素點坐標。保存橢圓上像素點的同時保存對應的三角函數(shù)值首先定義結構floatsinV;floatcosV;};在遍歷時,將符合變量保存橢圓上像素點條件的參數(shù)r對應的正弦和余弦值保存起來。同樣申請一個sincosValue結構類型的vector來保存對應的正弦余弦值。申請變量為std::vector<sincosValue>SCV注意,在保存余弦值時在其前面加一個負號,即取其相反數(shù)。如圖3所示,這是因為保存起來的這些正弦余弦值是為了計算第二個四分之一橢圓弧長上對應像素點的坐標使用的,而余弦函數(shù)補角的余弦等于本身余弦的相反數(shù),所以在保存的時候將其余弦值前面加一個負號(即是乘以數(shù)-1)。在遍歷的同時,即在向變壹M中存入^f象素點坐標時,也向變量SCV中按照上述要求存入正弦和余弦值。這樣在遍歷之后,變量SCV中就恰好包含了橢圓第二個四分之一弧長上計算像素點坐標要使用的所有正弦和余弦值。2、計算第二個四分之一橢圓弧長上點的坐標遍歷保存的變量SCV變量SCV在遍歷參數(shù),之后恰好包含了橢圓第二個四分之一弧長上計算像素點坐標要使用的所有正弦和余弦值。因此,結合橢圓的參數(shù)方程式(1-6),將式中的sinf和co"分別用變量SCV中的正弦和余弦值來代替并遍歷變量SCV,即可得到第二個四分之一橢圓弧長上所有'^f象素點的坐標。將計算得到的像素點坐標同樣保存到變量腫中,那么遍歷SCV之后,變量£戶.中就保存了連續(xù)相連的二分之一橢圓弧長上所有像素點的坐標03、計算并保存傾^H陶圓其余二分之一弧長上對應點的坐標遍歷保存的變量五p由于變量£尸中已經保存了連續(xù)相連的二分之一橢圓弧長上所有像素點的坐標,因此根據(jù)橢圓的中心對稱性,如果變量五尸中保存了點,則該點關于橢圓中心的對稱點^沒為(jc',力,則它們之間的關系如式(4-1)所示根據(jù)式(4-1)將變量五P中保存的像素點坐標遍歷一遍,即可得出其余二分之一弧長上像素點的坐標。在遍歷的同時將計算出的像素點坐標存入變量五戶,這樣在遍歷完成時,變量EP中已經保存了橢圓上所有點的坐標。4、將傾斜橢圓上所有的點送達顯示器顯示將已經保存了傾斜橢圓上所有點的坐標通過GDI函數(shù)即全部顯示在屏幕上,那么一個傾斜的橢圓也就顯示在了屏幕上。在實際應用中使用者需要快速高效的繪制出自己所需要的傾斜的橢圓。那么,如果l喿作者為了繪制一個傾斜的橢圓不斷的調整長半軸fl、短半軸6和逆時針旋轉的角度^的值,進而繪制出自己需要的橢圓,未免會費神費力。因此為了方使z使用者,該實例的輸入是依次用鼠標確定三個不在同一條直線上的三個點。不妨將這三個點的分別設為^(wO、三個坐標點到繪制橢圓需要的四個^it間的轉換如圖4所示,第一個輸入的點i^(;cp^)作為橢圓的第一個頂點,第二個輸入的點P2(;c2,_y2)作為橢圓的第二個頂點。這兩個頂點構成'了橢圓的一條對稱軸(長軸或短軸),記線段/^2的長度為"12。第三個輸入的點(4-1)iUX3,")到直線段i^之間的距離A作為另外一個半軸的長度。也即是說,如果A戶2A,那么Aa就是長軸的長度,而A就是短半軸的長度。換言之,如果/)12<2馬,則A為長軸的長度,/)12為短半軸的長度。本實例中所選的橢圓按照第一種情況,即/)12>2/)3來進行操作。由圖4可知,繪制傾斜楠圓所需的四個參數(shù)分別為&_,、,+^3QyC2+y2X3+,3,(6墨2)2一"(6-3)sin^=Z2_ZAc畫—x2+A2(6-4)根據(jù)式(6-1)—(6-4)及式(1-6)可得,利用三個輸入點的坐標得到的傾斜橢圓的參數(shù)方程如式(6-5)所示x=^-^os卜Cv2—W——sm/+^-L^2fl2(0^<2;r)(6-5)22a2根據(jù)式(6-5)及如前所述的計算并保存橢圓上點的方法,即可將根據(jù)三個坐標點計算出來的橢圓顯示在屏幕上。確定并記錄第一個輸入點的坐標A此時,鼠標所在的位置即為第一個輸入點A的位置。移動鼠標可以對點A進行選擇。單擊鼠標左鍵,系統(tǒng)響應VC中的OnMouseDown消息把點A的值就確定為當前鼠標的位置。確定并記錄第二個輸入點的坐標尸2在確定了第一個點《的坐標之后,移動鼠標,系統(tǒng)響應vc中的OnMouseMove消息,并把當前鼠標的位置作為第二個輸入點g的坐標進行計算和顯示。由于在繪制橢圓時需要三個點才能繪制出來,為了能在第一個點確定之后的移動鼠標過程中顯示出橢圓,首先給出了一個固定的默認短半軸長度的值,這樣在移動鼠標的時候,就可以將橢圓顯示出來。如圖5所示便是確定第一個輸入點的坐標之后,在移動鼠標過程中的情形。此時,再次單擊鼠標左4建,系統(tǒng)響應VC中的OnMouseDown消息把鼠標的位置坐標賦值給點戶2。確定并記錄第三個輸入點的坐標戶3在將鼠標的位置坐標賦值給點S之后,繼續(xù)移動鼠標,系統(tǒng)響應VC中的OnMouseMove消息,則此時顯示的橢圓即是用鼠標位置作為第三個輸入點的坐標來進行計算和顯示的。此時,再次單擊鼠標左鍵,系統(tǒng)響應VC中的OnMouseDown消息把鼠標的位置坐標賦值給點g,從而最終確定了橢圓的位置和大小,并在屏幕上顯示,如圖6所示。本領域技術人員不脫離本發(fā)明的實質和精神,可以有多種變形方案實現(xiàn)本發(fā)明,以上所述僅為本發(fā)明較佳可行的實施例而已,并非因此局限本發(fā)明的權利范圍,凡運用本發(fā)明說明書及附圖內容所作的等效結構變化,均包含于本發(fā)明的4又利范圍之內。權利要求1、一種在計算機屏幕上繪制傾斜橢圓的方法,其特征在于,包括Al、確定要繪制的橢圓的中心點坐標、短軸長度、長軸長度和沿計算機屏幕坐標系的傾斜角;A2、根據(jù)所述橢圓的短軸長度、長軸長度計算所述橢圓的周長L;A3、根據(jù)如下公式計算并保存所述橢圓的第一個四分之一弧長的屏其中(x、y)是所述橢圓的屏幕坐標,a是所述橢圓的長軸長度,b是所述橢圓的短軸長度,^是所述橢圓沿計算機屏幕坐標系的傾斜角,(c,,c》是所述橢圓的中心點坐標,參數(shù)/的步進長度&根據(jù)公式D2;r/i:計算,計算坐標的同時將參數(shù),對應的正弦值及余弦值的相反數(shù)保存;A4、根據(jù)所述參數(shù),對應的正弦值及余弦值的相反數(shù)計算并保存所述橢圓的第二個四分之一弧長的屏幕坐標;A5、才艮據(jù)所述橢圓的第一個和第二個四分之一弧長的屏幕坐標及如下公式計算并保存所述橢圓的其余屏幕坐標A6、將所述橢圓的屏幕坐標送計算機屏幕顯示。2、根據(jù)權利要求1所述的在計算機屏幕上繪制傾斜橢圓的方法,其特征在于^使用C++STL中的向量來存^L所述橢圓的坐標值。步驟:幕坐標:3、一種在計算機屏幕上繪制傾斜橢圓的方法,其特征在于,包括步驟Bl、在計算才幾屏幕上任取三個不在同一直線上的三個點尸,'、戶2、尸3并保存其相應的坐標<formula>formulaseeoriginaldocumentpage3</formula>第一點/U^W與第二點A(A,;g構成需繪制橢圓的對稱軸頂點,第三點戶3(^3,>0到所述對稱軸的距離設為所述橢圓的另一對稱軸的半軸長度;B2、根據(jù)如下公式計算所述橢圓的長軸長度a和短軸長度b:B3、根據(jù)所述橢圓的短軸長度、長軸長度計算所述的橢圓的周長L;B4、根據(jù)如下公式計算并保存所述橢圓的第一個四分之一弧長的屏幕坐標<formula>formulaseeoriginaldocumentpage3</formula>其中(x、y)是所述橢圓的屏幕坐標,a是所述橢圓的長軸長度,b是所述橢圓的短軸長度,參數(shù),的步進長度^根據(jù)公式口,=2"/丄計算,計算坐標的同時將參數(shù)f對應的正弦值及余弦值的相反數(shù)保存;B5、根據(jù)所述參數(shù)f對應的正弦值及余弦值的相反數(shù)計算并保存所述橢圓的第二個四分之一弧長的屏幕坐標;B6、根據(jù)所述橢圓的第一個和第二個四分之一弧長的屏幕坐標及如'下公式計算并保存所述橢圓的其余屏幕坐標<formula>formulaseeoriginaldocumentpage4</formula>B7、將所述橢圓的屏幕坐標送計算機屏幕顯示。4、稂據(jù)權利要求3所述的在計算機屏幕上繪制傾斜橢圓的方法,其特征在于使用C++STL中的向量來存放所述橢圓的坐標值。5、根據(jù)權利要求4所述的在計算機屏幕上繪制傾斜橢圓的方法,其特征在于在計算機屏幕上任取二個點及設定默認的所述橢圓的半軸長度繪制所速傾斜橢圓。全文摘要一種在計算機屏幕上繪制傾斜橢圓的方法,包括步驟A1、確定要繪制的橢圓的中心點坐標、短軸長度、長軸長度和沿計算機屏幕坐標系的傾斜角;A2、根據(jù)所述橢圓的短軸長度、長軸長度計算所述橢圓的周長L;A3、根據(jù)公式計算并保存所述橢圓的第一個四分之一弧長的屏幕坐標;A4根據(jù)所述參數(shù)t對應的正弦值及余弦值的相反數(shù)計算并保存所述橢圓的第二個四分之一弧長的屏幕坐標;A5、根據(jù)所述橢圓的第一個和第二個四分之一弧長的屏幕坐標及公式計算并保存所述橢圓的其余屏幕坐標;A6、將所述橢圓的屏幕坐標送計算機屏幕顯示。本發(fā)明在計算機屏幕上繪制傾斜橢圓的方法簡捷、高效、實用,是橢圓繪制方法的一大進步。文檔編號G06T11/00GK101145241SQ20071012432公開日2008年3月19日申請日期2007年10月30日優(yōu)先權日2007年10月30日發(fā)明者程延俊,陳閩峰申請人:深圳市藍韻實業(yè)有限公司