本书在广泛结合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
STM32AD7606控制方法代码主要涉及了嵌入式系统中微控制器STM32与高精度模数转换器AD7606的交互技术。
STM32是基于ARMCortex-M内核的微控制器,广泛应用于各种嵌入式硬件设计中,而AD7606是一款16位、8通道同步采样模拟到数字转换器,常用于工业自动化、医疗设备和测试测量系统等需要高精度信号采集的场合。
在STM32与AD7606的通信中,一般采用SPI(SerialPeripheralInterface)或I2C接口。
SPI是一种高速、全双工、同步串行通信协议,适合短距离高速数据传输;
I2C则是一种多主机、双向两线制的总线协议,适合连接低速外设,但数据速率较低。
由于AD7606支持这两种通信模式,开发人员可以根据实际需求选择合适的接口。
1.**SPI配置**:需要在STM32的HAL库或LL库中初始化SPI接口,包括设置时钟源、时钟频率、数据帧格式、极性和相位等参数。
例如,可以配置SPI工作在主模式,数据从MISO引脚接收,MOSI引脚发送,通过NSS引脚实现片选。
2.**AD7606配置**:在初始化过程中,需要设置AD7606的工作模式,如单端或差分输入、增益、采样率等。
这些配置通常通过SPI或I2C发送特定的命令字节来完成。
3.**读写操作**:STM32通过SPI或I2C向AD7606发送读/写命令。
写操作可能涉及设置转换器的寄存器,比如配置采样率、启动转换等。
读操作则会获取转换后的数字结果。
在SPI中,通常需要在读写操作之间插入一个空时钟周期(dummybit)来正确同步数据的传输。
4.**中断处理**:在连续转换模式下,AD7606可能会生成中断请求,通知STM32新的转换结果已准备好。
STM32需要设置中断服务函数,处理中断请求并读取转换结果。
5.**数据处理**:读取的转换结果通常为二进制码,需要进行相应的转换,如左对齐或右对齐,然后根据AD7606的参考电压计算实际的模拟电压值。
6.**电源管理**:AD7606可能有低功耗模式,可以通过控制命令进入或退出。
在不需要转换时,关闭ADC以节省能源。
7.**错误检测**:程序中应包含错误检测机制,例如检查CRC校验或超时,以确保数据的完整性和系统的稳定性。
8.**代码实现**:在实际的代码实现中,可以使用HAL或LL库提供的函数进行硬件抽象,简化编程。
例如,`HAL_SPI_TransmitReceive()`函数可用于发送和接收SPI数据,`HAL_Delay()`用于控制延时,以及`HAL_ADC_Start()`和`HAL_ADC_PollForConversion()`用于启动转换和等待转换完成。
在项目中,开发者通常会创建一个AD7606的驱动库,封装上述操作,以方便其他模块调用。
这个驱动库可能包括初始化函数、配置函数、读取转换结果的函数等,使得系统设计更加模块化和易于维护。
通过理解这些知识点,并结合提供的AD7606压缩包中的代码,你可以实现STM32对AD7606的精确控制,从而进行高精度的模拟信号采集和处理。
2025/3/19 17:28:35 78KB stm32 arm 嵌入式硬件
1
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
MicrosoftCommunicationsControl(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
  1.MSComm控件两种处理通讯的方式  MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
  1.1事件驱动方式  事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者CarrierDetect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。
在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。
OnComm事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅CommEvent属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
  1.2查询方式  查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
  2.MSComm控件的常用属性  MSComm控件有很多重要的属性,但首先必须熟悉几个属性。
CommPort设置并返回通讯端口号。
Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通讯端口的状态。
也可以打开和关闭端口。
Input从接收缓冲区返回和删除字符。
Output向传输缓冲区写一个字符串。
2025/3/19 16:28:33 58KB CommPort Settings Outpu
1
目前对三维图形程序的开发大多是基于OpenGL来实现的,OpenGL实际上是一个独立于窗口系统和操作系统的开放式三维图形标准,得到了众多计算机厂商的支持。
作为一个优秀的三维图形接口,OpenGL提供了丰富的绘图命令,利用这些命令能够开发出高性能、交互式的三维图形应用程序。
它与VC有着紧密的开发接口,但由于VC对于一般非计算机专业的工程技术人员来说难以掌握,因而给工程领域的仿真程序设计带来了很大的不便。
但目前支持VB等开发工具的OpenGL开发库也开始出现。
本文就是基于VBOpenGL(vbogl.tlb)库来实现的,这是一个可免费使用的第三方库,它封装了大量的底层OpenGL库函数,很大程度上简化了开发工作。
2025/3/17 12:05:45 538KB vb OpenGL 控件
1
通过第三方支付公司与银行对接:这种方式接方式的优缺点:优点:系统只需要与第三方支付公司打交道,第三方支付公司根据用户选择的支付银行,并根据支付银行的接入规范,引导用户与银行对接,从而实现支付。
此种方案最大的优点,系统只需要与第三方支付公司交互,开发工作量极低。
缺点:由于通过第三方支付公司引导用户支付的,所以用户支付的钱会支付给第三方支付公司,网站再与第三方支付公司定期进行资金结算。
所以如果金额较大,资金安全是个大问题。
并且这种支付模型也会收取一定的手续费,因此此种支付方案只适合月金额在百万以下的公司。
2025/3/16 9:20:37 18KB java web 开发案例
1
基于交互式多模型算法进行仿真,.程序中采用了两个模型,将CV,CA模型混合起来进行估计,仿真场景可以自己设计,完成车辆位置跟踪。
2025/3/14 0:05:29 7KB IMM CA/CV matlab
1
自己的毕业设计,当时可是获得优秀毕业论文的.本课题预期实现一个基于VC++/Access的宿舍管理系统。
用户交互界面友好,操作方便、快捷,保证各类数据信息能实现正确、及时的存储以及快速查询,实现对宿舍的高效管理。
系统预期实现以下功能:1、用户登录2、学生信息管理(1)添加入住学生(2)学生信息查询(3)学生信息修改(4)学生离校登记等3、来访人管理4、宿舍管理(1)查看空宿舍、空铺(2)学生调换宿舍(3)卫生评分(4)维修登记等5、后勤管理(1)添加管理员(2)管理员考勤等
2025/3/12 3:04:25 6.28MB MFC 毕业设计 学生宿舍 管理系统
1
1某某汽车高性能计算管理平台系统需求51.1业务需求分析:52某某汽车HPC/CAE云计算中心建设目标、策略及步骤73.1建设目标与策略73.2建设步骤83面向高性能计算中心的资源管理、作业调度系统方案103.1基于应用的场景分析103.1.1终端用户通过ComputeManager,提交Fluent批处理计算作业103.1.2终端用户通过DisplayManager,提交需要图形节点支持的图形交互程序133.1.3终端用户通过ComputeManager,在线查看CAE计算结果中的动画143.1.4终端用户通过Portal启动其他第三方的虚拟桌面,如Ctrix153.2某某汽车技术中心HPC云计算平台管理场景173.2.1HPC云计算平台管理维护173.2.2HPC云计算平台软、硬件利用情况监控、统计分析184澳汰尔PBSWorks产品介绍204.1系统逻辑图204.2系统物理架构图224.4PBSProfessional产品介绍254.4.1整合计算资源、方便用户使用254.4.2可靠性、可用性、可维护性(RAS)264.4.3贯彻企业服务公约管理模式294.4.4优化计算资源的使用294.4.5计算资源管理功能304.4.6作业调度功能324.4.7Hooks功能344.4.8网格计算354.4.9安全认证354.5PAS(PBS应用服务)374.6ComputeManager404.6.1三员管理414.7DisplayManager424.7.1DisplayManager系统架构444.7.2DisplayManager使用体验454.8PBSWorks定制功能484.8.1菜单布局:通常将布局分为三个模块:计算管理器、集群状态、管理员工具。
如果有其他的模块,我们可以方便地集成在这个框架内(awpf)。
菜单模块支持用户访问控制。
484.8.2集群状态监控:统计所有计算节点的运行状态、节点类型、应用程序、物理内存、实际使用内存、内存使用率、节点利用率等信息。
磁盘信息和实际CPU利用率,通过数字的颜色来反应使用程度:0%在线设置或修改节点上绑定的applications504.8.5管理员工具>>用户统计:用户名称,作业总数,运行作业个数,排队作业个数,申请cpu核数,使用cpu核数,排队cpu核数等信息。
申请cpu总资源比,通过数字的颜色来反应使用程度:0%作业管理:统计作业号、作业名称、用户、软件、节点数、核数、状态、开始时间、优先级等信息。
当作业排队状态时,允许修改作业的优先级。
另外管理员也可以删除任意作业。
514.8.7管理员工具>>监控作业排队原因514.8.8管理员工具>>一周作业统计:统计当天到过去一周内所累积的运行和排队作业个数。
514.8.9管理员工具>>求解器使用情况统计:统计每个求解器提交的作业总数,在运行的作业,请求的cpu,排队cpu,使用cpu等信息。
524.8.10管理员工具>>磁盘统计:通过WEB页面随时了解本地磁盘的使用情况。
使用百分率,通过数字的颜色来反应使用程度:0%项目管理项:管理员可以以项目为单位,设定项目编号、项目名称、项目的开始和结束时间,项目组人员和项目的优先级。
当有紧急的项目,管理员可以把项目的优先级提高,并可以把相应的用户加到项目组中,以此提高项目组成员的作业优先级。
用户在WebPortal页面提交作业可以选择项目名称,并且只能选择自己所属项目的项目名称。
534.8.12管理员工具>>作业委托管理:统计当前用户自己所提交的作业总数,包含:作业号,作业名称,具体用户,使用的软件,使用节点数,作业状态等信息,用户可以把自己的一部分作业或所有作业委托给其他用户.534.8.13管理员工具>>CPU资源份额调整:统计所有队
2025/3/11 13:06:16 13.89MB HPC CAE 研究院 汽车
1
交互式前端开发里程碑项目配对游戏。
这个项目是一个简单的配对游戏,包含6对配对的卡片。
用户体验该游戏针对任何年龄段,因为大多数年龄段的人都可以玩简单的记忆匹配游戏。
用户故事作为网站的新访客...我想对游戏是什么(标题)有一个基本的了解。
我希望能够看到关于如何开始游戏的清晰指示。
作为网站的回头客...我希望能够玩游戏,并且每次都拥有相同的无错误体验。
观看者将访问我的网站,如果他们是:想要玩一个简单的,记忆匹配的游戏。
该网站可以帮助实现这一目标,因为:这是一个简单的内存匹配游戏。
内容应简洁明了,易于理解和播放,以帮助查看者轻松浏览页面而不会出现任何问题。
使用的线框/模型:这是我的第一个计划模型的链接:[模型1]这是我的第二个计划模型的链接:[模型2]特征通用网站功能标头:在我的标题中仅是标题-“MemoryMatchingGa
2025/3/11 8:10:13 8KB Shell
1
这款项目是安卓点餐系统源码,有客户端和服务器端交互的源码,带数据库。
对于想要熟悉服务器端和客户端交互的人来说,是一款很好的软件系统。
2025/3/10 10:21:27 25.8MB Android源码
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡