目录
综述
算法介绍
直线生成
DDA算法
Bresenham算法
多边形的生成
椭圆的生成 中点圆生成算法
在实现的时候遇到的小问题
曲线的生成
B样条曲线
图元的平移
图元的旋转
图元的缩放
线段的裁剪
Cohen-Sutherland算法
Liang-Barsky 算法
6. 具体的操作步骤如下:
额外的一些算法
2. 边表(Edge Table):所有边按下端点的y坐标归类
3. 排序。如果有新边插入 AET,则对 AET 中各边排序;
镜像变换
系统介绍
CLI
GUI
概述
主要布局
画布部分
原理概述
色彩笔宽部分
图元操作部分
线段裁剪部分
重置画布部分
主题部分
总结
参考文献
B样条曲线
图元的旋转
Cohen-Sutherland算法
扫描线算法
图标
综述
本实验主要为了实现一个图形绘制系统,主要内容包括了底层算法实现,命令行系统完善和图形界面系 统(pyqt)的实现;
根据大实验的具体要求,主要通过Python3完成了以下模块的内容: 核心算法模块:cg algorithm.py(除Liang-Barsky完成)
命令行界面程序:cg cli.py(完成)
用户交互界面(待做)
算法介绍
直线生成
DDA算法
DDA算法是计算机图形学基本的绘制直线算法,主要的思想来源 ,显然,已知两个端点就可以知道k和b具体的值;
在已知k,b的情况下,只需要知道x,y中的一个就可以通过直线公式求到另一边的值;假设已知x,那么
y=kx+b;假设已知y,那么x=(1/k)*(y-b)
实际操作中绘画直线是一个迭代的过程,如果使用DDA算法,相对于前一个 ,后一个点
可以记作:
yStep,xStep即步长是通 的比较确定的:
如果dx>dy,那么说明x轴方向上面两个点的距离更远,那么设 反之,说明y轴方向上面两个点的距离更远,设
当然在具体实现上面还需要考虑斜率为正无穷的情况和斜率为0的情况,这个时候进行特判就可以实现了;