一种在计算机屏幕上绘制倾斜椭圆的方法

文档序号:6610599阅读:378来源:国知局

专利名称::一种在计算机屏幕上绘制倾斜椭圆的方法
技术领域
:本发明涉及计算机图形
技术领域
,具体涉及一种在计算机屏幕上绘制倾斜椭圓的方法。
背景技术
:在计算机领域的许多场合,要使用相对于计算机屏幕倾斜的椭圆(椭圆的长轴与显示屏幕坐标系的X轴既不平行也不垂直)来表示一定的区域,比如大多医学图像的病灶区域,在计算机屏幕上都需要用倾斜的椭圆来描绘并显示出来。而目前在计算机屏幕上能够使用的.大多是普通的椭圆(椭圆的长轴平行或垂直于显示屏幕坐标系的x轴)而不能快速绘制倾斜椭圆。
发明内容本发明要解决的技术问题是提供一种在计算机屏幕上绘制倾斜椭圆的方法,克服现有技术不能在计算机屏幕上快速绘制倾斜椭圆的缺陷。本发明为解决上述技术问题所釆用的技术方案为一种在计算机屏幕上绘制倾斜椭圆的方法,包括步骤Al、确定要绘制的椭圆的中心点坐标、短轴长度、长轴长度和沿计算机屏幕坐标系的倾斜角;A2、根据所述椭圆的短轴长度、长轴长度计算所述椭圆的周长L;A3、根据如下公式计算并保存所述椭圆的第一个四分之一弧长的屏幕坐标其中(x、y)是所述椭圆的屏幕坐标,a是所述椭圆的长轴长度,b是所述椭圆的短轴长度,P是所述椭圆沿计算机屏幕坐标系的倾斜角,(c,,c》是所述椭圆的中心点坐标,参数,的步进长度W根据公式W=2;r/Z计算,计算坐标的同时将参数,对应的正弦值及余弦值的相反数保存;A4、'根据所述参数,对应的正弦值及余弦值的相反数计算并保存所述椭圆的第二个四分之一弧长的屏幕坐标;A5根据所述椭圆的第一个和第二个四分之一弧长的屏幕'坐标及如下公式计算并保存所述椭圆的其余屏幕坐标<formula>formulaseeoriginaldocumentpage6</formula>A6、将所述椭圆的屏幕坐标送计算机屏幕显示。所述的在计算机屏幕上绘制倾斜椭圆的方法,其中使用C++STL中的向量来存^L所述椭圓的坐标值。一种在计算机屏幕上绘制倾斜椭圓的方法,包括步骤Bl、在计算机屏幕上任取三个不在同一直线上的三个点P,、P2、尸3并保存其相应的坐标(h,'^)、(x2,;;2)、(x3,y3),第一点iU^,X)与第二点A(A,h)构成需绘制椭圆的对称轴顶点,第三点尸3(&^3)到所述对称轴的距离设为所述椭圆的另一对称轴的半轴长度;B2、.根据如下公式计算所述椭圆的长轴长度a和短轴长度b:B3、根据所述椭圆的短轴长度、长轴长度计算所述的椭圆的周长L;B4、根据如下公式计算并保存所述椭圓的第一个四分之一弧长的屏幕坐标<formula>formulaseeoriginaldocumentpage7</formula>其中(x、y)是所述椭圆的屏幕坐标,a是所述椭圆的长轴长度,b是所述椭圓的短轴长度,参数f的步进长度&根据公式W-2;r/丄计算,计算坐标的同时将参数,对应的正弦值及余弦值的相反数保存;B5、根据所述参数^对应的正弦值及余弦值的相反数计算并保存所述椭圆的第二个四分之一弧长的屏幕坐标;B6、根据所述椭圆的第一个和第二个四分之一弧长的屏幕坐标及如下公式计算并保存所述椭圆的其余屏幕坐标<formula>formulaseeoriginaldocumentpage7</formula>B7、将所述椭圆的屏幕坐标送计算机屏幕显示。所速的在计算机屏幕上绘制倾斜椭圆的方法,其中使用C++STL中的向量来存^:所述椭圆的坐标值。所述的在计算机屏幕上绘制倾斜椭圆的方法,其中在计算机屏幕上任取二个点及设定默认的所迷椭圆的半轴长度绘制所述倾斜椭圆。本发明的有益效果为本发明在计算机屏幕上绘制倾斜椭圆的方法筒捷、高效、实用,是椭圆绘制方法的一大进步。图1为现有技术计算机屏幕坐标系示意图;图2为现有技术计算机屏幕坐标系旋转一定角度的示意图;图3为本发明椭圆关于坐标系轴对称的点之间的坐标关系示意图;图4为本发明屏幕上三个点与倾斜椭圆之间的关系示意图;图5为本发明根据屏幕上二个点及默认短半轴长度绘制的倾斜椭圓示意图;图6为本发明根据屏幕上三个点绘制的倾斜椭圆示意图。具体实施方式下面根据附图和实施例对本发明作进一步详细说明椭圆函数的标准参数方程椭圓有两条对称轴,焦点.所在的对称轴称为焦点轴,两条对称轴的交点,称为椭圆的中心。对称轴与椭圆的交点称为椭圆的顶点,焦点轴上两顶点的线段称为椭圆的长轴,另一轴上两顶点间的线革史称为椭圓的短轴。若长轴长为2a,短轴长为26,则分别称量o与6为椭圆的长半轴和短半轴。那么中心在原点的椭圆的标准方程如式(1-1)所示由于在绘制椭圆的过程中需要的是椭圆上各个点的坐标,而由标准方程不易求出各个点的坐标,.所以将其转化为参数方程进行求解各个点的坐标。其参数方程如式(1-2)所示j(0^<2O(1-2)如图l.所示,针对屏幕的坐标系而言,其坐标原点位于屏幕的左上顶点处,因此在屏幕上显示的完整椭圆都是中心不在坐标原点的椭圆。不妨假设椭圆中心点c的坐标为(c,,G),则椭圆的方程就变成了式(1-3)所示的形式转换为参数方程如式(1-4)所示:<formula>formulaseeoriginaldocumentpage9</formula>(1-3)<formula>formulaseeoriginaldocumentpage9</formula>(1-4)旋转后的椭圓参数方程如图2所示,坐标系X-y如果逆时针旋转0角度,则原坐标系中任意一点2(z,;r)经过旋转后的新坐标0c,力的表达式如式U-5)所示|x=J^cos^—7sin^(15)由中心坐标平移后的椭圆参数方程式(1-4)及坐标旋转公式(1-5)可知,当椭圆以原点为中心逆时针旋转P角后的参数方程如式(1-6)所示<formula>formulaseeoriginaldocumentpage9</formula>(1-6)椭圆的周长计算根据椭圆的定义,知道焦距是椭圆两个焦点之间的线段长度,记作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>绘制倾斜椭圆需要的几个参数由我转后的椭圓参数方程可以知道,只需要参数a、参数Z)、椭圆的中心点坐标和逆时针旋转的角度P即可。表0-1需要使用的4个参数<table>tableseeoriginaldocumentpage10</column></row><table>幕坐标系的范围内1.计算椭圆四分之一弧长上对应点的坐标组成椭圆像素点的^t目与其周长之间的关系由于计算机屏幕上的点均是以像素来表示的,所以都是整数。又因为椭圆的周长等于椭圆上各个相邻点之间距离的和,而椭圆上每两个相邻点的距离则等于两个相邻或相邻对角上两个像素的距离。对于计算机屏幕上的像素而言,每两个相邻像素的距离定义为两个像素中心之间的长度,这个长度正好是一个像素的宽度或者说是一个像素的高度。也因此椭圆的周长一定大于组成椭圆的像素个数。利用参数方程计算四分之一椭圆弧长上的点的坐标在得知长半轴"、参数短半轴6和逆时针旋转的角度^之后,根据式(1-6)所示的参数方程,遍历参数ao^"i)即可。根据椭圆的轴对称性质和中心对称性质,只需求得椭圆上四分之一弧长上的点的坐标即可根据对称性得到其余各点。因此遍历的范围如式(2-1)所示(2-1)2遍历时参数f的步进长度由于四分之一椭圆弧长上的点的个数小于椭圆周长的四分之一,所以以椭圆周长的四分之一的倒数与i乘积作为步长进行遍历即可得到四分之一椭圆弧长上的点的坐标。即利用式(1-8)~(1-10)的周长公式,计算出椭圓的周长丄。因此遍历时参数f的步进长度W如式(2-2)所示口2;r/Z(2-2)申请保存椭圆上点的变量£尸为了保存计算得到的椭圆上的像素点坐标,需要申请一个存放椭圆上像素点坐标的变量。首先定义一个像素点坐标的结构体,定义的格式如下structPointintxjintyj};由于椭圆上像素点的个数事先是不知道的,因此使用C++STL中的vector,向内存申i青一个Point类型的vector,申i青的变量如下std::vector<Point>EP那么接下来就可以按照范围和步进长度遍历参数^了。变量£P保存椭圓上像素点的条件由于遍历的次数大于椭圆四分之一弧长上像素点的个数,因此在往变量W中存放弧长上像素点时先判断该点是否与变量£户中的最后一个点相同,如果相同的话就不保存该像素点。因此往变量五尸中存入椭圓上像素点的条件就是本次计算出来的像素点坐标与'保存在变量五尸中的最后一个像素点坐标不相同。这样遍历之后,变量五P中就恰好包含了椭圆四分之一弧长上的像素点坐标。保存椭圆上像素点的同时保存对应的三角函数值首先定义结构floatsinV;floatcosV;};在遍历时,将符合变量保存椭圆上像素点条件的参数r对应的正弦和余弦值保存起来。同样申请一个sincosValue结构类型的vector来保存对应的正弦余弦值。申请变量为std::vector<sincosValue>SCV注意,在保存余弦值时在其前面加一个负号,即取其相反数。如图3所示,这是因为保存起来的这些正弦余弦值是为了计算第二个四分之一椭圆弧长上对应像素点的坐标使用的,而余弦函数补角的余弦等于本身余弦的相反数,所以在保存的时候将其余弦值前面加一个负号(即是乘以数-1)。在遍历的同时,即在向变壹M中存入^f象素点坐标时,也向变量SCV中按照上述要求存入正弦和余弦值。这样在遍历之后,变量SCV中就恰好包含了椭圆第二个四分之一弧长上计算像素点坐标要使用的所有正弦和余弦值。2、计算第二个四分之一椭圆弧长上点的坐标遍历保存的变量SCV变量SCV在遍历参数,之后恰好包含了椭圆第二个四分之一弧长上计算像素点坐标要使用的所有正弦和余弦值。因此,结合椭圆的参数方程式(1-6),将式中的sinf和co"分别用变量SCV中的正弦和余弦值来代替并遍历变量SCV,即可得到第二个四分之一椭圆弧长上所有'^f象素点的坐标。将计算得到的像素点坐标同样保存到变量肿中,那么遍历SCV之后,变量£户.中就保存了连续相连的二分之一椭圆弧长上所有像素点的坐标03、计算并保存倾^H陶圆其余二分之一弧长上对应点的坐标遍历保存的变量五p由于变量£尸中已经保存了连续相连的二分之一椭圆弧长上所有像素点的坐标,因此根据椭圆的中心对称性,如果变量五尸中保存了点,则该点关于椭圆中心的对称点^没为(jc',力,则它们之间的关系如式(4-1)所示根据式(4-1)将变量五P中保存的像素点坐标遍历一遍,即可得出其余二分之一弧长上像素点的坐标。在遍历的同时将计算出的像素点坐标存入变量五户,这样在遍历完成时,变量EP中已经保存了椭圆上所有点的坐标。4、将倾斜椭圆上所有的点送达显示器显示将已经保存了倾斜椭圆上所有点的坐标通过GDI函数即全部显示在屏幕上,那么一个倾斜的椭圆也就显示在了屏幕上。在实际应用中使用者需要快速高效的绘制出自己所需要的倾斜的椭圆。那么,如果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可知,绘制倾斜楠圆所需的四个参数分别为&_,、,+^3QyC2+y2X3+,3,(6墨2)2一"(6-3)sin^=Z2_ZAc画—x2+A2(6-4)根据式(6-1)—(6-4)及式(1-6)可得,利用三个输入点的坐标得到的倾斜椭圆的参数方程如式(6-5)所示x=^-^os卜Cv2—W——sm/+^-L^2fl2(0^<2;r)(6-5)22a2根据式(6-5)及如前所述的计算并保存椭圆上点的方法,即可将根据三个坐标点计算出来的椭圆显示在屏幕上。确定并记录第一个输入点的坐标A此时,鼠标所在的位置即为第一个输入点A的位置。移动鼠标可以对点A进行选择。单击鼠标左键,系统响应VC中的OnMouseDown消息把点A的值就确定为当前鼠标的位置。确定并记录第二个输入点的坐标尸2在确定了第一个点《的坐标之后,移动鼠标,系统响应vc中的OnMouseMove消息,并把当前鼠标的位置作为第二个输入点g的坐标进行计算和显示。由于在绘制椭圆时需要三个点才能绘制出来,为了能在第一个点确定之后的移动鼠标过程中显示出椭圆,首先给出了一个固定的默认短半轴长度的值,这样在移动鼠标的时候,就可以将椭圆显示出来。如图5所示便是确定第一个输入点的坐标之后,在移动鼠标过程中的情形。此时,再次单击鼠标左4建,系统响应VC中的OnMouseDown消息把鼠标的位置坐标赋值给点户2。确定并记录第三个输入点的坐标户3在将鼠标的位置坐标赋值给点S之后,继续移动鼠标,系统响应VC中的OnMouseMove消息,则此时显示的椭圆即是用鼠标位置作为第三个输入点的坐标来进行计算和显示的。此时,再次单击鼠标左键,系统响应VC中的OnMouseDown消息把鼠标的位置坐标赋值给点g,从而最终确定了椭圆的位置和大小,并在屏幕上显示,如图6所示。本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的4又利范围之内。权利要求1、一种在计算机屏幕上绘制倾斜椭圆的方法,其特征在于,包括Al、确定要绘制的椭圆的中心点坐标、短轴长度、长轴长度和沿计算机屏幕坐标系的倾斜角;A2、根据所述椭圆的短轴长度、长轴长度计算所述椭圆的周长L;A3、根据如下公式计算并保存所述椭圆的第一个四分之一弧长的屏其中(x、y)是所述椭圆的屏幕坐标,a是所述椭圓的长轴长度,b是所述椭圆的短轴长度,^是所述椭圆沿计算机屏幕坐标系的倾斜角,(c,,c》是所述椭圆的中心点坐标,参数/的步进长度&根据公式D2;r/i:计算,计算坐标的同时将参数,对应的正弦值及余弦值的相反数保存;A4、根据所述参数,对应的正弦值及余弦值的相反数计算并保存所述椭圆的第二个四分之一弧长的屏幕坐标;A5、才艮据所述椭圆的第一个和第二个四分之一弧长的屏幕坐标及如下公式计算并保存所述椭圆的其余屏幕坐标A6、将所述椭圓的屏幕坐标送计算机屏幕显示。2、根据权利要求1所述的在计算机屏幕上绘制倾斜椭圆的方法,其特征在于^使用C++STL中的向量来存^L所述椭圆的坐标值。步骤:幕坐标:3、一种在计算机屏幕上绘制倾斜椭圆的方法,其特征在于,包括步骤Bl、在计算才几屏幕上任取三个不在同一直线上的三个点尸,'、户2、尸3并保存其相应的坐标<formula>formulaseeoriginaldocumentpage3</formula>第一点/U^W与第二点A(A,;g构成需绘制椭圆的对称轴顶点,第三点户3(^3,>0到所述对称轴的距离设为所述椭圓的另一对称轴的半轴长度;B2、根据如下公式计算所述椭圆的长轴长度a和短轴长度b:B3、根据所述椭圓的短轴长度、长轴长度计算所述的椭圆的周长L;B4、根据如下公式计算并保存所述椭圆的第一个四分之一弧长的屏幕坐标<formula>formulaseeoriginaldocumentpage3</formula>其中(x、y)是所述椭圆的屏幕坐标,a是所述椭圆的长轴长度,b是所述椭圆的短轴长度,参数,的步进长度^根据公式口,=2"/丄计算,计算坐标的同时将参数f对应的正弦值及余弦值的相反数保存;B5、根据所述参数f对应的正弦值及余弦值的相反数计算并保存所述椭圆的第二个四分之一弧长的屏幕坐标;B6、根据所述椭圓的第一个和第二个四分之一弧长的屏幕坐标及如'下公式计算并保存所述椭圓的其余屏幕坐标<formula>formulaseeoriginaldocumentpage4</formula>B7、将所述椭圆的屏幕坐标送计算机屏幕显示。4、稂据权利要求3所述的在计算机屏幕上绘制倾斜椭圆的方法,其特征在于使用C++STL中的向量来存放所述椭圆的坐标值。5、根据权利要求4所述的在计算机屏幕上绘制倾斜椭圆的方法,其特征在于在计算机屏幕上任取二个点及设定默认的所述椭圆的半轴长度绘制所速倾斜椭圆。全文摘要一种在计算机屏幕上绘制倾斜椭圆的方法,包括步骤A1、确定要绘制的椭圆的中心点坐标、短轴长度、长轴长度和沿计算机屏幕坐标系的倾斜角;A2、根据所述椭圆的短轴长度、长轴长度计算所述椭圆的周长L;A3、根据公式计算并保存所述椭圆的第一个四分之一弧长的屏幕坐标;A4根据所述参数t对应的正弦值及余弦值的相反数计算并保存所述椭圆的第二个四分之一弧长的屏幕坐标;A5、根据所述椭圆的第一个和第二个四分之一弧长的屏幕坐标及公式计算并保存所述椭圆的其余屏幕坐标;A6、将所述椭圆的屏幕坐标送计算机屏幕显示。本发明在计算机屏幕上绘制倾斜椭圆的方法简捷、高效、实用,是椭圆绘制方法的一大进步。文档编号G06T11/00GK101145241SQ20071012432公开日2008年3月19日申请日期2007年10月30日优先权日2007年10月30日发明者程延俊,陈闽峰申请人:深圳市蓝韵实业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1