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

文档序号:9922499阅读:1636来源:国知局
一种模拟圆规实现绘制圆的方法
【技术领域】
[0001]本发明涉及一种绘制圆的方法,尤其涉及一种模拟圆规实现绘制圆的方法。
【背景技术】
[0002]常规的教学方法是黑板和粉笔,当今是信息化时代,电脑及手机移动设备给人们的生活、学习方面带了很多便捷;因此,也产生了很多教学软件、网络授课,那么就急需一些授课工具作为基石。传统绘制圆的方式通常都是通过圆规进行绘制的,在教学过程中使用起来不太方便,故而,需提供一种模拟圆规绘制圆的工具,方便老师进行网络教学。

【发明内容】

[0003]本发明要解决的技术问题,在于提供一种模拟圆规实现绘制圆的方法,可以基于编程实现虚拟圆规绘制圆,达到直观形象、易学易用的教学目的。
[0004]本发明是这样实现的:
[0005]—种模拟圆规实现绘制圆的方法,包括如下步骤:
[0006]步骤10、创建绘图工程,定义一窗口作为画布窗口,在该画布窗口上添加画布控件,并确定所述画布控件上的操作接口 ;
[0007]步骤20、确定圆规所要实现的功能操作,所述功能操作包括对圆规整体进行移动、对圆规的半径大小进行拉伸、对圆规进行旋转及对圆进行绘制;
[0008]步骤30、确定圆规数学几何图形模型的结构,通过所述操作接口获取一矩形的位置信息,根据该矩形的位置信息及所述圆规数学几何图形模型的结构计算出所述圆规数学几何图形模型中各个顶点的坐标信息;
[0009]步骤40、确定所述圆规数学几何图形模型的控制区域,所述控制区域包括移动控制区域、拉伸控制区域、旋转控制区域及绘制控制区域;
[0010]步骤50、根据各个顶点的坐标信息填充及绘制出所述圆规数学几何图形模型,并构建出所述控制区域,判断操作点是否位于所述控制区域内,即判断操作点是否满足相应的控制条件,若满足,则在不同的控制区域内进行相应的功能操作;若不满足,则不进行任何操作;
[0011]步骤60、根据所述圆规数学几何图形模型提供的圆心及半径大小,并结合绘图工具完成圆的绘制。
[0012]进一步地,所述步骤50中在不同的控制区域内进行相应的功能操作,具体如下:
[0013]如果操作点满足移动操作控制条件,则通过移动所述矩形的位置对圆规整体进行移动;如果操作点满足拉伸操作控制条件,则通过拉伸所述矩形的位置对圆规的半径大小进行拉伸;如果操作点满足旋转操作控制条件,则通过旋转所述矩形的位置对圆规进行旋转;如果操作点满足绘制操作控制条件,则对圆进行绘制。
[0014]进一步地,所述操作接口为鼠标操作接口或触控操作接口。
[0015]本发明具有如下优点:本发明可以基于编程工具实现虚拟圆规绘制圆,达到直观形象、易学易用的教学目的。
【附图说明】
[0016]下面参照附图结合实施例对本发明作进一步的说明。
[0017]图1为本发明一种模拟圆规实现绘制圆的方法执行流程图。
[0018]图2为圆规数学几何模型图。
[0019]图3为本发明最终构建出来的圆规图。
[0020]图4为本发明的圆规绘制圆过程示意图。
[0021]图5为本发明的第一种拉伸操作效果示意图。
[0022]图6为本发明的第二种拉伸方式控制区域及旋转控制区域示意图。
[0023]图7为本发明的第二种拉伸操作效果示意图。
[0024]图8为本发明的整体移动效果示意图。
[0025]图9为本发明的旋转效果示意图。
【具体实施方式】
[0026]为使得本发明更明显易懂,现以一优选实施例,并配合附图作详细说明如下。
[0027]本发明是基于编程实现,只要是面向对象任何编程语言都可以作为本发明的实现工具。本实施例中采用Delphi作为编程工具,并结合GDI+绘图库进行实现,当然如果采取其他的开发语言或者工具也可以实现本发明的内容,只是开发语言和工具不同而已,而思路方法还是一样的。
[0028]如图1所示,本发明的一种模拟圆规实现绘制圆的方法,包括如下步骤:
[0029]步骤10、创建绘图工程,定义一窗口作为画布窗口,在该画布窗口上添加画布控件,并确定所述画布控件上的操作接口(画布控件上一般会有很多响应事件的回调函数,比如说:鼠标、键盘、多点触控、手势等,我们称为这些回调函数为操作接口;如果我们要实现某个响应事件,比如说鼠标,只要把鼠标相应回调函数的实现部分进行完善其功能代码即可,实现过程中用到的鼠标位置等参数信息,都是由响应事件的回调函数直接得到;这边的操作接口为鼠标或触控这两个事件的响应函数操作接口);具体说明如下:
[0030](I)建立绘图工程,定义一窗口作为画布窗口,在该画布窗口上放置画布控件:TPaintbox,其中,画布控件也可以不用TPaintbox,只要有绘图设备句柄,能支持⑶I及⑶I+绘图机制的任何控件都可以;
[0031 ] (2)定义在画布窗口上操作的基本操作接口,所述操作接口为鼠标操作接口或触控操作接口;
[0032]鼠标操作:按下(mousedown)、移动(mousemove)、弹开(mouseup),如下:
[0033]procedure MouseDown(Sender:TObject;
[0034]Button:TMouseButton;Shift:TShiftState;X,Y:1nteger);
[0035]procedure MouseMove(Sender:TObject;
[0036]Shift:TShiftState;X,Y:1nteger);
[0037]procedure MouseUp(Sender:TObject;
[0038]Button:TMouseButton;Shift:TShiftState;X,Y:1nteger);
[0039]触控操作:按下(touchdown)、移动(touchmove)、弹开(touchup),这边按下、移动、弹开的入口函数都一样,如下:
[0040]procedure WMT0UCH(var Msg:TMessage);message WM—TOUCH;
[0041]具体是什么动作,由系统传过来的消息体TMessage及系统相关API可以获取,本发明要说明的是从这些基本入口函数(无论是鼠标还是触控)要获取画布设备传过来的原始坐标信息;
[0042]步骤20、确定圆规所要实现的功能操作,所述功能操作包括对圆规整体进行移动、对圆规的半径大小进行拉伸、对圆规进行旋转及对圆进行绘制;
[0043]步骤30、确定圆规数学几何图形模型的结构,通过所述操作接口获取一矩形的位置信息,根据该矩形的位置信息及所述圆规数学几何图形模型的结构计算出所述圆规数学几何图形模型中各个顶点的坐标信息,圆规数学几何模型见图2;而图3为本发明最终构建出来的圆规图;本步骤中如果没有特别说明,那么涉及到的长度衡量单位都为设备的基本单位,比如为显示器设备,那么其基本单位为像素;本步骤具体如下:
[0044]步骤301、定义圆规数学几何图形模型的输入参数为矩形的四个点A、B、C、D,按图2所示构成的矩形,矩形的GDI+定义为:
[0045]RectOut:TGPRectF;
[0046]那么有:
[0047 ] AD = Re ctOut.Width;
[0048]AB = RectOut.Height ;
[0049]PointA.X = RectOut.X;
[0050]PointA.Y = RectOut.Y ;
[0051]PointB.X = RectOut.X;
[0052]PointB.Y = RectOut.Y+Rect0ut.Height ;
[0053]PointC.X = RectOut.X+Rect0ut.Width ;
[0054]PointC.Y = RectOut.Y+Rect0ut.Height ;
[0055]PointD.X = RectOut.X+Rect0ut.Width ;
[0056]PointD.Y = RectOut.Y ;
[0057]步骤302、定义圆弧FEG(E为AD的中点),弦长FG = 30,对应的圆心角为120度,那么就可以推算出对应的半径为:10*sqrt(3),sqrt(3)为3的开根号。即:
[0058]PointE.X = RectOut.X+Rect0ut.Width/2 ;
[0059]PointE.Y = RectOut.Y ;
[0060]圆心(PointCenterFEG)的坐标为:
[0061 ] PointCenterFEG.X = PointE.X ;
[0062]PointCenterFEG.Y = PointE.Y+1 O^sqrt(3);
[0063]算出圆弧的外接矩形(RoundRect):
[0064]RoundRect.X = PointCenterFEG.X-10*sqrt(3);
[0065]RoundRect.Y = PointCenterFEG.Y-1O^sqrt(3);
[0066]RoundRect.Width = 2* 10*10*sqrt(3);
[0067]RoundRect.Height = 2* 10*10*sqrt(3);
[0068]步骤303、圆弧旁边的两条线:FFl、GG1两条线的端点坐标:
[0069](I)算出辅助点E3,即HK的中点:
[0070]Po intE3.X=PointE.X;
[0071]规定:
[0072]PointE3.Y = PointE.Y+40 ;
[0073](2)算出点F坐标:
[0074]由于FG = 30,因此:
[0075]Po intF.X = PointE.X-15;
[0076]容易算出圆心到弦的距离为:5*sqrt(3),因此:
[0077]PointF.Y = PointCenterFEG.Y-5*Sqrt(3);
[0078](3)算出点Fl坐标:
[0079]规定:
[0080]PointFl.X = PointE3.Χ_10;
[0081]PointFl.Y = PointE3.Y;
[0082](4)算出点G坐标:
[0083]规定:
[0084]PointG.X = PointE.X+15;
[0085]PointG.Y = PointCenterFEG.Y-5*Sqrt(3);
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1