论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP JSP .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 其他 代写论文
当前位置: 澳门大西洋城开户 > 计算机 > VC >

A450vc++简单几何图形的识别和编辑系统+论文

  运用最小二乘法进行直线拟合的公式如下:

copyright paper51.com

(待填充)

http://snowings.com

2.3 多义域分裂和单义域的识别 copyright paper51.com

对2.1中得到的多义域,运用最小二乘法进行拟合,对于拟合不成功的多义域运用首尾相连最大距离法进行分裂,得到单义域,并记录下各单义域的拟合结果,供全局考虑,识别直线和圆用。

http://snowings.com

算法描述如下:

copyright paper51.com

1.   从2.1得到的多义域列表里取第一个多义域; 内容来自论文无忧网 snowings.com

2.   对选中的多义域运用最小二乘法进行圆的拟合;如果得到的平均径向误差和最大径向误差小于指定阈值,则认为拟合成功,该多义域为一圆弧的单义域;记录拟合的结果,作为总体识别的种子圆,转向5执行,否则执行3。

内容来自snowings.com

3.   对选中的多义域运用最小二乘法进行直线拟合;如果得到的平均距离误差和最大距离误差小于指定阈值,则认为拟合成功,该多义域为一线段的单义域;记录拟合结果,作为总体识别的种子直线,转向5执行,否则执行4。

http://snowings.com

4.   该多义域为多个线段或圆弧的组合。将该多义域的头尾节点连接,计算该多义域中各点与头尾节点连线的距离,取距离最大的点,对该多义域进行分裂,得到两个新的多义域,取代原先的多义域;转向2执行。

内容来自论文无忧网 snowings.com

5.   取多义域列表中的下一个,转向2执行。 内容来自snowings.com

由此,所有的多义域都分裂为单义域,并对各单义域进行了拟合。 内容来自snowings.com

2.4 总体整合,识别直线和圆 paper51.com

对2.3得到的单义域列表进行总体的整合,得到直线和圆。 paper51.com

1.  选取单义域列表中的第一个单义域,将其拟合的图形(直线或圆)作为种子图形;

内容来自论文无忧网 snowings.com

2.  将列表中其他单义域的识别结果与种子图形进行比较,如果误差小于指定阈值,则属于同一直线或同一圆,将其与选定单一域进行合并,从列表中删除该单义域; http://snowings.com

3.  计算选定单义域的几何数据,得到图形;

内容来自snowings.com

4.  选取列表中的下一个单义域,转动2执行。 paper51.com

3.主要技术3.1 Borland C++ Builder 内容来自论文无忧网 snowings.com

本论文的编程环境之所以选用c++ builder 是因为他有以下的优点: http://snowings.com

⑴.输出入接口设计简单 内容来自snowings.com

⑵.提供一流的开发环境 copyright paper51.com

⑶.提供最标准的C/C++鲁开发工具 内容来自snowings.com

⑷.提供丰富的组件与最强劲的调试工具VCL类库中封装了Windows的图形设备接口(GDI),使得用户很方便地在应用程序添加图像或处理图像。

copyright paper51.com

图像类主要有Tbitmap、TBrush、TCanves、TFont、TgraphakControl、Tgraphic、Ticon、TJPEGImage、TPen和Tpictur以Tmatifile类。

内容来自论文无忧网 snowings.com

3.2 虚类及虚方法的使用

内容来自snowings.com

虚类和虚方法的使用在本论文中主要是Cshapes基类及虚方法的实现。 copyright paper51.com

第三章 直线和圆的识别和编辑的实现第一节 系统的层次结构的图示 内容来自论文无忧网 snowings.com

copyright paper51.com

第二节 系统数据结构及类的设计1.主要类的层次结构1.1 图形处理类:

copyright paper51.com

copyright paper51.com

1.2     识别用类:

内容来自snowings.com

copyright paper51.com

2.图形基类(CShape)2.1 描述

内容来自论文无忧网 snowings.com

图形基类,提供所有图形的标准属性和方法。其他图形类(直线、圆)等都是该类的子类,继承其所有的public属性和方法,对其中的虚方法(virtual)进行重定义和实现。

paper51.com

该类为虚类,其成员函数主要为虚函数,为其所有子类提供统一的接口,但是没有实现。其他模块对图形进行操作时,除非生成新的实例(Instance),都无须知道所操作的是哪个具体的图形,而统一使用Cshape类型,为程序的实现、扩充和维护提供很大方便。 paper51.com

2.2 实现 内容来自snowings.com

class CShape {

copyright paper51.com

 public:

http://snowings.com

/* 属性定义 */

paper51.com

//前景色(由于时间等的限制,本系统暂时只定义该图形的属性,其 paper51.com

//        他如:填充色,线条型,填充型等可扩充)

内容来自论文无忧网 snowings.com

    TColor color; http://snowings.com

    /* 编辑用属性 */

内容来自snowings.com

    //编辑时标志该图形是否被选择 copyright paper51.com

    bool isSelected;

copyright paper51.com

    //编辑操作所选中的点

http://snowings.com

    TPoint * editP

paper51.com

    /* 识别用属性 */ 内容来自snowings.com

    // 识别的效果描述,值越小说明识别效果越好

内容来自snowings.com

    //     最小二乘法的平均误差;

http://snowings.com

//     霍夫变换:1 - 参数空间中该图形的值/最大值 内容来自论文无忧网 snowings.com

    double chance;

paper51.com

    //图形上点的数量

paper51.com

    int pointCount;

内容来自snowings.com

    /* 成员函数定义 */

copyright paper51.com

    /* 显示和描述用方法 */ copyright paper51.com

    // 显示图形:在指定的位图上显示图形 内容来自snowings.com

    virtual voiddraw(Graphics::TBitmap * argDest); 内容来自论文无忧网 snowings.com

    // 描述图形:作为TtreeView的节点(主窗体使用)

http://snowings.com

    virtual void discript(intindex, TTreeView * tree); paper51.com

    // 描述图形:返回描述图形的字符串 内容来自论文无忧网 snowings.com

    virtual String discript(); copyright paper51.com

    /* 识别用 */ http://snowings.com

    // 比较两个图形,如果是同一个图形,返回True,否则False。

paper51.com

    //     直线上的两个线段;圆上面的两个圆弧

copyright paper51.com

    virtual boolsimilarWith(CShape * argShape); http://snowings.com

    // 合并两个图形 copyright paper51.com

    //     经过判断为相同的图形进行合并,返回True;否则返回False。

copyright paper51.com

    virtual boolmergeWith(CShape * argShape); 内容来自snowings.com

    // 判断图形存在的可能性(利用具体图形的几何规则) 内容来自snowings.com

    virtual bool checkPossible(); paper51.com

    /* 编辑用 */

内容来自snowings.com

    // 判断是否点击该图形,若选中则当前编辑的图形改为当前图形

内容来自论文无忧网 snowings.com

    virtual boolisClickOnShape(int x, int y); copyright paper51.com

    // 取得鼠标形状:鼠标移动到选中图形的可操作点上时,显示为编辑形状

内容来自论文无忧网 snowings.com

    virtual TCursorgetCursor(int x, int y); paper51.com

    // 更新图形:将编辑点移动到(x, y)点。更新成功返回True,否则False。

copyright paper51.com

    virtual bool update(int x,int y); 内容来自snowings.com

}; 内容来自snowings.com

3.图形类(CLine、CCircle)3.1 描述

http://snowings.com

图形类是几何图形的具体实现,实现对应几何图形的描述和相关操作。图形类有共同的父类CShape,对父类中定义的虚方法根据本几何图形的特征进行实现。

copyright paper51.com

根据要求,本系统中实现了直线(CLine)和圆(CCircle)两个图形类。其他简单的几何图形如椭圆、矩形等也可以类似的方法实现,作为本系统的一个扩充。

copyright paper51.com

本系统中,直线类采用直观的的形式来描述直线(既避免点斜式不能描述竖直直线,也避免极坐标方程转换的问题)。因为成比例的两组表示同一条直线,所以规定,如果B参数不为0,则,否则A必定不为0,则。由于要识别图像中的线段,所以增加两个端点进行限制。 http://snowings.com

直线类有三个点可以编辑:1)两个端点,选中一个端点并移动,是以另一端点为轴进行旋转;2)线段的中点,选中中点并移动,是平移整个直线。

copyright paper51.com

圆类采用的形式描述(其中为圆心,R为半径),直观方便。圆上有两个点支持编辑操作:1)圆心,选中圆心并移动,是平移整个圆;2)圆上的一个点,选中该点并移动,是改变圆的半径,圆心不变。

copyright paper51.com

------分隔线----------------------------
联系方式