againcy / CG_Exp_2d

图形学实验2D部分

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CG_Exp_2d

图形学实验2D部分

沿用了CG_Exp2的Curve类和Canvas类,增加了Polygon类表示多边形,并修改了Canvas类

点击开始绘制多边形/直线/圆 可以开始绘制,直接在工作区鼠标点击即可,也可以手动输入坐标参数。

填充算法在Canvas类中实现了,UI没有做

Canvas.cs: 包含了对于画布(图层)的操作。同时存储了所有的图元信息。包含需要实现的以下算法: 递归填充算法,边界为点阵表示的扫描线填充算法,图像填充算法,Liang-Barsky线段裁剪,Weiler-Atherton多边形裁剪算法

Curve.cs: 包含了直线和圆类。封装了以下算法: Bresenham画线算法,中点圆算法。对外接口均为getPoints(),为获取直线或圆上的所有点。

Polygon.cs: 包含了多边形类和矩形类(暂时矩形是独立的一个类)。多边形类中主要包含以下接口: 往多边形中加点,判断多边形是否自相交,将裁剪时所需的一系列交点坐标按顺序插入多边形顶点中(存储在clipVertex中),判断点是否在多边形中,将多边形顶点存储顺序改为顺时针。

CG_Tools.cs: 包含了一些常用函数,有: 计算两点间距离,求叉积,判断点是否在线段上,判断线段是否相交,求线段交点。 mainFrm.cs: 和UI有关的一些函数

About

图形学实验2D部分


Languages

Language:C# 100.0%