《计算机图形学》系统使用说明书

欧阳鸿荣 161220096

(南京大学 计算机科学与技术系 南京 210093)

【摘要】:本绘图系统模拟了Windows下的绘图工具,实现了直线、曲线、圆、椭圆和多边形的输入,编辑和平移、旋转缩放等变换功能,同时实现了直线的裁剪、任意区域的填充以及二维图形的存储功能,能够将绘制出来的图形保存为图像。并且支持三维模型的显示,能够载入并显示一个OFF格式的三维模型。2D图像的操作主要通过鼠标,3D图像的操作主要通过键盘,交互方便,界面清新简洁。

《计算机图形学》系统使用说明书1.综述1.1 基本功能:1.2 扩展功能:1.3 演示2.开发环境与编译说明3.程序运行说明4.程序使用说明4.1 打开画面:4.2 创建新画布:4.3 直线的输入和编辑:4.3.1.直线的输入:4.3.2 直线的编辑:4.3.3 直线的变换:4.4 曲线的输入和编辑4.4.1 曲线的输入:4.4.2 曲线的编辑:4.4.3 曲线的变换:4.5 圆的输入和编辑:4.5.1 圆的输入:4.5.2 圆的编辑:4.5.3 圆的变换:4.6 椭圆的输入和编辑:4.6.1 椭圆的输入:4.6.2 椭圆的编辑:4.6.3 椭圆的变换:4.7 多边形的输入和编辑:4.7.1 多边形的输入:4.7.2 多边形的编辑:4.7.3 多边形的变换:4.8 填充:4.9 保存:4.10 3D图形的显示:4.10.1 打开OFF文件4.10.2 调整查看3D模型方式4.11 撤销:4.12 清屏:4.13 颜色选择:4.14 打开文件:4.15 画笔和笔刷:4.16关于:5.致谢

1.综述

1.1 基本功能:

  1. 二维图形的输入功能:
    • 直线、曲线、圆、椭圆、多边形的输入实现

      • 类画图软件,用鼠标交互
      • 直线实现了Bresenham和DDA算法
      • 曲线实现了贝塞尔曲线
      • 圆实现了Bresenham和中点圆算法
      • 椭圆实现了中点椭圆算法
    • 填充区域的输入

      • 实现了类似油漆桶的功能,使用的是洪泛填充算法
      • 鼠标点击区域,洪泛填充与区域颜色相同的区域
  2. 二维图形的编辑功能:
    • 直线、曲线、圆,椭圆,多边形的编辑

      • 直线能编辑起点、终点
      • 曲线能编辑贝赛尔曲线的各个控制点
      • 圆能编辑半径
      • 椭圆能编辑长轴a和短轴b的长度
      • 多边形能编辑任意顶点
      • 鼠标点击拖动交互编辑,更加自由
  3. 二维图形的裁剪功能
    • 实现直线的裁剪

      • 使用梁友栋算法对直线进行裁剪
    • 裁剪窗口可用鼠标点击拖动输入

    • 裁剪后的图形仍然可以编辑

  4. 二维图形的变换功能
    • 直线、曲线、圆、椭圆、多边形的平移

    • 直线、曲线、圆、椭圆、多边形的旋转

      • 任意角度旋转

      • 直线、圆的旋转实现了精度控制

        • 旋转次数不多的情况下,长度/半径误差在1以内
    • 直线、曲线、圆、椭圆、多边形的缩放

    • 对变换后的图形仍然可以编辑

  5. 二维图形的存储功能
    • 可以将绘制出来的图形保存为图像
  6. 三维模型的显示功能
    • 可以载入并显示一个OFF格式的三维模型
    • 载入后可以通过键盘控制观察的视角和三维模型的旋转

1.2 扩展功能:

  1. 画布的创建,多画布切换
  2. 颜色的选择
  3. 增加了画笔和笔刷的功能
  4. 清屏和撤销的功能
  5. 打开图片编辑的功能

1.3 演示

2.开发环境与编译说明

系统名语言和框架IDE编译器
PaintYoungC++和Qt 5.11.2Qt CreatorMinGW 5.3.0

本绘图系统名为YoungPaint,基于C++和Qt 5.11.2,于Qt Creator上开发,编译环境为MinGW 5.3.0。

编译开发的构建配置如下图:

3.程序运行说明

程序通过deployqt工具打包,并且通过Enigma Virtual Box工具集成在了161220096_可执行文件.exe文件中,可以直接点击运行使用。使用时如果有未响应事件,再次点击运行即可。

4.程序使用说明

为了更好地展现使用效果,我采用GIF图的形式。但是PDF不能显示GIF,因此还麻烦助教能够打开我提供的markdown版本或者html版本查看更为详细的使用说明。如有不便,十分抱歉。

4.1 打开画面:

4.2 创建新画布:

4.3 直线的输入和编辑:

4.3.1.直线的输入:
4.3.2 直线的编辑:
4.3.3 直线的变换:

4.3.4 直线的裁剪:

4.4 曲线的输入和编辑

4.4.1 曲线的输入:
4.4.2 曲线的编辑:
4.4.3 曲线的变换:

4.5 圆的输入和编辑:

4.5.1 圆的输入:
4.5.2 圆的编辑:
4.5.3 圆的变换:

4.6 椭圆的输入和编辑:

4.6.1 椭圆的输入:
4.6.2 椭圆的编辑:
4.6.3 椭圆的变换:

4.7 多边形的输入和编辑:

4.7.1 多边形的输入:
4.7.2 多边形的编辑:
4.7.3 多边形的变换:

4.8 填充:

4.9 保存:

4.10 3D图形的显示:

4.10.1 打开OFF文件
4.10.2 调整查看3D模型方式

4.11 撤销:

4.12 清屏:

4.13 颜色选择:

4.14 打开文件:

4.15 画笔和笔刷:

4.16关于:

5.致谢

感谢孙正兴老师和张岩老师的辛勤教学,感谢各位助教在百忙之中解答我的各种疑惑,感谢我的舍友和系友们在关于大作业的各种问题给我的指导和帮助。