A. sierpinski地毯的分形维数是多少
3 Gouraud颜色渐变203
10.1.1 算法原理56
3.1.2.3.3.3.7.1.2.1.1.4 分形维数的定义158
8.3.2.4 B样条曲线的性质146
7.2.5 C字曲线168
8.1 中点分割直线裁剪算法原理103
5.1.4 小结52
习题252第3章 基本图形的扫描转换55
3.1.4.1 三视图115
6.2 材质模型和光照模型205
10.2.2 随机扫描显示器8
1.4 Peano-Hilbert曲线171
8.5.2 Koch曲线161
8.1 纹理定义209
10.3 边界条件133
7.3.6.4 Bezier曲线137
7.3 边缘填充算法80
4.7.2.2.2 MFC上机操作步骤28
2.3 旋转变换矩阵92
5.2.1 平移变换109
6.2.4.2 Koch曲线170
8.4.4.0绘图基础21
2.4 四邻接点填充算法和八邻接点填充算法84
4.1.5.5 透视投影分类125
6.2 圆的扫描转换57
3.2 比例变换矩阵91
5.3 椭圆的扫描转换60
3.3 Hermite样条曲线135
7.2 二次B样条曲线143
7.5 小结85
习题485第5章 二维变换和裁剪89
5.2 双三次Bezier曲面的定义141
7.4 连续性条件131
7.3.5.1 规范化齐次坐标89
5.3 漫反射光模型206
10.1 直线的扫描转换55
3.3 真实感图形显示技术19
1.1.1.3 计算机图形学的相关学科5
1.2.2 构造中点偏差判别式56
3.1 填充原理82
4.3.5 枫叶生成182
8.3.4 区域填充算法82
4.2 构造上半部分I中点偏差判别式62
3.1.2 有效边表填充算法75
4.1.2.2 填充过程80
4.2.3 二维复合变换95
5.6.2.2 分形的基本特征157
8.4.4 反走样技术66
3.3.5 直线距离加权反走样算法67
3.5.2 IFS175
8.2 TestView.5.7 三维显示器15
1.5.4.2 曲面体消隐算法192
9.1 Cantor集160
8.2.3 算法的几何意义104
5.2.2.2 构造距离判别式69
3.5.4 边表79
4.5.3 三次B样条曲线144
7.1 计算机图形学的应用领域1
1.3 交点计算公式102
5.1.3 分形的定义158
8.2 三次参数样条曲线132
7.5 Bezier曲面141
7.3.4 区域填充74
4.2.1 L系统文法169
8.2 画家算法197
9.1 实面积图形的概念72
4.1 颜色模型201
10.4.6 等离子显示器15
1.1 Bezier曲线的定义137
7.5 错切变换112
6.3.3 窗视变换矩阵100
5.7 梁友栋-Barsky直线裁剪算法103
5.1.3 L系统模型169
8.1.1.4 设备上下文的调用和释放50
2.4.2 多边形的表示73
4.3 对象的动态建立和释放24
2.5 透视变换120
6.2 坐标系变换121
6.2 构造中点偏差判别式59
3.6 中点分割直线裁剪算法103
5.1 平移变换矩阵91
5.4.1 多边形的定义73
4.1 填充原理75
4.3 直视储存管显示器8
1.2 曲线曲面的表示形式130
7.2.7.1.1 计算机辅助设计1
1.3 分形草171
8.2.3.1 凸多面体消隐算法190
9.3 用户坐标系到观察坐标系的变换122
6.3.1 类和对象21
2.2 计算机图形学的概念4
1.7.3 四连通域和八连通域83
4.1.4 二维图形裁剪98
5.1.1 样条曲线曲面130
7.3.4 继承与派生25
2.2 三维基本几何变换矩阵109
6.1.5.1.5 小结198
习题9198第10章 真实感图形201
10.2 环境光模型206
10.2 系数求解133
7.3 TestView.1 交互技术18
1.4.7.4.4.4 二维几何变换90
5.1 图形的几何信息和拓扑信息187
9.2 中点计算公式103
5.1.5.4 构造下半部分II中点偏差判别式64
3.3 Bezier曲线的可分割性139
7.3 相对于任意方向的二维几何变换96
5.4 观察坐标系到屏幕坐标系的变换124
6.1 算法原理61
3.5 错切变换矩阵94
5.2 构造函数和析构函数22
2.4 反射变换111
6.1 Bezier曲面的定义141
7.4.2.2 纹理映射210
10.1 B样条曲线的定义143
7.3.3 多边形的填充74
4.3.4 IFS迭代函数系统模型174
8.4.3 隐线算法190
9.3 双三次B样条曲面的连续性150
7.3 CDC类的主要绘图成员函数34
2.3.2 窗口和视区及窗视变换99
5.2 二维图形基本几何变换矩阵91
5.2 四邻接点和八邻接点82
4.5.1.2.1 梁友栋算法原理103
5.4 光栅扫描显示器9
1.2.7.5 Cohen-Sutherland直线裁剪算法101
5.1 编码原理101
5.2.1.1 Z-Buffer算法194
9.2.2 三维几何变换108
6.1 三维变换矩阵108
6.2 比例变换109
6.6.1 面向对象程序设计基础21
2.2 造型技术18
1.6 Caley树168
8.1 算法原理67
3.3.4 投影变换115
6.6.1 图形几何变换基础89
5.1.2.1.2 Bezier曲线的性质139
7.2.5.8 小结152
习题7152第8章 分形几何156
8.5.6.3.4.4 Sierpinski垫片180
8.4 镜面反射光模型207
10.5 下半部分II的递推公式64
3.3 基本绘图函数31
2.2.3 纹理映射209
10.1.3.5 VC++绘制图形的几种方法51
2.2 计算机艺术1
1.5.3.6.1 阴极射线管7
1.7 B样条曲面149
7.3 Koch曲线178
8.3.3 计算机化69
3.7.h文件210
10.2 基本图形的数据结构187
9.4 OpenGL简介210
10.cpp文件213
10.6 B样条曲线142
7.1 分形和分维156
8.4.3.6 小结69
习题369第4章 多边形填充72
4.1.2.3 虚拟现实3
1.5.1 基本概念201
10.4 Sierpinski垫片、地毯和海绵164
8.3 递推公式60
3.4.3 Peano-Hilbert曲线162
8.2 双三次B样条曲面的定义149
7.4.1 分形的诞生156
8.1.1.4.4 计算机辅助教学3
1.6 小结127
习题6128第7章 自由曲线和曲面130
7.4.1.2.2 算法分析104
5.1 案例效果210
10.5.2 RGB颜色模型202
10.1 CDC类结构和GDI对象32
2.4 计算机图形学的确立和发展5
1.1 三维几何变换108
6.3 立体表示模型188
9.5.7.1 仿射变换174
8.2 映射模式33
2.4 反射变换矩阵93
5.7 计算机图形学的最新技术18
1.5.1.4.1 填充原理80
4.7.5 光强的衰减208
10.1 复合变换原理95
5.4.2 边界像素的处理原则75
4.5 图形显示器的发展及其工作原理7
1.5 小结183
习题8183第9章 动态消隐187
9.2 斜等侧图118
6.2.4.6.1 B样条曲面的定义149
7.5 液晶显示器13
1.5 分形灌木丛173
8.1 图形学中常用的坐标系98
5.1 物体的材质205
10.1 图形的数据结构187
9.5.1.6 图形软件标准的形成18
1.3 有效边和有效边表76
4.3 上半部分I的递推公式62
3.3 旋转变换110
6.5.4 隐面算法194
9.1 基本概念130
7.8 小结19
习题119第2章 Visual C++6.3.2.2 裁剪步骤102
5.3 拟合和逼近131
7.2 消隐算法分类190
9.3 递推公式57
3.1 算法原理58
3.8 小结106
习题5106第6章 三维变换和投影108
6.1.3 二维变换矩阵90
5.2 矩阵相乘89
5.4 程序说明220
10.5 构造特殊的三次B样条曲线的技巧148
7.2 相对于任一参考点的二维几何变换95
5.3 三维复合变换113
6.1 透视变换坐标系120
6.1 参数样条曲线定义132
7.2 递归模型160
8目录
计算机图形学基础教程(Visual C++版)
第1章 导论1
1.1
B. 计算机图形学中有几种直线裁剪算法
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。
简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。
计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。
图形与图像两个概念间的区别越来越模糊,但还是有区别的:图像纯指计算机内以位图形式存在的灰度信息,而图形含有几何属性,或者说更强调场景的几何表示,是由场景的几何模型和景物的物理属性共同组成的。
计算机图形学的研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。
C. 简述梁友栋-Barsky线段裁剪算法的基本思想
利用线段的参数表达形式直接判别落在窗口内的部分线段。
大体上有以下几步,有些步骤依据中间的判断结果可以省略或跳转。
第一步:计算出Qi和Di(i=L,R,B,T)
第二步:看Qi的符号进行判断
第三步:计算tL=max(0,ti(始边参数)), tU=min(1,ti(终边参数))
如果,tU>tL,则可见线段区间[tL,tU]
第四步:利用tL和tU计算端点坐标
实际上很简单,不要想象的太难。网上有很多博客有介绍,可以看看。
D. 学习计算机图形学的书籍介绍
目录
计算机图形学基础教程(Visual C++版)
第1章 导论1
1.1 计算机图形学的应用领域1
1.1.1 计算机辅助设计1
1.1.2 计算机艺术1
1.1.3 虚拟现实3
1.1.4 计算机辅助教学3
1.2 计算机图形学的概念4
1.3 计算机图形学的相关学科5
1.4 计算机图形学的确立和发展5
1.5 图形显示器的发展及其工作原理7
1.5.1 阴极射线管7
1.5.2 随机扫描显示器8
1.5.3 直视储存管显示器8
1.5.4 光栅扫描显示器9
1.5.5 液晶显示器13
1.5.6 等离子显示器15
1.5.7 三维显示器15
1.6 图形软件标准的形成18
1.7 计算机图形学的最新技术18
1.7.1 交互技术18
1.7.2 造型技术18
1.7.3 真实感图形显示技术19
1.8 小结19
习题119第2章 Visual C++6.0绘图基础21
2.1 面向对象程序设计基础21
2.1.1 类和对象21
2.1.2 构造函数和析构函数22
2.1.3 对象的动态建立和释放24
2.1.4 继承与派生25
2.2 MFC上机操作步骤28
2.3 基本绘图函数31
2.3.1 CDC类结构和GDI对象32
2.3.2 映射模式33
2.3.3 CDC类的主要绘图成员函数34
2.3.4 设备上下文的调用和释放50
2.3.5 VC++绘制图形的几种方法51
2.4 小结52
习题252第3章 基本图形的扫描转换55
3.1 直线的扫描转换55
3.1.1 算法原理56
3.1.2 构造中点偏差判别式56
3.1.3 递推公式57
3.2 圆的扫描转换57
3.2.1 算法原理58
3.2.2 构造中点偏差判别式59
3.2.3 递推公式60
3.3 椭圆的扫描转换60
3.3.1 算法原理61
3.3.2 构造上半部分I中点偏差判别式62
3.3.3 上半部分I的递推公式62
3.3.4 构造下半部分II中点偏差判别式64
3.3.5 下半部分II的递推公式64
3.4 反走样技术66
3.5 直线距离加权反走样算法67
3.5.1 算法原理67
3.5.2 构造距离判别式69
3.5.3 计算机化69
3.6 小结69
习题369第4章 多边形填充72
4.1 实面积图形的概念72
4.1.1 多边形的定义73
4.1.2 多边形的表示73
4.1.3 多边形的填充74
4.1.4 区域填充74
4.2 有效边表填充算法75
4.2.1 填充原理75
4.2.2 边界像素的处理原则75
4.2.3 有效边和有效边表76
4.2.4 边表79
4.3 边缘填充算法80
4.3.1 填充原理80
4.3.2 填充过程80
4.4 区域填充算法82
4.4.1 填充原理82
4.4.2 四邻接点和八邻接点82
4.4.3 四连通域和八连通域83
4.4.4 四邻接点填充算法和八邻接点填充算法84
4.5 小结85
习题485第5章 二维变换和裁剪89
5.1 图形几何变换基础89
5.1.1 规范化齐次坐标89
5.1.2 矩阵相乘89
5.1.3 二维变换矩阵90
5.1.4 二维几何变换90
5.2 二维图形基本几何变换矩阵91
5.2.1 平移变换矩阵91
5.2.2 比例变换矩阵91
5.2.3 旋转变换矩阵92
5.2.4 反射变换矩阵93
5.2.5 错切变换矩阵94
5.3 二维复合变换95
5.3.1 复合变换原理95
5.3.2 相对于任一参考点的二维几何变换95
5.3.3 相对于任意方向的二维几何变换96
5.4 二维图形裁剪98
5.4.1 图形学中常用的坐标系98
5.4.2 窗口和视区及窗视变换99
5.4.3 窗视变换矩阵100
5.5 Cohen-Sutherland直线裁剪算法101
5.5.1 编码原理101
5.5.2 裁剪步骤102
5.5.3 交点计算公式102
5.6 中点分割直线裁剪算法103
5.6.1 中点分割直线裁剪算法原理103
5.6.2 中点计算公式103
5.7 梁友栋-Barsky直线裁剪算法103
5.7.1 梁友栋算法原理103
5.7.2 算法分析104
5.7.3 算法的几何意义104
5.8 小结106
习题5106第6章 三维变换和投影108
6.1 三维几何变换108
6.1.1 三维变换矩阵108
6.1.2 三维几何变换108
6.2 三维基本几何变换矩阵109
6.2.1 平移变换109
6.2.2 比例变换109
6.2.3 旋转变换110
6.2.4 反射变换111
6.2.5 错切变换112
6.3 三维复合变换113
6.4 投影变换115
6.4.1 三视图115
6.4.2 斜等侧图118
6.5 透视变换120
6.5.1 透视变换坐标系120
6.5.2 坐标系变换121
6.5.3 用户坐标系到观察坐标系的变换122
6.5.4 观察坐标系到屏幕坐标系的变换124
6.5.5 透视投影分类125
6.6 小结127
习题6128第7章 自由曲线和曲面130
7.1 基本概念130
7.1.1 样条曲线曲面130
7.1.2 曲线曲面的表示形式130
7.1.3 拟合和逼近131
7.1.4 连续性条件131
7.2 三次参数样条曲线132
7.2.1 参数样条曲线定义132
7.2.2 系数求解133
7.2.3 边界条件133
7.3 Hermite样条曲线135
7.4 Bezier曲线137
7.4.1 Bezier曲线的定义137
7.4.2 Bezier曲线的性质139
7.4.3 Bezier曲线的可分割性139
7.5 Bezier曲面141
7.5.1 Bezier曲面的定义141
7.5.2 双三次Bezier曲面的定义141
7.6 B样条曲线142
7.6.1 B样条曲线的定义143
7.6.2 二次B样条曲线143
7.6.3 三次B样条曲线144
7.6.4 B样条曲线的性质146
7.6.5 构造特殊的三次B样条曲线的技巧148
7.7 B样条曲面149
7.7.1 B样条曲面的定义149
7.7.2 双三次B样条曲面的定义149
7.7.3 双三次B样条曲面的连续性150
7.8 小结152
习题7152第8章 分形几何156
8.1 分形和分维156
8.1.1 分形的诞生156
8.1.2 分形的基本特征157
8.1.3 分形的定义158
8.1.4 分形维数的定义158
8.2 递归模型160
8.2.1 Cantor集160
8.2.2 Koch曲线161
8.2.3 Peano-Hilbert曲线162
8.2.4 Sierpinski垫片、地毯和海绵164
8.2.5 C字曲线168
8.2.6 Caley树168
8.3 L系统模型169
8.3.1 L系统文法169
8.3.2 Koch曲线170
8.3.3 分形草171
8.3.4 Peano-Hilbert曲线171
8.3.5 分形灌木丛173
8.4 IFS迭代函数系统模型174
8.4.1 仿射变换174
8.4.2 IFS175
8.4.3 Koch曲线178
8.4.4 Sierpinski垫片180
8.4.5 枫叶生成182
8.5 小结183
习题8183第9章 动态消隐187
9.1 图形的数据结构187
9.1.1 图形的几何信息和拓扑信息187
9.1.2 基本图形的数据结构187
9.1.3 立体表示模型188
9.2 消隐算法分类190
9.3 隐线算法190
9.3.1 凸多面体消隐算法190
9.3.2 曲面体消隐算法192
9.4 隐面算法194
9.4.1 Z-Buffer算法194
9.4.2 画家算法197
9.5 小结198
习题9198第10章 真实感图形201
10.1 颜色模型201
10.1.1 基本概念201
10.1.2 RGB颜色模型202
10.1.3 Gouraud颜色渐变203
10.2 材质模型和光照模型205
10.2.1 物体的材质205
10.2.2 环境光模型206
10.2.3 漫反射光模型206
10.2.4 镜面反射光模型207
10.2.5 光强的衰减208
10.3 纹理映射209
10.3.1 纹理定义209
10.3.2 纹理映射210
10.4 OpenGL简介210
10.4.1 案例效果210
10.4.2 TestView.h文件210
10.4.3 TestView.cpp文件213
10.4.4 程序说明220
10.5 小结222
习题10222附录A 配套实践教程的案例设置及与本书的对应关系225
E. 计算机图形学直线段裁剪算法或二维基本变换算法,能复制运行的来啊,谢谢大侠们了 啊
#include"graphics.h"
#include"math.h"
typedef struct Point /* 点 */
{
int x;
int y;
}Point;
/* 点的平移变换 */
void PinYi(int * x,int * y,int tx,int ty)
{
*x = *x + tx;
*y = *y + ty;
}
/* 点的旋转变换 */
void XuanZhuan(int * x,int * y,float q)
{
int m ;
int n;
float Q;
Q = (3.1415926/180)*q;
m = (*x);
n = (*y);
*x = m * cos(Q) - n * sin(Q);
*y = m * sin(Q) + n * cos(Q);
}
void XuanZhuan_RY(int m,int n,int * x,int * y,float q)/* 绕(m,n)的旋转*/
{
PinYi(x,y,-m,-n);
XuanZhuan(x,y,q);
PinYi(x,y,m,n);
}
void line_dda(int x1,int y1,int x2,int y2 ,COLORREF color)
{
float x = 0.0;
float y = 0.0;
float x3 = ( float )x1;
float y3 = ( float )y1;
float n;
n=( float )( abs( x2-x1 ) >= abs( y2-y1 ) ? abs( x2-x1 ) : abs( y2-y1 ) );
if( n != 0.0 )
{
x=( ( float )( x2-x1 ) ) / n;
y=( ( float )( y2-y1 ) ) / n;
}
while( n >= 0 )
{
putpixel( ( int )x3 , ( int )y3 , color );
x3 += x ;y3 += y ;n -= 1.0;
}
}
void line(Point i,Point j,COLORREF color){
line_dda(i.x,i.y,j.x,j.y,color);
}
Point p[4]={-50,50,50,50,-50,-50,50,-50};
int PY[2]={0,0},XZ=0;
void main()
{
int width=600,height=480;
int zbx=200,zby=200;
COLORREF color=0x00ff00;
char ch;
initgraph(width, height);
ch=getch();
for(int o=0;o<4;o++)
PinYi(&p[o].x,&p[o].y,zbx,zby);
while(ch=getch())
{
PY[0]=0;PY[1]=0;
XZ=0;
switch(ch){
case 'q': XZ--;break;
case 'e': XZ++;break;
case 'w': PY[1]--;break;
case 's': PY[1]++;break;
case 'a': PY[0]--;break;
case 'd': PY[0]++;break;
//default :return 0;
}
for(int o=0;o<4;o++)
{
PinYi(&p[o].x,&p[o].y,PY[0],PY[1]);
PinYi(&zbx,&zby,PY[0],PY[1]);
XuanZhuan_RY(zbx,zby,&p[o].x,&p[o].y,XZ);
}
cleardevice();
line(p[0],p[1],color);
line(p[1],p[2],color);
line(p[2],p[3],color);
line(p[3],p[0],color);
}
}
有个问题是,,旋转的时候因为π取的3.1415926七位,所以越转越小!!!
需要改动!!就不弄了,要睡了!!
F. 计算机图形学裁剪试验报告怎么写
不知你的要求是什么我把我报告的一部分关于裁剪的粘给你 裁剪(clipping)是裁去窗口之外物体或物体部分的一种操作。 2.1 直线的剪裁 Cohen-Sutherland算法;2.2 多边形的剪裁 Sutlerland_Hodgman算法2.3 字符串的剪裁 裁剪:确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。窗口:画面上对应于屏幕显示的那部分区域成为窗口。一般定义为矩形。 2.1 直线的剪裁 直线和窗口的关系可以分为如下3类(图2.20): ⑴ 整条直线在窗口内。此时,不需剪裁,显示整条直线。 ⑵ 整条直线在窗口外,此时,不需剪裁,不显示整条直线。 ⑶ 部分直线在窗口内,部分直线在窗口外。此时,需要求出直线与窗框的交点,并将窗口外的直线部分剪裁掉,显示窗口内的直线部分。 直线剪裁算法有两个主要步骤。首先将不需剪裁的直线挑出,即删去在窗外的直线。然后,对其余直线,逐条与窗框求交点,并将窗口外的 部分删去。 Cohen-Sutherland直线剪裁算法以区域编码为基础,将窗口及其周围的8个方向以4 bit的二进制数进行编码。各编码分别代表窗外上下右左空间的编码 图2.21所示的编码方法将窗口及其邻域分为5个区域: ⑴ 内域:区域(0000)。 ⑵ 上域:区域(1001, 1000, 1010)。 ⑶ 下域:区域(0101, 0100, 0110)。 ⑷ 左域:区域(1001, 0001, 0101)。 ⑸ 右域:区域(1010, 0010, 0110)。 当线段的两个端点的编码的逻辑“与”非零时 ,线段为显然不可见的 对某线段的两个端点的区号进行位与运算,可知这两个端点是否同在视区的上、下、左、右; 算法的主要思想是,对每条直线P1P2: ⑴ 对直线两端点P1、P2编码分别记为C1(P1)={a1, b1, c1, d1},C2(P2)={a2, </p><p>b2, c2, d2}其中,ai、bi、ci、di取值范围为{1, 0},i∈{1, 2}。⑵ 如果ai=bi=ci=di=0,则显示整条直线,取出下一条直线,返步骤(1)。否则,进入步骤(3)。⑶如果|a1-a2|=1,则求直线与窗上边(y=yw-max)的交点,并删去交点以上部分。如果|b1-b2|=1,|c1-c2= |=1,|d1-d2|=1,作类似处理。⑷ 返步骤(1)。 Cohen-Sutherland算法——C语言程序 #define LEFT 1 #define RIGHT 2 #define BOTTOM 4 #define TOP 8 int encode(float x,float y) { int c=0; if(x<XL) c|=LEFT; if(x>XR) c|=RIGHT; if(x<YB) c|=BOTTOM; if(x>YT) c|=TOP; retrun c; } void CS_LineClip(x1,y1,x2,y2,XL,XR,YB,YT) float x1,y1,x2,y2,XL,XR,YB,YT;//(x1,y1)(x2,y2)为线段的端点坐标,其他四个参数定义窗口的边界 { int code1,code2,code; code1=encode(x1,y1); code2=encode(x2,y2); while(code1!=0 ||code2!=0) { if(code1&code2 !=0) return; //位于窗口外 code = code1; if(code1==0) code = code2; if(LEFT&code !=0) //求线段与窗口边界 //的交点 { x=XL; //左 y=y1+(y2-y1)*(XL-x1)/(x2-x1); } else if(RIGHT&code !=0) { x=XR; //右 y=y1+(y2-y1)*(XR-x1)/(x2-x1); } else if(BOTTOM&code !=0) { y=YB; //下 x=x1+(x2-x1)*(YB-y1)/(y2-y1); } else if(TOP & code !=0) { y=YT; //上 x=x1+(x2-x1)*(YT-y1)/(y2-y1); } if(code ==code1) { x1=x;y1=y; code1 =encode(x,y);} else { x2=x;y2=y; code2 =encode(x,y);} } displayline(x1,y1,x2,y2); //线段位于窗口内 } 2.6.2 多边形的剪裁 多边形剪裁算法的关键在于,通过剪裁,要保持窗口内多边形的边界部分,而且要将窗框的有关部分按一定次序插入多边形的保留边界之间,从而使剪裁后的多边形的边仍然保持封闭状态,以便填色算法得以正确实现(图2.22(c))。 Sutherland-Hodgeman算法—逐次多边形裁剪算法 基本思想:通过简单地一次用窗口的一条边裁剪多边形 算法:(1) 将多边形表示为顶点表,即{P1,P2,… … Pn-1,Pn }, 并生成边表P1P2, P2P3, … … Pn-1Pn, PnP1, (2) 用窗口边裁剪原多边形,生成中间多边形(3) 对中间多边形重复步骤(2), 直至被窗口所有边裁剪完为止 关键:根据多边形的边表,逐次对每一段边与裁剪线(窗口边)比较,判别输入顶点的个数和坐标,并联结成封闭多边形 实现方法:①设置二个表 输入顶点表(向量)—用于存放被裁剪多边形的顶点p1-pm。 输出顶点表(线性链表)—用于存放裁剪过程中及结果的顶点 q1-qn。②输入顶点表中各顶点要求按一定顺序排列,一般可采用顺时针或逆时针方向。③相对于裁剪窗口的各条边界,按顶点表中的顺序,逐边进行裁剪。 具体操作: Pi 若位于边界线的可见一侧,则 Pi 送输出顶点表 Pi 若位于边界线的不可见一侧,则将其舍弃。 除第一个顶点外,还要检查每一个 Pi 和前一顶点 Pi-1是否位于窗口边界的同一侧,若不在同一侧,则需计算出交点送输出顶点表。最后一个顶点 Pn则还要与 P1 一起进行同样的检查。 裁剪前: 裁剪后:输入顶点表:p1p2p3p4p5 输入顶点表: 不变输出顶点表:空 输出顶点表: q1q2p3q7q8q5q6q4q3 �6�1考虑窗口的一条边以及延长线构成的裁剪线该线把平面分成两个部分:可见一侧;不可见一侧�6�1多边形的各条边的两端点S、P。它们与裁剪线的位置关系只有四种 2.3 字符串的剪裁 字符串剪裁有3种可选择的方法。 ⒈ 字符串的有或无剪裁 (all-or-none-text) ⒉ 字符的有或无剪裁 (all-or-none-character) ⒊ 字符的精密剪裁
G. 利用编码的方法进行二维裁剪时有哪些判断规则
要利用编码制作和裁剪出不规则的图形,具体步骤如下:
第一、启动ps软件,进入ps的界面后,将特定的图片拖进去;
第二。打开图片之后,双击该背景图层右边的锁头图标,在“新建图层”窗口上点击“确定”;