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

文档序号:6610600阅读:339来源:国知局

专利名称::一种在计算机屏幕上绘制倾斜虚椭圆的方法
技术领域
:本发明涉及计算机图形
技术领域
,具体涉及一种在计算机屏幕上绘制倾斜虚椭圓的方法。
背景技术
:在计算机领域的许多场合,要使巧相对于计算机屏幕倾斜的椭圆(椭圆的长轴与显示屏幕坐标系的X轴既不平行也不垂直)来表示一定的区域,比如大多医学图像的病灶区域,在计算机屏幕上都需要用倾斜的椭圆来描绘并显示出来。而目前在计算机屏幕上能够使用的大多是普通的椭圆(椭圆的长轴平行或垂直于显示屏幕坐标系的x轴)而不能快速绘制倾斜椭圆。在B超的常规测量和专业计算部分要经常使用倾斜椭圓来描述某组织部位的信息,由于实线绘制的倾斜椭圆有些情况下会影响到医学图像中的病灶信息,因》b有必要给出倾斜虚椭圆的^制方法。
发明内容本发明要解决的技术问题是提供一种在计算机屏幕上绘制倾斜虚椭圆的方法,克服现有技术不能在计算机屏幕上快速绘制倾斜虚椭圆的缺陷。本发明为解决上述技术问题所采用的技术方案为一种在计算机屏幕上绘制倾斜虚椭圓的方法,包括步骤.Al、确定要绘制的虚椭圆的中心点坐标、短轴长度、长轴长度、沿计算机屏幕坐标系的倾斜角和间隔像素数;A2、根据所述虚椭圓的短轴长度、长轴长度计算所述虚椭圆的周长A3、根据如下公式计算并保存所述虚椭圆对应的实椭圆的第一个四'分之一弧长的屏幕坐标其中(x、y)是所述实椭圓的屏幕坐标,a是所述虚椭圆的长轴长度,b是所述虚椭圆的短轴长度,^是所述虚椭圆沿计算机屏幕坐标系的倾斜角,(q,cg是所述虚椭圆的中心点坐标,参数,的步进长度a根据公式n^2;r/i:计算,同时记录保存的像素点个数,在保存第一个点的像素坐标后,对后续的各点像素坐标,如果保存本次像素点坐标后,像素点个数恰好为所述间隔像素数的整数倍时,则将本次保存的像素点坐标同时存入第一向量中,''计算坐标的同时将第一向量中参数,对应的正弦值及余弦值的相反数保存;A4、根据第一向量中参数f对应的正弦值及余弦值的相反数计算并保存所述虚椭圆的第二个四分之一弧长的屏幕坐标;.A5、根据所述虚椭圆的第一个和第二个四分之一弧长的屏幕坐标及如下公式计算并保存所述虛椭圆的其余屏幕坐标A6、将所述虚椭圆的屏幕坐标送计算机屏幕显示。所述的在计算机屏幕上绘制倾斜虚椭圆的方法,其中使用C++STL中的向量来存放所述虚椭圆和其对应的实椭圆的坐标值。所述的在计算机屏幕上绘制倾斜虚椭圆的方法,其中所述间隔像素数设为20。一种在计算机屏幕上绘制倾斜虚椭圆的方法,包括步骤Bl、在计算才几屏幕上任取三个不在同一直线上的三个点A、P2、尸3并保存其相应的坐标(J^,.h)、(x2,y2)、(x3,;;3),第一点A(A,乂)与第二点A(A,h)构成需绘制的虚椭圆的对称轴顶点,第三点尸3(13到所述对称轴的距离"&为所述虚椭圆的另一对称轴的半轴长度;B2、根据如下公式计算所述虚椭圆的长轴长度a和短轴长度b:<formula>formulaseeoriginaldocumentpage8</formula>B3、根据所述虛椭圆的短轴长度r长轴长度计算所述的虛椭圆的周长L;B4、根据如下公式计算并保存所述虚椭圆对应的实椭圓的第一个四分之一弧长的屏幕坐标<formula>formulaseeoriginaldocumentpage8</formula>其中(x、y)是所述椭圆的屏'幕坐标,a是所述椭圆的长扭长度,b是所述椭圓的短轴长度,参数/的步进长度"根据合式口/=2^£计算,确定所述虚椭圆的间隔像素数,同时记录保存的像素点个数,在保存第一个点的像素坐标后,对后续的各点像素坐标,如果保存本次像素点坐标后,像素点个数恰好为所述间隔娘素数的整凄史倍时,则将本次保存的像素点坐标同时存入第一向量中,计算坐标的同时将第一向量中参数,对应的正弦值及余弦值的相反B5、根据第一向量中参数/对应的正弦值及余弦值的相反数计算并保存所述虚椭圆的第二个四分之一弧长的屏幕坐标;B6、根据所述虚椭圆的第一个和第二个四分之一弧长的屏幕坐标及如下公式计算并保存所述虚椭圆的其余屏幕坐标B7、将所述虛椭圆的屏幕坐标送计算机屏幕显示。所述的在计算机屏幕上绘制倾斜虚椭圆的方法,其中使用C++STL中的向量来存》文所述虚椭圆和其对应的实椭圓的坐标值。所述的在计算机屏幕上绘制倾斜虛椭圆的方法,其中在计算机屏幕上任取二个点及设定默认的所述虚椭圓的半轴长度绘制所述倾斜虚椭圆。所述的在计算机屏幕上绘制倾斜虛椭圆的方法,其中所述间隔像素数设为20。本发明的有益效果为本发明在计算机屏幕上绘制倾斜虛椭圆的方法简捷、高效、实用,是椭圆绘制方法的一大进步。图1为现有技术计算机屏幕坐标系示意图;图2为现有技术计算机屏幕坐标系旋转一定角度的示意图;数保存;图3为本发明椭圆关于坐标系轴对称的点之间的坐标关系示意图;图4为本发明屏幕上三个点与倾斜虛椭圆之间的关系示意图;图5为本发明根据屏幕上二个点及默认短半轴长度绘制的倾斜虛椭圆示意图;图6为本发明根据屏幕上三个点绘制的倾斜虚椭圓示意图。具体实施方式下面根据附图和实施例对本发明作进一步详细说明椭圆函数的标准参数方程椭圆有两条对称轴,焦点所在的对称轴称为焦点轴,两条对称轴的交点,称为椭圆的中心。对称轴与椭圆的交点称为椭圆的顶点',焦点轴上两顶点的线段称为椭圓的长轴,另一轴上两顶点间的线段称为椭圓的短轴。若长轴长为2a,短轴长为26,则分别称量a与6为椭圆的长半轴和短半轴。那么中心在原点的椭圆的标准方程如式(1-1)所示由于在绘制椭圆的过程中.需要的是椭圆上各个点的坐标,而由标准方程不易求出各个点的坐标,所以将其转化为参数方程进行求解各个点的坐标。其参数方程如式(1-2)所示如图1所示,针对屏幕的坐标系而言,其坐标原点位于屏幕的左上顶点处,因此在屏幕上显示的完整椭圆都是中心不在坐标原点的椭圆。不妨假设椭圆中心点c的坐标为(c,,c》,则椭圆的方程就变成了式(1-3)所示的形式<formula>formulaseeoriginaldocumentpage11</formula>(1-3)转换为参数方程如式(1-4)所示<formula>formulaseeoriginaldocumentpage11</formula>(l腸4)旋转后的椭圆参数方程如图2所示,坐标系义-y如果逆时针旋转e角度,则原坐标系中任意一点2(U)经过旋转后的新坐标0c,力的表达式如式(1-5)所示(l國5)由中心坐标平移后的椭圆参数方程式(1-4)及坐标旋转公式(1-5)可知,当椭圆以原点为中心逆时4f旋转e角后的参数方程如式'(l-6)所示<formula>formulaseeoriginaldocumentpage11</formula>(1-6)椭圆的周长计算根辨椭圆的定义,知道焦距是椭圆两个焦点之间的线段长度,记作2c。由几何关系可得长半轴a、短半轴6和焦距的一半c之间的关系如式(1-7)所示c=Va2-62(1-7)那么椭圆的周长Z可以用式(1-8)~(1-10)来表示1.当6>2时,周长£的表达式如式(1-8)所示2a+6ac(l隱8).当6=^时,周长Z的表达式如式(1-9)所示:Z=a/;t262+4c2W+4c2(1-9)3.当6<2时,周长丄的表达式如式(1-10)所示:+6;r262+4c2(1-10)ac绘制倾斜虚椭圆需要的几个参数由旋转后的椭圆参数方程可以知逸,只需要参数fl、参数6、椭圆的中心位置坐标和逆时针旋转的角度^即可绘制出实椭圆(椭圓上的像素点是连续的)。而为了绘制出虚椭圓,使用者要给出自己想要的间隔像素个数SC(SpacingCount),即从实椭圆的像素中,每隔个像素显示一个像素坐标从而构成虚椭圆。表0-1需要使用的5个参数<table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table>1.计算实椭圓和相应的虚椭圆的四分之一弧长上对应点的坐标组成实椭圓像素点的数目与其周长之间的关系由于计算机屏幕上的点均是以像素来表示的,所以都是整数。又因为椭圆的周长等于椭圆上各个相邻点之间距离的和,而椭圆上每两个相邻点的距离则等于两个相邻或相邻对角上两个像素的距离。对于计算机屏幕上的像素而言,每两个相邻像素的距离定义为两个像素中心之间的长度,这个长度正好是一个像素的宽度或者说是一个像素的高度。也因此椭圓的周长一定大于组成椭圆的像素个数。利用参数方程计算四分之一椭圓弧长上的点的坐标在得知长半轴"、参数短半轴6和逆时针旋转的角度e之后,根据式(l-6)所示的^it方程,遍历参数/,(0^<|)即可。根据椭圆的轴对称性质和中心对称性质,只需求得椭圆上四分之一弧长上的点的坐标即可根据对称性得到其余各点。因此遍历的范围如式(2-1)所示<formula>formulaseeoriginaldocumentpage13</formula>遍历时参数f的步进长度由于四分之一椭圆弧长上的点的个数小于椭圆周长的四分之一,所以以椭圆周长的四分之一的倒数与£乘积作为步长进行遍历即可得到四分之一椭圆弧长上的点的坐标。即利用式(1-8)~(1-10)的周长z^式,计算出椭圆的周长丄。因此遍历时参数/的步进长度^如式(2-2)所示□f=2;r/Z(2國2)申请保存虚椭圆上点的变量£户为了保存计算得到的虚椭圓上的像素点坐标,需要申请一个存放虚椭圆上像素点坐标的变量。首先定义一个像素点坐标的结构体,定义的格式如下<formula>formulaseeoriginaldocumentpage14</formula>由于虚椭圆上像素点的个数事先是不知道的,因此使用C++STL中的vector,向内存申i青一个Point类型的vector,申i奮的变量》口下std::vector<Point>EP那么接下来就可以按照范围和步进长度遍历参数f了。变量£P保存虚椭圆上像素点的条件由于虚椭圓上像素点的个数事先是不知道的,而且要每隔个像素点向变量£尸中存入一个虚椭圆上的像素点,因此需要再申请一个临时变量,用来存放实椭圆四分之一弧长上所有的像素点。使用C++STL中的vector,向内存申请一个Point类型的vector,申请的临时变量如下std::vector<Point>QuarterTemp于是往变量QuarterTemp中存入实椭圆上像素点坐标的条件就是本次计算*来的像素点坐标与保存在变量QuarterTemp中的最后一个像素点坐标不相同。这样遍历之后,变量QuarterTemp中就恰好包含了实椭圆四分之一弧长上的像素点坐标。在遍历时,同时记录变量QuarterTemp中存》文的像素点个数,在存入第一个点的像素坐标后,对后续的实椭圓上各点像素坐标,如果变量QiiarterTemp中存入本次像素点坐标后,像素点个数恰好为间隔像素数SC的整数倍时,要将本次存入QuarterTemp的像素点坐标同时存入变量£i>中,这就是存入虚椭圆上像素点的条件。这样遍历之后,变量£P中就恰好包含了虚椭圆四分之一弧长上每隔SC个像素点的像素点坐标。保存虚椭圆上像素点的同时保存对应的三角函数值首先定义结构structsincosValuefloatsinV;floatcosV;};在遍历时,将符合变量保存虚椭圆上像素点条件的参数,对应的正弦和余弦值保存起来。同样申请一个sincosValue结构类型的vector来保存对应的正弦余弦值。申请变量为std::vector<sincosValue>SCV注意,在保存余弦值时在其前面加一个负号,即取其相反数。如图3所示,这是因为保存起来的这些正弦余弦值是为了计算第二个四分之一椭圆弧长上对应像素点的坐标使用的,而余弦函数补角的余弦等于本身余弦的相反数,所以在保存的时候将其余弦值前面加一个负号(即是乘以数國l)。在遍历的同时,即在向变量五P中存入像素点坐标时,也向变量SCV中按照上述要求存入正弦和余弦值。这样在遍历之后,变量scv中就恰好包含了虚椭圆第二个四分之一弧长上计算像素点坐标要使用的所有正弦和氽弦4直。2、计算第二个四分之一虚椭圆弧长上点的坐标遍历保存的变量SCV变量SCV在遍历参数f之后恰好包含了虚椭圆第二个四分之一弧长上计算像素点坐标要使用的所有正弦和余弦值。因此,结合椭圆的参数方程式(1-6),将式中的sin/和cos^分别用变量SCV中的正弦和余弦值来代替并遍历变量SCV,即可得到第二个四分之一椭圆弧长上每间隔像素个数SC的像素点的坐标。将计算得到的像素点坐标同样保存到变量中,那么遍历SCV之后,变量五尸中就保存了相连的二分之一虚椭圆弧长上所需要的像素点的坐标。3、计算'并保存倾斜虚椭圆其余二分之一弧长上对应点的坐标遍历保存的变量EP由于变量M中已经保存了二夯之一虚椭圆弧长上像素点的坐标,因此根据椭圆的中心对称性,如果变量M中保存了点Oc,力,则该点关于椭圆中心(q,S)的对称点设为(x',力,则它们之间的关系如式(4-1)所示根据式(4-1)将变量M中保存的像素点坐标遍历一遍,即可得出其余二分之一虚椭圆弧长上像素点的坐标。在遍历的同时将计算出的像素点坐标存入变量五尸,这样在遍历^成时,变量五P中已经保存了虚椭圆所有点的像素坐标。4、将倾斜虚椭圓上所有的点送达显示器显示将已经保存的倾斜虚椭圆上所有像素点的坐标通过GDI函数全部显示在屏幕上,那么一个倾斜的虚椭圆也就显示在了屏幕上。(4-1)在实际应用中使用者需要快速高效的绘制出自己所需要的倾斜的椭圆。那么,如果操作者为了绘制一个倾斜的椭圆不断的调整长半轴fl、短半轴6和逆时针旋转的角度^的值,进而绘制出自己需要的椭圆,未免会费神费力。因此为了方侵使用者,该实例的输入是依次用鼠标确定三个不在同一条直线上的三个点。不妨将这三个点的分别设为S(x,A)、P2(;c2,_y2)、尸303,少3)。本实例中参数间隔像素个数SC设定为20。三个坐标点到绘制虛椭圆需要的参数间的转换如图4所示,第一个输入的点^(Xp力)作为椭圆的第一个顶点,第二个输入的点P2(x2,h)作为椭圆的第二个顶点。这两个顶点构成了椭圆的一条对称轴(长轴或短轴),记线段i^的长度为Z^。第三个输入的点户303,>^)到直线段^>2之间的距离2)3作为另外一个半轴的长度。也即是说,如果Z),一2A,那么A2就是长轴的长度,而A就是短半轴的长度。换言之,如果马2<2/)3,则A为长轴的长度,马2为短半轴的长度。本实例中所选的椭圆按照第一种情况,即/)12>21)3来进行操作。由图4可知,绘制倾斜虚椭圆所需的四个参数分别为2&=l"^++—OlA+>^3+(6墨2)2a(6陽3)2a'2(6-4)广—Zi±A广2根据式(6-1)~(6-4)及式(1-6)可得,利用三个输入点的坐标得到的倾斜虚椭圓的参数方程如式〖6-5)所示<formula>formulaseeoriginaldocumentpage18</formula>根据式(6-5)及如前所述的计算并保存椭圆上点的方法,即可将根据三个坐标点计算出来的椭圆显示在屏幕上。确定并记录第一个输入点的坐标《此时,鼠标所在的位置即为第一个输入点^的位置。移动鼠标可以对点^进行选择。单击鼠标左键,系统响应VC中的OnMouseDown消息才艮据当前鼠标的位置确定点A的值。确定并记录第二个输入点的坐标尸2在确定了第一个点^的坐标之后,移动鼠标,系统响应VC中的OnMouseMove消息,并把当前鼠标的位置作为第二个输入点户2的坐标进行计算和显示。由于在绘制虚椭圆时需要三个点才能绘制出来,为了能在第一个点确定之后的移动鼠标过程中显示出椭圆,首先给出了一个固定的默认短半轴长度的值,这样在移动鼠标的时候,就可以将虚椭圓显示出来。如图5所示便是确定第一个输入点的坐标之后,在移动鼠标过程中的情形。此时,再次单击鼠标左键,'系统响应VC中的OnMouseDown消息把鼠标的位置坐标赋值给点P2。确定并记录第三个输入点的坐标尸3在将鼠标的位置坐标赋值给点g之后,继续移动鼠标,系统响应VC中的OnMouseMove消息,则此时显示的虚椭圆即是用鼠标位置作为第三个输入点的坐标来进行计算和显示的。此时,再次单击鼠标左键,系统响应VC中的OnMouseDown消息把鼠标的位置坐标赋值给点尸3,从而最终确定了虚椭圆的位置和大小,升在屏幂上显示,如图6所示。本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的4又利范围之内。权利要求1、一种在计算机屏幕上绘制倾斜虛椭圓的方法,其特征在于,包括步骤Al、确定要绘制的虚椭圆的中心点坐标、短轴长度、长轴长度、沿计算机屏幕坐标系的倾斜角和间隔像素数;A2、根据所述虚椭圆的短轴长度、长轴长度计算所述虚椭.圆的周长A3、根据如下公式计算并保存所述虚椭圆对应的实椭圆的第一个四分之一弧长的屏幕坐标fx=acos/cosP_6sin"in^+"斗'0S"工L_y=acos"in夕+Z)sin"os0+c》2其中(x、y)是所述实椭圆的屏幕坐标,a是所述虚椭圆的长轴长度,b是所述虚椭圓的短轴长度,》是所述虛椭圆沿计算机屏幕坐标系的倾斜角,(。,c》是所述虚椭圆的中心点坐标,参数,的步进长度W根据公式W-2;r/i:计算,同时记录保存的像素点个数,在保存第一个点的像素坐标后,对后续的所述实椭圆上各点像素坐标,如果保存本次像素点坐标后,像素点个数恰好为所述间隔像素数的整数倍时,则将本次保存的像素点坐标同时存入第一向量中,计算坐标的同时将第一向量中参数,对应的正弦值及余弦值的相反数保存;A4、根据第一向量中参数f对应的正弦值及余弦值的相反数计算并保存所述虚椭圆的第二个四分之一弧长的屏幕坐标;A5、.根据所述虛椭圆的第一个和第二个四分之一弧长的屏幕坐标及如下公式计算并保存所述虛椭圆的其余屏幕坐标A6、将所述虚椭圆的屏幕坐标送计算机屏幕显示。2、根据权利要求1所述的在计算机屏幕上绘制倾斜虚椭圆的方法,其特征在于使用C++STL中的向量来存放所述虚椭圓和其对应的实椭圆的坐标值。3、根据权利要求2所述的在计算机屏幕上绘制倾斜虚椭圆的方法,其特征在于所述间隔像素数设为20。4、一种在计算机屏幕上绘制倾斜虚椭圆的方法,其特征在于,包括步骤Bl、在计算机屏幕上任取三个不在同一直线上的三个点iVp2、户3并保存其相应的坐标(、,h)、02,少2)、(x3,y3),第一点/1(X,乂)与第二点p2(x2,_y2)构成需绘制的虛椭圓的对称轴顶点,第三点户3(13,a)到所述对称轴的距离设为所述虚椭圓的另一对称轴的半轴长度;B2、根据如下公式计算所述虚椭圆的长轴长度a和短轴长度b:<formula>formulaseeoriginaldocumentpage3</formula>B3、根据所述虚椭圓的短轴长度、长轴长度计算所述的虚椭圆的周长L;B4、根据如下公式计算并保存所述虛椭圆对应的实椭圆的第一个四分之一弧长的屏幕坐标<formula>formulaseeoriginaldocumentpage4</formula>其中(x、y)是所述椭圓的屏幕坐标,a是所述椭圆的长轴长度,b是所述椭圆的短轴长度,参数,的步进长度W根据公式W=2;r/Z计算,确定所述虚椭圆的间隔像素数,同时记录保存的像素点个数,在保存第一个点的像素坐标后,对后续的所述实椭圆上各点像素坐标,如泉保存本次像素点坐标后,像素点个数恰好为所述间隔像素数^整数倍时,则将本次保存的像素点坐标同时存入第一向量中,计算坐标的同时将第一向量中参数对应的正弦值及余弦值的相反数保存;.B5、根据第一向量中参数f对应的正弦值及余弦值的相反数计算并保存所述虚椭圆的第二个四分之一弧长的屏幕坐标;.B6、根据所述虚椭圓的第一个和第二个四分之一弧长的屏幕坐标及如下公式计算并保存所述虚椭圆的其余屏幕坐标B7、将所述虚椭圓的屏幕坐标送计算机屏幕显示。5、根据权利要求4所述的在计算机屏幕上绘制倾斜虚椭圆的方法,其特征在于使用C++STL中的向量来存放所述虚椭圆和其对应的实椭圆的坐标值。'<formula>formulaseeoriginaldocumentpage4</formula>6、根据权利要求5所述的在计算机屏幂上绘制倾斜虛椭圆的方法,其特征在于在计算机屏幕上任取二个点及设定默认的所述虚椭圆的半轴长度绘制所述倾斜虚椭圓。7、根据权利要求6所述的在计算机屏幕上绘制倾斜虚椭圆的方法,其特征在于所述间隔^像素数设为20。全文摘要一种在计算机屏幕上绘制倾斜虚椭圆的方法确定虚椭圆的中心点坐标、短轴和长轴长度、倾斜角和间隔像素数;计算虚椭圆的周长L;计算并保存实椭圆的第一个四分之一弧长的屏幕坐标,记录保存的像素点个数,在保存第一点的像素坐标后,对后续各点像素坐标,如果保存本次像素坐标后,像素点个数恰好为间隔像素数的整数倍,则将本次保存的像素点坐标存入第一向量中,将第一向量中参数t对应的正弦及余弦值的相反数保存;根据第一向量中参数t对应的正弦及余弦值的相反数计算并保存虚椭圆的第二个四分之一弧长的屏幕坐标;根据虚椭圆的第一个和第二个四分之一弧长的屏幕坐标及公式计算并保存虚椭圆的其余屏幕坐标;将虚椭圆的屏幕坐标送计算机屏幕显示。文档编号G06T11/00GK101145242SQ20071012432公开日2008年3月19日申请日期2007年10月30日优先权日2007年10月30日发明者程延俊,陈闽峰申请人:深圳市蓝韵实业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1