本书在广泛结合OpenGL并注重图形应用编程的基础上,介绍了计算机图形学的经典核心体系:图形系统、二维图形生成、几何变换、二维与三维观察、三维对象(实体造型与曲线曲面)、真实感图形技术、交互技术及动画。
本书主要介绍计算机图形学经典理论知识,同时每一章都给出一至两个OpenGL编程实例来帮助读者更好地理解相关知识与技术,使读者能快速掌握如何生成二维图形与三维图形。
书后有两个附录,分别为含有8个实验的课程实验指导与3套模拟试题及其答案。
目录第1章计算机图形学概述1.1什么是计算机图形学1.2计算机生成的图片用在哪里1.2.1艺术、娱乐和出版行业1.2.2计算机图形学、感知和图像处理1.2.3过程监视1.2.4仿真显示1.2.5计算机辅助设计1.2.6科学分析与体可视化1.3计算机图形学中制作图像的基本元素1.3.1折线1.3.2文本1.3.3填充区域1.3.4光栅图像1.3.5光栅图像的灰度和色彩表达1.4图形显示设备1.4.1线画显示1.4.2光栅显示器1.4.3视频卡/3D加速器1.4.4其他的光栅显示设备1.4.5硬拷贝光栅设备1.5图形输入的基本单元和设备1.5.1逻辑上的输入图形基元类型1.5.2物理输入设备的类型本章小结本章习题进一步阅读第2章OpenGL绘图入门2.1生成图像初步2.1.1设备无关的编程和OpenGL2.1.2窗口的编程2.1.3如何打开一个窗口画图2.2OpenGL的基本图形元素2.2.1几个点丛绘制的例子2.3OpenGL中的直线绘制2.3.1绘制折线和多边形2.3.2使用moveTo()和lineTo()绘制线段2.3.3绘制边校正的矩形2.3.4边校正矩形的长宽比2.3.5填充多边形2.3.6OpenGL中的其他图形元素2.4与鼠标和键盘的交互2.4.1用鼠标交互2.4.2键盘交互2.5程序中的菜单设计与使用本章小结案例分析进一步阅读第3章更多的绘图工具3.1概述3.2世界窗口和视口3.2.1窗口到视口的映射3.3裁减线3.3.1如何裁减一条线3.3.2Cohen-Sutherland裁减算法3.4正多边形、圆和圆弧3.4.1正多边形3.4.2正n边形的变种3.4.3绘制圆弧和圆3.4.4曲线的逐次细化3.5曲线的参数形式3.5.1曲线的参数形式3.5.2绘制参数曲线3.5.3极坐标形状本章小结案例分析进一步阅读第4章图形学中的向量工具4.1概述4.2向量回顾4.2.1向量基本运算法则4.2.2向量线性组合4.2.3向量的度量和单位向量4.3点积4.3.1点积的性质4.3.2两个向量的夹角4.3.3b·c的符号和正交性4.3.4二维正交向量4.3.5正交投影和点到直线的距离4.3.6投影的应用:反射4.4两个向量的叉积4.4.1叉积的几何解释4.4.2求平面的法向量4.4.3判断平面多边形的凸性4.5重要几何对象的表示4.5.1坐标系统和坐标框架4.5.2点的仿射组合4.5.3两个点的线性插值4.5.4使用内插的艺术和动画4.5.5预览:用二次、三次内插生成贝塞尔曲线4.5.6表示直线和平面4.6求两个线段的交点4.6.1直线求交的应用:过三点的圆4.7直线和平面求交及裁剪4.8多边形求交问题4.8.1处理凸多边形和凸多面体4.8.2射线与凸多边形的交点以及裁剪问题4.8.3Cyrus-Beck裁剪算法4.8.4更高级的裁剪问题本章小结案例分析进一步阅读第5章物体变换5.1概述5.2几何变换初步52.1点和物体变换5.2.2仿射变换5.2.3二维基本仿射变换的几何效果5.2.4仿射变换的逆变换5.2.5组合一个仿射变换5.2.6二维组合变换的实例5.2.7仿射变换的一些有用的性质5.3三维仿射变换5.3.1基本三维变换5.3.2组合一个三维仿射变换5.3.3旋转的组合5.34总结三维仿射变换的性质5.4如何实现坐标系变换5.5在程序中使用仿射变换j.5.1为后面的使用保存CT5.6使用OpenGL绘制电维场景5.6.1观察过程和图形绘制管道概述5.6.2OpenGL中的建模和视点工具5.6.3用OpenGL绘制基本形状5.6.4使用sDI。
从文件中读取一个场景的描述本章小结案例分析进一步阅读第6章使用多边形网格建
2025/3/20 3:15:07 56.37MB Computer Graphics
1
双线性插值算法的FPGA实现,Verilog代码,分享给大家一起学习!
2025/3/13 14:46:40 3.42MB 双线性插值 FPGA Verilog
1
C#双线性插值法放大图像C#双线性插值法放大图像C#双线性插值法放大图像
2025/1/9 1:36:08 37KB 双线性插值 图像放大
1
MATLAB语言常用算法程序集书中4-17章代码,都是一些常用的程序第4章:插值函数名功能Language求已知数据点的拉格朗日插值多项式Atken求已知数据点的艾特肯插值多项式Newton求已知数据点的均差形式的牛顿插值多项式Newtonforward求已知数据点的前向牛顿差分插值多项式Newtonback求已知数据点的后向牛顿差分插值多项式Gauss求已知数据点的高斯插值多项式Hermite求已知数据点的埃尔米特插值多项式SubHermite求已知数据点的分段三次埃尔米特插值多项式及其插值点处的值SecSample求已知数据点的二次样条插值多项式及其插值点处的值ThrSample1求已知数据点的第一类三次样条插值多项式及其插值点处的值ThrSample2求已知数据点的第二类三次样条插值多项式及其插值点处的值ThrSample3求已知数据点的第三类三次样条插值多项式及其插值点处的值BSample求已知数据点的第一类B样条的插值DCS用倒差商算法求已知数据点的有理分式形式的插值分式Neville用Neville算法求已知数据点的有理分式形式的插值分式FCZ用倒差商算法求已知数据点的有理分式形式的插值分式DL用双线性插值求已知点的插值DTL用二元三点拉格朗日插值求已知点的插值DH用分片双三次埃尔米特插值求插值点的z坐标第5章:函数逼近Chebyshev用切比雪夫多项式逼近已知函数Legendre用勒让德多项式逼近已知函数Pade用帕德形式的有理分式逼近已知函数lmz用列梅兹算法确定函数的最佳一致逼近多项式ZJPF求已知函数的最佳平方逼近多项式FZZ用傅立叶级数逼近已知的连续周期函数DFF离散周期数据点的傅立叶逼近SmartBJ用自适应分段线性法逼近已知函数SmartBJ用自适应样条逼近(第一类)已知函数multifit离散试验数据点的多项式曲线拟合LZXEC离散试验数据点的线性最小二乘拟合ZJZXEC离散试验数据点的正交多项式最小二乘拟合第6章:矩阵特征值计算Chapoly通过求矩阵特征多项式的根来求其特征值pmethod幂法求矩阵的主特征值及主特征向量rpmethod瑞利商加速幂法求对称矩阵的主特征值及主特征向量spmethod收缩法求矩阵全部特征值ipmethod收缩法求矩阵全部特征值dimethod位移逆幂法求矩阵离某个常数最近的特征值及其对应的特征向量qrtzQR基本算法求矩阵全部特征值hessqrtz海森伯格QR算法求矩阵全部特征值rqrtz瑞利商位移QR算法求矩阵全部特征值第7章:数值微分MidPoint中点公式求取导数ThreePoint三点法求函数的导数FivePoint五点法求函数的导数DiffBSample三次样条法求函数的导数SmartDF自适应法求函数的导数CISimpson辛普森数值微分法法求函数的导数Richason理查森外推算法求函数的导数ThreePoint2三点法求函数的二阶导数FourPoint2四点法求函数的二阶导数FivePoint2五点法求函数的二阶导数Diff2BSample三次样条法求函数的二阶导数第8章:数值积分CombineTraprl复合梯形公式求积分IntSimpson用辛普森系列公式求积分NewtonCotes用牛顿-科茨系列公式求积分IntGauss用高斯公式求积分IntGaussLada用高斯拉道公式求积分IntGaussLobato用高斯—洛巴托公式求积分IntSample用三次样条插值求积分IntPWC用抛物插值求积分IntGaussLager用高斯-拉盖尔公式求积分IntGaussHermite用高斯-埃尔米特公式求积分IntQBXF1求第一类切比雪夫积分IntQBXF2求第二类切比雪夫积分DblTraprl用梯形公式求重积分DblSimpson用辛普森公式求重积分IntDBGauss用高斯公式求重积分第9章:方程求根BenvliMAX贝努利法求按模最大实根BenvliMIN贝努利法求按模最小实根HalfInterval用二分法求方程的一个根hj用黄金分割法求方程的一个根StablePoint用不动点迭代法求方程的一个根AtkenStablePoint用艾肯特加速的不动点迭代法求方程的一个根StevenStablePoint用史蒂芬森加速的不动点迭代法求方程的一个根Secant用一般弦截法求方程的一个根SinleSecant用单点弦截法求方程的一个根DblSecant用双点弦截法求方程的一个根PallSecant用平行弦截法求方程的一个根ModifSecant用改进弦截法求方程的一个根StevenSecant用史蒂芬森法求方程的一个根PYZ用劈因子法求方程的一个二次因子Parabola用抛物线法求方程的一个根QBS用钱伯斯法求方程的一个根NewtonRoot用牛顿法求方程的一个根SimpleNewton用简化牛顿法求方程的一个根NewtonDown用牛顿下山法求方程的一个根YSNewton逐次压缩牛顿法求多项式的全部实根Union1用联合法1求方程的一个根TwoStep用两步迭代法求方程的一个根Montecarlo用蒙特卡洛法求方程的一个根MultiRoot求存在重根的方程的一个重根第10章:非线性方程组求解mulStablePoint用不动点迭代法求非线性方程组的一个根mulNewton用牛顿法法求非线性方程组的一个根mulDiscNewton用离散牛顿法法求非线性方程组的一个根mulMix用牛顿-雅可比迭代法求非线性方程组的一个根mulNewtonSOR用牛顿-SOR迭代法求非线性方程组的一个根mulDNewton用牛顿下山法求非线性方程组的一个根mulGXF1用两点割线法的第一种形式求非线性方程组的一个根mulGXF2用两点割线法的第二种形式求非线性方程组的一个根mulVNewton用拟牛顿法求非线性方程组的一组解mulRank1用对称秩1算法求非线性方程组的一个根mulDFP用D-F-P算法求非线性方程组的一组解mulBFS用B-F-S算法求非线性方程组的一个根mulNumYT用数值延拓法求非线性方程组的一组解DiffParam1用参数微分法中的欧拉法求非线性方程组的一组解DiffParam2用参数微分法中的中点积分法求非线性方程组的一组解mulFastDown用最速下降法求非线性方程组的一组解mulGSND用高斯牛顿法求非线性方程组的一组解mulConj用共轭梯度法求非线性方程组的一组解mulDamp用阻尼最小二乘法求非线性方程组的一组解第11章:解线性方程组的直接法SolveUpTriangle求上三角系数矩阵的线性方程组Ax=b的解GaussXQByOrder高斯顺序消去法求线性方程组Ax=b的解GaussXQLineMain高斯按列主元消去法求线性方程组Ax=b的解GaussXQAllMain高斯全主元消去法求线性方程组Ax=b的解GaussJordanXQ高斯-若当消去法求线性方程组Ax=b的解Crout克劳特分解法求线性方程组Ax=b的解Doolittle多利特勒分解法求线性方程组Ax=b的解SymPos1LL分解法求线性方程组Ax=b的解SymPos2LDL分解法求线性方程组Ax=b的解SymPos3改进的LDL分解法求线性方程组Ax=b的解followup追赶法求线性方程组Ax=b的解InvAddSide加边求逆法求线性方程组Ax=b的解Yesf叶尔索夫求逆法求线性方程组Ax=b的解qrxqQR分解法求线性方程组Ax=b的解第12章:解线性方程组的迭代法rs里查森迭代法求线性方程组Ax=b的解crs里查森参数迭代法求线性方程组Ax=b的解grs里查森迭代法求线性方程组Ax=b的解jacobi雅可比迭代法求线性方程组Ax=b的解gauseidel高斯-赛德尔迭代法求线性方程组Ax=b的解SOR超松弛迭代法求线性方程组Ax=b的解SSOR对称逐次超松弛迭代法求线性方程组Ax=b的解JOR雅可比超松弛迭代法求线性方程组Ax=b的解twostep两步迭代法求线性方程组Ax=b的解fastdown最速下降法求线性方程组Ax=b的解conjgrad共轭梯度法求线性方程组Ax=b的解preconjgrad预处理共轭梯度法求线性方程组Ax=b的解BJ块雅克比迭代法求线性方程组Ax=b的解BGS块高斯-赛德尔迭代法求线性方程组Ax=b的解BSOR块逐次超松弛迭代法求线性方程组Ax=b的解第13章:随机数生成PFQZ用平方取中法产生随机数列MixMOD用混合同余法产生随机数列MulMOD1用乘同余法1产生随机数列MulMOD2用乘同余法2产生随机数列PrimeMOD用素数模同余法产生随机数列PowerDist产生指数分布的随机数列LaplaceDist产生拉普拉斯分布的随机数列RelayDist产生瑞利分布的随机数列CauthyDist产生柯西分布的随机数列AELDist产生爱尔朗分布的随机数列GaussDist产生正态分布的随机数列WBDist产生韦伯西分布的随机数列PoisonDist产生泊松分布的随机数列BenuliDist产生贝努里分布的随机数列BGDist产生贝努里-高斯分布的随机数列TwoDist产生二项式分布的随机数列第14章:特殊函数计算gamafun用逼近法计算伽玛函数的值lngama用Lanczos算法计算伽玛函数的自然对数值Beta用伽玛函数计算贝塔函数的值gamap用逼近法计算不完全伽玛函数的值betap用逼近法计算不完全贝塔函数的值bessel用逼近法计算伽玛函数的值bessel2用逼近法计算第二类整数阶贝塞尔函数值besselm用逼近法计算变型的第一类整数阶贝塞尔函数值besselm2用逼近法计算变型的第二类整数阶贝塞尔函数值ErrFunc用高斯积分计算误差函数值SIx用高斯积分计算正弦积分值CIx用高斯积分计算余弦积分值EIx用高斯积分计算指数积分值EIx2用逼近法计算指数积分值Ellipint1用高斯积分计算第一类椭圆积分值Ellipint2用高斯积分计算第二类椭圆积分值第15章:常微分方程的初值问题DEEuler用欧拉法求一阶常微分方程的数值解DEimpEuler用隐式欧拉法求一阶常微分方程的数值解DEModifEuler用改进欧拉法求一阶常微分方程的数值解DELGKT2_mid用中点法求一阶常微分方程的数值解DELGKT2_suen用休恩法求一阶常微分方程的数值解DELGKT3_suen用休恩三阶法求一阶常微分方程的数值解DELGKT3_kuta用库塔三阶法求一阶常微分方程的数值解DELGKT4_lungkuta用经典龙格-库塔法求一阶常微分方程的数值解DELGKT4_jer用基尔法求一阶常微分方程的数值解DELGKT4_qt用变形龙格-库塔法求一阶常微分方程的数值解DELSBRK用罗赛布诺克半隐式法求一阶常微分方程的数值解DEMS用默森单步法求一阶常微分方程的数值解DEMiren用米尔恩法求一阶常微分方程的数值解DEYDS用亚当斯法求一阶常微分方程的数值解DEYCJZ_mid用中点-梯形预测校正法求一阶常微分方程的数值解DEYCJZ_adms用阿达姆斯预测校正法求一阶常微分方程的数值解DEYCJZ_adms2用密伦预测校正法求一阶常微分方程的数值解DEYCJZ_yds用亚当斯预测校正法求一阶常微分方程的数值解DEYCJZ_myds用修正的亚当斯预测校正法求一阶常微分方程的数值解DEYCJZ_hm用汉明预测校正法求一阶常微分方程的数值解DEWT用外推法求一阶常微分方程的数值解DEWT_glg用格拉格外推法求一阶常微分方程的数值解第16章:偏微分方程的数值解法peEllip5用五点差分格式解拉普拉斯方程peEllip5m用工字型差分格式解拉普拉斯方程peHypbYF用迎风格式解对流方程peHypbLax用拉克斯-弗里德里希斯格式解对流方程peHypbLaxW用拉克斯-温德洛夫格式解对流方程peHypbBW用比姆-沃明格式解对流方程peHypbRich用Richtmyer多步格式解对流方程peHypbMLW用拉克斯-温德洛夫多步格式解对流方程peHypbMC用MacCormack多步格式解对流方程peHypb2LF用拉克斯-弗里德里希斯格式解二维对流方程的初值问题peHypb2FL用拉克斯-弗里德里希斯格式解二维对流方程的初值问题peParabExp用显式格式解扩散方程的初值问题peParabTD用跳点格式解扩散方程的初值问题peParabImp用隐式格式解扩散方程的初边值问题peParabKN用克拉克-尼科尔森格式解扩散方程的初边值问题peParabWegImp用加权隐式格式解扩散方程的初边值问题peDKExp用指数型格式解对流扩散方程的初值问题peDKSam用萨马尔斯基格式解对流扩散方程的初值问题第17章:数据统计和分析MultiLineReg用线性回归法估计一个因变量与多个自变量之间的线性关系PolyReg用多项式回归法估计一个因变量与一个自变量之间的多项式关系CompPoly2Reg用二次完全式回归法估计一个因变量与两个自变量之间的关系CollectAnaly用最短距离算法的系统聚类对样本进行聚类DistgshAnalysis用Fisher两类判别法对样本进行分类MainAnalysis对样本进行主成分分析
2025/1/7 19:17:40 113KB matlab 算法 常用程序
1
对几种常用的图像缩放算法进行了比较,在权衡了算法复杂度、缩放效果和FPGA逻辑资源等3大因素后,选择了双线性插值算法来实现图像缩放。
重点介绍了双线性插值算法和该方法的FPGA硬件实现方法,包括图像数据缓冲单元、插值系数生成单元以及插值计算单元等。
应用结果表明,双线性插值算法及其硬件实现模块达到了预期的效果。
2024/7/4 1:20:26 1.22MB 图像缩放 FPGA 双线性插值
1
该程序由c++编写,主要用于实现基于函数y=e^(-2x)在区间[0,6]的插值函数,开发工具为VS2015,请用此IDE或者更高版本的IDE打开工程文件~~~~~
1
1.1要提高图像处理水平,需要从哪些方面努力?2.1编程实现:分别用最近邻插值、双线性插值和双三次插值等方法把一幅图像面积放大9倍,并对放大效果进行比较。
2.2提出将像素宽度的m通路转换为4通路的一种算法(习题2.13),并编程实现。
3.1编程实现图像反转、对数变换和对比度拉伸。
3.2试提出一种如3.3.4节中讨论的基于直方图统计的局部增强方法,并编程实现。
3.3编程实现中值滤波、Soble运算和Laplacian锐化。
3.4对掌纹图像进行图像增强,使得掌纹纹线更清晰。
说明增强方案,并编程实现。
4.1编程实现等效于3*3邻域均值平滑的频率域滤波。
4.2编程实现同态滤波以及巴特沃思低通、高通、带通、带阻滤波器。
4.3习题4.43。
5.1编程实现可变阈值处理。
5.2编程实现Ostu图像分割方法。
5.3设计人脸方案,并编程实现。
5.4设计与实现虹膜图像分割。
6.1编程实现边界追踪算法。
6.2编程实现二值区域细化算法。
6.3编程实现灰度共生矩阵方法。
6.4习题11.16。
6.5习题11.27。
7.1编程实现印刷体数字识别(包括增强、分割、特征提取和识别)。
7.2编程实现桃子图像识别,要求能使识别蟠桃、水蜜桃、油桃、黄桃等亚种。
(包括增强、分割、特征提取和识别)
2024/4/11 4:39:24 10.24MB VC++
1
实现热敏电阻测温在Proteus下的仿真,使用ATMega16单片机,折半查表算法和线性插值算法,测温范围达-8~120度,精度达0.01度
2024/4/2 14:26:37 128KB 测温 线性插值 AVR proteus
1
InverseDistancetoaPower(反距离加权插值法)Kriging(克里金插值法)MinimumCurvature(最小曲率)ModifiedShepard"sMethod(改进谢别德法)NaturalNeighbor(自然邻点插值法)NearestNeighbor(最近邻点插值法)PolynomialRegression(多元回归法)RadialBasisFunction(径向基函数法)TriangulationwithLinearInterpolation(线性插值三角网法)MovingAverage(移动平均法)LocalPolynomial(局部多项式法)">InverseDistancetoaPower(反距离加权插值法)Kriging(克里金插值法)MinimumCurvature(最小曲率)ModifiedShepard"sMethod(改进谢别德法)NaturalNeighbor(自然邻点插值法)NearestNeighbor(最近邻点插值法)PolynomialRegression(?[更多]
2024/3/3 17:18:33 30KB Kriging
1
插值法原理插值法的基本思想就是构造一个简单函数y=P(x)作为f(x)的近似表达式,以P(x)的值作为函数f(x)的近似值,而且要求P(x)在给定点xi与取值相同,即P(xi)=f(xi)通常称P(x)为f(x)的插值函数,xi称为插值节点。
插值的方法很多,这里介绍一元线性插值和二次插值。
2024/2/5 4:05:55 54KB 插值法
1
共 44 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡