一种模拟圆规实现绘制圆的方法_4

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

[0332](7)构建路径 QMNSQ:
[0333]FoPathQMNSQ.AddLine(PointQ,PointM);
[0334]FoPathQMNSQ.AddLine(PointM,PointN);
[0335]FoPathQMNSQ.AddLine(PointN,Points);
[0336]FoPathQMNSQ.AddLine(Points,PointQ);
[0337](8)构建路径 TV4V5QZ1SUZ2T:
[0338]FoPathTV4V5QZlSUZ2T.AddLine(Po intT, Po intV4);
[0339]FoPathTV4V5QZlSUZ2T.AddLine(PointV4,PointV5);
[0340]FoPathTV4V5QZlSUZ2T.AddLine(PointV5,PointQ);
[0341]FoPathTV4V5QZlSUZ2T.AddBezier(PointQ,PointZl,PointZl,Points);
[0342]FoPathTV4V5QZlSUZ2T.AddLine(PointSjPointU);
[0343]FoPathTV4V5QZlSUZ2T.AddBezier(PointU,PointZ2,PointZ2,PointT);
[0344]AddBezier:添加贝塞尔曲线;
[0345]步骤503、实现步骤102定义的鼠标、触控操作,具体如下:
[0346]如果操作点满足移动操作控制条件,则通过移动所述矩形的位置对圆规整体进行移动;如果操作点满足拉伸操作控制条件,则通过拉伸所述矩形的位置对圆规的半径大小进行拉伸;如果操作点满足旋转操作控制条件,则通过旋转所述矩形的位置对圆规进行旋转;如果操作点满足绘制操作控制条件,则对圆进行绘制。
[0347]无论是鼠标还是触控操作,从原理上来说都是一样的,都是接收到画布设备底层传过来的点Qx(XJ),在此步骤都涉及到前后两点:Q1、Q2,后一点减前一点:
[0348]Q2-Q1 = (Q2.X-Ql.X,Q2.Y-Ql.Y) = (dx,dy)。
[0349]要判断点Qx(XJ)落在步骤40所描述的某个控制区域,例如某个路径Path***,要判断该点是否在该路径区域上,则通过如下方式判断即可:
[0350]如果该点落在该控制区域内,那么下面条件为真:
[0351]Path***.IsVisible(X,Y)
] (I)判断满足旋转控制操作条件为:点Ql与点RotatePointAttr的距离小于设定的经验值,在本案例中经验值为:1O,该值一般为图6中AA圆圈的半径,图9的效果,SP:
[0353]distance(PointQl ,RotatePointAttrXlO ;
[0354]在该操作中,圆心点PointO固定不变,旋转角度为角Q10Q2,外围矩形顶点A、B、C、D围绕点O旋转,已知Q1、Q、Q2三点坐标,容易算出角Q10Q2大小;比如说Q1、Q、Q2三点依次连接构成一个三角形,那么就可以通过三角形的余弦定理算出角Q10Q2的大小。
[0355]定:01(乂1,¥1),02(乂2,丫2),0(乂0,¥0),角叭002的大小为&,01绕着旋转中心点0旋转a角度得到Q2;
[0356]由旋转公式,得:
[0357]X2 = (Xl-X0)*cos(a)-(Yl-Y0)*sin(a)+X0;
[0358]Y2 = (Xl-X0)*sin(a) + (Yl-Y0)*cos(a)+Y0;
[0359 ]由上面旋转公式可以算出旋转后A、B、C、D坐标;
[0360] (2)类似(I),那么判断满足通过图中BB区域进行拉伸,即图7效果的条件为:[0361 ]distance (PointQl,ExtendPointAttr)〈10
[0362]在该操作中线段AB的中点E在整个过程中为定点,A、B两点的Y坐标没变,旋转后A、B、C、D四点的坐标变换为:
[0363]PointA.X = PointA.X-dx;
[0364]PointB.X = PointB.X-dx;
[0365]PointB.Y = PointB.Y+dy ;
[0366]PointC.X = PointC.X+dx;
[0367]PointC.Y = PointC.Y+dy ;
[0368]PointD.X = PointD.X+dx;
[0369 ](3)图5为操作效果,控制条件为:
[0370]满足条件:FoPathTV4V5QZlSUZ2T.1sVisible(X,Y)
[0371]不满足条件:FoPathHIJKH.1sVisible(X,Y)
[0372]操作的前后两点,后一点减前一点得:(dx,dy),
[0373]在此操作PointA ,PointB保持不变
[0374]PointC.X = PointC.X+dx;
[0375]PointC.Y = PointC.Y+dy ;
[0376]PointD.X = PointD.X+dx;
[0377]PointD.Y = PointD.Y+dy ;
[0378](4)图4为绘制圆过程,控制条件为:
[0379]FoPathRMLPNR.1sVisible(X1Y)
[0380]其控制效果跟(I)是一样的效果,只是在该步骤中多了一步:绘制出圆弧,详细见步骤60;
[0381](5)图8为整体移动操作控制效果,控制条件为:
[0382]FoPathFFlGlGEF.1sVisible(X1Y)
[0383]或
[0384]FoPathFFlGlGF.1sVisible(X1Y)
[0385]或
[0386]FoPathHIJKH.1sVisible(X1Y)
[0387]或
[0388]FoPathVXYV2V3V.1sVisible(X1Y)
[0389]或
[0390]FoPathXOYXV.1sVisible(X1Y)
[0391]在该控制中,A、B、C、D,都做了平移;
[0392]Point*.X = Point*.X+dx;
[0393]Point*.Y = Point*.Y+dy;
[0394]步骤60、根据所述圆规数学几何图形模型提供的圆心及半径大小,并结合绘图工具完成圆的绘制,具体说明如下:
[0395]上面步骤50描述中提到的绘制过程,每次在画布设备上发生移动过程迭代产生Ql(父1,¥1)、0202,¥2)及每次都会计算出一个圆心角&,从第一次开始移动算起,对这个圆心角做迭代累加存到变量angle,圆心即点PointO,半径大小即为点PointO与点PointR的距离。有了这些信息,再结合绘图API就可以绘制圆弧了,比如说在本例中使用GDI+库,那么其绘制圆弧的函数为:
[0396]g.DrawArc(.......);
[0397]不同的图形绘图库绘制圆弧的API调用参数可能会存在差别,但由上面提到参数都可以换算出所需的调用参数。
[0398]说明:在步骤50描述中涉及到填充色及绘制颜色,在实际中可以提供相应的方式来修改颜色值,而不是在本案例说明设定的固定值。
[0399]虽然以上描述了本发明的【具体实施方式】,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
【主权项】
1.一种模拟圆规实现绘制圆的方法,其特征在于:包括如下步骤: 步骤10、创建绘图工程,定义一窗口作为画布窗口,在该画布窗口上添加画布控件,并确定所述画布控件上的操作接口 ; 步骤20、确定圆规所要实现的功能操作,所述功能操作包括对圆规整体进行移动、对圆规的半径大小进行拉伸、对圆规进行旋转及对圆进行绘制; 步骤30、确定圆规数学几何图形模型的结构,通过所述操作接口获取一矩形的位置信息,根据该矩形的位置信息及所述圆规数学几何图形模型的结构计算出所述圆规数学几何图形模型中各个顶点的坐标信息; 步骤40、确定所述圆规数学几何图形模型的控制区域,所述控制区域包括移动控制区域、拉伸控制区域、旋转控制区域及绘制控制区域; 步骤50、根据各个顶点的坐标信息填充及绘制出所述圆规数学几何图形模型,并构建出所述控制区域,判断操作点是否位于所述控制区域内,即判断操作点是否满足相应的控制条件,若满足,则在不同的控制区域内进行相应的功能操作;若不满足,则不进行任何操作; 步骤60、根据所述圆规数学几何图形模型提供的圆心及半径大小,并结合绘图工具完成圆的绘制。2.根据权利要求1所述的一种模拟圆规实现绘制圆的方法,其特征在于:所述步骤50中在不同的控制区域内进行相应的功能操作,具体如下: 如果操作点满足移动操作控制条件,则通过移动所述矩形的位置对圆规整体进行移动;如果操作点满足拉伸操作控制条件,则通过拉伸所述矩形的位置对圆规的半径大小进行拉伸;如果操作点满足旋转操作控制条件,则通过旋转所述矩形的位置对圆规进行旋转;如果操作点满足绘制操作控制条件,则对圆进行绘制。3.根据权利要求1所述的一种模拟圆规实现绘制圆的方法,其特征在于:所述操作接口为鼠标操作接口或触控操作接口。
【专利摘要】本发明提供一种模拟圆规实现绘制圆的方法,包括:10、创建绘图工程,定义一窗口作为画布窗口,在画布窗口上添加画布控件,确定操作接口;20、确定功能操作;30、建立圆规数学几何图形模型,确定圆规数学几何图形模型中各个顶点的坐标信息;40、确定圆规数学几何图形模型的控制区域;50、根据各个顶点的坐标信息填充及绘制出圆规数学几何图形模型,并构建出控制区域,判断操作点是否满足相应的控制条件,若满足,则在不同的控制区域内进行相应的功能操作;否则,不操作;60、根据圆规数学几何图形模型提供的圆心及半径大小,并结合绘图工具完成圆的绘制。本发明是基于编程工具实现虚拟圆规画圆,达到直观、易学易用的教学目的。
【IPC分类】G06T11/20, G09B23/04
【公开号】CN105701849
【申请号】CN201610121290
【发明人】丁万年, 洪文洁, 陈日良, 何永安
【申请人】锐达互动科技股份有限公司
【公开日】2016年6月22日
【申请日】2016年3月4日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1