![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机图形学
我是一名好学者
学问勤中得,萤窗万卷书。三冬今足用,谁笑腹空虚?
展开
-
二维图形裁剪
一、点裁剪对于点P(x,y)P(x, y)P(x,y)在窗口内的充分必要条件是:{Wxl≤x≤WxrWyl≤x≤Wyr\begin{cases}W_{x_l}\leq x \leq W{x_r}\\W_{y_l}\leq x\leq W{y_r}\end{cases}{Wxl≤x≤WxrWyl≤x≤Wyr满足上述条件的不等式组的点应该在窗口内;二、线段裁剪2.1 基本概念线段相对于该窗口的情况有(1)线段全部位于窗口的内部(A);(2)线段全部位于窗口外部(B原创 2020-06-21 15:25:45 · 2262 阅读 · 0 评论 -
平面图形区域填充
基本图形生成一、概述1.1 画直线的引入在计算机产生的图形中,用到大量的直线,画好直线是非常有意义的。1.2 绘制直线的要求线条应该显得笔直:由连续点组成的直线要显示在离散网格的平面上,一定会有不经过网格的点。在这种情况下,必须选择靠近直线的网格点来逼近这条直线。若选择的好,线就显得较直;否则就会较弯曲。直线端点位置应该准确:画出的线段如果不准确,往往会使两条线之间不能很好的镶接,如下图。直线浓度应该均匀:线段的浓度与单位线段中所显示的点数成正比。要保持线段的浓度均匀端点应该等距分原创 2020-06-20 08:50:37 · 1651 阅读 · 0 评论 -
直线的生成与显示
直线的生成与显示一、基本概念1.1 画直线的引入在计算机产生的图形中,用到大量的直线,画好直线是非常有意义的。1.2 绘制直线的要求线条应该显得笔直:由连续点组成的直线要显示在离散网格的平面上,一定会有不经过网格的点。在这种情况下,必须选择靠近直线的网格点来逼近这条直线。若选择的好,线就显得较直;否则就会较弯曲。直线端点位置应该准确:画出的线段如果不准确,往往会使两条线之间不能很好的镶接,如下图。直线浓度应该均匀:线段的浓度与单位线段中所显示的点数成正比。要保持线段的浓度均匀端点应原创 2020-06-19 19:05:05 · 674 阅读 · 0 评论 -
中点画圆法详解
中点画圆法一、算法原理利用圆的对称性,只须讨论1/8圆,即下图第二个8分圆区域:P为当前像素,那么,下一个像素可能是P1(Xp+1,Yp)或P2(Xp +1,Yp -1)。原创 2020-06-08 07:33:03 · 4791 阅读 · 0 评论 -
Bresenham算法详解
Bresenham算法一、思想通过各行、各列像素中心构造一组虚拟网格线,按照直线起点到终点的顺序,计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素。二、推导假设每次xxx增加111,yyy的递增(减)量为000或111,它取决于实际直线与最近光栅网格点的距离,这个距离的最大误差为0.50.50.5。误差项ddd的初值d0=0d_0=0d0=0,且d=d+k (0<k<1)原创 2020-06-03 11:37:12 · 6786 阅读 · 2 评论 -
数值微分法(DDA)详解
数值微分法(DDADDADDA)一、原理假定直线的起点、终点分别为:(x0,y0)(x_0,y_0)(x0,y0),(x1,y1)(x_1,y_1)(x1,y1),且都为整数。则过端点P0(x0,y0)P_0 (x_0, y_0)P0(x0,y0),P1(x1,y1)P_1(x_1, y_1)P1(x1,y1)的直线段L:y=kx+bL:y=kx+bL:y=kx+b,直线斜率为:k=y1−y0x1−x0 (x1≠x0)k=\frac{y_1-y_0}{x_1-x原创 2020-06-02 19:57:03 · 12322 阅读 · 7 评论 -
计算机图形学概述
文章目录一、 图形学基本概念1.1 基本概念1.2 图形及构成要素1.3 计算机中表示图形的方法1.4 计算机图形学的定义1.5 学科间关系1.6 图形学、图像处理、模式识别的异同二、计算机图形学的发展2.1 图形技术发展2.2 历史追溯三、图形学研究内容及趋势四、图形技术的应用4.1 计算机辅助设计与制造(CAD/CAM)4.2 电子出版及办公自动化4.3 计算机动画、娱乐及艺术4.4 地形地貌及地理信息系统4.5 计算机仿真4.6 科学可视化4.7 真实感图形4.8 虚拟现实(Virtual Real原创 2020-06-02 10:24:26 · 4895 阅读 · 0 评论 -
基于MFC的圆环的消隐实现
基于MFCMFCMFC的圆环的消隐实现本文是在上一篇博客基于MFCMFCMFC的凸多面体的消隐实现的基础上实现。添加头文件#include"math.h"设置圆环的绘制IDIDID为ID_YuanhuanID\_YuanhuanID_Yuanhuan,添加事件相应程序OnYuanhuan()OnYuanhuan()OnYuanhuan()。实现代码void CDrawConvexPolygonView::OnYuanhuan(){ // TODO: 在此添加命令处理程序代码 CClient原创 2020-05-19 15:18:25 · 1273 阅读 · 0 评论 -
基于MFC的凸多面体的消隐实现
基于MFC的凸多面体的消隐实现本文实现程序的IDEIDEIDE是VS2017VS 2017VS2017。一、新建项目此处就不再赘述,没有有MFCMFCMFC基础可以先看第一个MFC的程序。设置项目名为DrawConvexPolygonDrawConvexPolygonDrawConvexPolygon。二、宏定义初始化在DrawConvexPolygonView.hDrawConvexPolygonView.hDrawConvexPolygonView.ht头文件最上方添加宏定义。#d原创 2020-05-19 15:09:52 · 2067 阅读 · 2 评论 -
基于MFC的透视投影算法实现
基于MFCMFCMFC的透视投影算法实现本文是在上一篇博客基于MFC的平行投影算法实现的基础上实现透视投影中的一点透视。两种方法实现一、添加事件处理程序实现设置IDIDID为ID_YidiantoushiID\_YidiantoushiID_Yidiantoushi,添加事件处理程序OnYidiantoushi()OnYidiantoushi()OnYidiantoushi()。void CParallelProjectionView::OnYidiantoushi(){ // TODO: 在原创 2020-05-12 14:34:08 · 3787 阅读 · 0 评论 -
基于MFC的平行投影算法
基于MFCMFCMFC的平行投影算法实现本文实现程序的IDEIDEIDE是VS 2017VS\ 2017VS 2017。一、新建项目此处就不再赘述,没有有MFCMFCMFC基础可以先看第一个MFCMFCMFC的程序。设置项目名为ParallelProjectionParallelProjectionParallelProjection。二、类定义初始化在ParallelProjectionView.hParallelProjectionView.hParallelProjec原创 2020-05-12 13:40:51 · 2794 阅读 · 1 评论 -
基于MFC的字符生产与旋转算法实现
基于MFCMFCMFC的字符生产与旋转算法实现本文程序的实现的IDEIDEIDE是VS 2017VS\ 2017VS 2017。一、新建项目此处就不再赘述,没有MFCMFCMFC基础可以先看第一个MFCMFCMFC的程序。设置项目名为GenerateCharacterGenerateCharacterGenerateCharacter。二、类初始化在GenerateCharacterView.hGenerateCharacterView.hGenerateCharacterV原创 2020-05-10 06:17:46 · 494 阅读 · 0 评论 -
基于MFC的多边形裁剪算法的实现
基于MFCMFCMFC的多边形裁剪算法的实现一、新建MFCMFCMFC项目此处就不再赘述,没有MFCMFCMFC基础的可以先看第一个MFCMFCMFC程序。设置项目名为PolygonClippingPolygonClippingPolygonClipping。【注】:以下没有特殊说明的,均在PolygonClippingView.cppPolygonClippingView.cppPolygonClippingView.cpp文件下编程。二、宏定义设置在适当位置设置宏。#define LEFT 1原创 2020-05-09 15:53:48 · 4207 阅读 · 5 评论 -
基于MFC的线段裁剪算法的实现
基于MFC的线段裁剪算法的实现一、新建MFC项目此处就不再赘述,没有MFCMFCMFC基础的可以先看第一个MFCMFCMFC程序。项目名为LineclippingLineclippingLineclipping二、宏定义设置在适当位置设置宏。#define LEFT 1#define RIGHT 2#define BOTTOM 4#define TOP 8#define XL ...原创 2020-05-06 08:52:40 · 3577 阅读 · 5 评论 -
基于MFC的种子填充算法的实现
基于MFCMFCMFC的种子填充算法的实现【注】:使用的IDEIDEIDE是VS 2017多边形填充算法包括:扫描线填充,边缘填充,以及种子填充。此处所给的是种子填算法。1、新建MFCMFCMFC项目此处就不再赘述,没有MFCMFCMFC基础的可以先看第一个MFC程序。项目名为PolygonfillPolygonfillPolygonfill2、全局变量CPoint spt[7], ...原创 2020-05-05 18:50:32 · 5667 阅读 · 6 评论 -
基于MFC的三种直线算法的实现
基于MFC的三种直线算法的实现1、DDA算法的实现实现代码void CGR1View::OnDdaline(){ // TODO: 在此添加命令处理程序代码 CDC *pDC = GetDC(); int x0 = 100, y0 = 100, x1 = 300, y1 = 200, c = RGB(255, 0, 0); int x, y, i; float dx, d...原创 2020-05-03 17:53:41 · 2911 阅读 · 0 评论 -
第一个MFC程序(基于VS 2017)
第一个MFCMFCMFC程序(基于VS 2017)一、新建MFCMFCMFC项目文件-》新建-》项目,选择MFCMFCMFC应用,点击确认。选择单个文档,其他不变,点击完成。二、打开MenuMenuMenu窗口视图-》其他窗口-》资源视图,或快捷键Ctrl+Shift+ECtrl+Shift+ECtrl+Shift+E点击MenuMenuMenu文件下的IDR_MA...原创 2020-05-03 16:29:29 · 1893 阅读 · 1 评论 -
Dev-C++ 5.11安装EGE图形库详细步骤
Dev-C++ 5.11安装EGE图形库详细步骤一、下载ege19.01_allDev-C++ 5.11二、安装将压缩包内的include里面的东西 (ege目录, ege.h, graphics.h) 复制到 C:\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include 目录下将压缩包内的 “libgraphics...原创 2020-03-11 19:54:14 · 7056 阅读 · 2 评论 -
中点画线算法详解
中点画线算法一、原理已知直线的一般式方程: F(x,y)=0F(x,y)=0F(x,y)=0, 即Ax+By+C=0Ax+By+C=0Ax+By+C=0其中:A=−(Δy)A=-(\Delta y)A=−(Δy)B=(Δx)B=(\Delta x)B=(Δx)C=−B(Δx)C=-B(\Delta x)C=−B(Δx)如图:代入m,当xm,ymx_m,y...原创 2020-03-10 23:47:08 · 6405 阅读 · 0 评论