丁宇辰
摘要:繪制橢圓時,通常是直接調(diào)用編程工具自帶的函數(shù)或過程,且平行于x軸或y軸方向,對于任意方向的橢圓則不能直接繪出。本文利用Bezier曲線的生成原理,提出一種任意方向的橢圓繪制方法。
關(guān)鍵詞:Bezier曲線;橢圓
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2012)01-0133-02
A Method of Any Direction of Drawing Ellipse
DING Yu-chen
(School of Computer Engineering, Nanjing Institute of Technology, Nanjing 211167, China)
Abstract: When plan ellipse, usually called directly programming tool that comes with a function or procedure, and parallel to the x axis or y axis, the ellipse cannot be directly drawn in any direction. This paper use of Bezier curve generation principle, present a ellipse drawing methods in any direction.
Key words: Bezier curves; Ellipse
在一些高級語言(如VC、VB、C、C++等)中繪制橢圓通常是調(diào)用現(xiàn)成的函數(shù)或過程,但用這種方法繪制的橢圓,其長軸只能是沿屏坐標系的x軸或y軸,即平行于x軸或y軸。對于任意方向的橢圓,則不能直接繪出,需要進行一系列的變換,過程繁瑣且不方便。本文介紹用Bezier曲線的生成原理來繪制任意方向的橢圓的方法,該方法簡單易于實現(xiàn)。
偽碼過程描述如下:
vcellipse(int m,int n,int a,int b,int angle)
{…//變量定義
int dpoint (4,2)//定義數(shù)組,表示控制多邊形的頂點
int bezierx(N);beziery(N)//定義曲線上的點
If angle=0 or angle=180 then //如果是水平方向的橢圓,求控制多邊形的頂點
dpoint (1,1)= m+a…
dpoint (4,2)= n-b
else if angle=90 then//如果是垂直方向的橢圓,求控制多邊形的頂點
dpoint (1,1)= m-b…
dpoint (4,2)= n+a
else
dpoint (1, 1) = (-b0 + deta) / (2 * a0)/ /計算其它方向的控制多邊形頂點…
dpoint (4,2)= -dpoint(2, 2) + 2 * n end if
for i=1 to N//計算bezier曲線上的點
t=t+ε//ε是一個微小的量
bezierx(i)= (-t ^ 3 + 3 * t ^ 2 - 3 * t + 1) * dpoint(1, 1) + (3 * t ^ 3 - 6 * t ^ 2 + 3 * t) * dpoint(2, 1) + (-3 * t ^ 3 + 3 * t ^ 2) * dpoint(3, 1) + t ^ 3 * dpoint(4, 1)
beziery(i)= (-t ^ 3 + 3 * t ^ 2 - 3 * t + 1) * dpoint(1, 1) + (3 * t ^ 3 - 6 * t ^ 2 + 3 * t) * dpoint(2, 1) + (-3 * t ^ 3 + 3 * t ^ 2) * dpoint(3, 1)+ t ^ 3 * dpoint(4, 1)
next i
for i=1 to n
Line(bezierx(i),beziery(i), bezierx(i+1),beziery(i+1))//利用畫線方法輸出曲線
next i
}
4結(jié)束語
本文提出一種繪制任意方向橢圓的一種方法,這種方法編程簡單,易于實現(xiàn)。在精度要求不是很高的場合下,所用的方法基本能達到要求。
參考文獻:
[1]杜曉增.計算機圖形學(xué)基礎(chǔ)[M].北京:機械工業(yè)出版社, 2007:119-121.
[2]周天祥,楊勛年.快速繪制Bezier曲線.計算機輔助設(shè)計與圖形學(xué)學(xué)報, 2002,14(6): 501-502.
[3]徐雨明,文雙春.Bezier曲線遞歸分割算法的研究.衡陽師范學(xué)院學(xué)報, 2007,28(6):114-115.