- 博客(22)
- 收藏
- 关注
原创 计算机图形学实验七定义一个简单形体(OpenGL提供的基础形体,如立方体、球体等),并生成正交投影及透视投影视图
在本实验中,我才用自定义点的坐标,调用OpenGL库中的glVertex3fv函数进行立方体图形的绘制,针对两种投影方式(正交投影和透视投影),我定义了两种绘制窗口的函数,这样针对用户不同的选择,可以选择生成不同绘制窗口。关于调整观察姿态及位置(调整相机位置、姿态等)的问题,我采用鼠标拖动和鼠标点击检测的回调函数,这样随着鼠标的拖动和点击,就可以改变图形的坐标进而重新绘制图像渲染到窗口上,就可以实现利用鼠标拖动来调整观察姿态及位置。正交投影和透视投影均放了两张图,是鼠标拖动后的不同观察效果。
2023-08-21 09:48:46
1215
2
原创 计算机图形学实验六-多边形的Sutherland-Hodgman裁减算法
这里绘制多边形,顶点的输入有两种形式,一个是鼠标点击,一个是用户手动输入,因为这里选择的OpenGL 中的模型视图矩阵堆栈是GL_MODELVIEW,这样相当于设置坐标轴位于画布中间,但是用户鼠标点击的时候,存入的顶点根据输出验证可以看出均为正值,说明这里用户用鼠标点击绘制的图像只能位于第一象限,若想让图像均匀分布在画布上,或者用户想精准绘制多边形,则可选用键盘输入的选项,若用户只是想快速绘制多边形,观察裁剪效果,则可以选择鼠标点击绘制多边形,若绘制结果不理想,可以按下键盘上的0键,重新绘制。
2023-08-21 09:29:50
1292
1
原创 计算机图形学实验五-直线段的编码裁剪算法(Cohen-SutherLand算法)
连接和裁剪区域的4个角点的直线分别记为LT、RT、LB、RB,通过比较P0P1和这四条直线的斜率,可以确定直线的可见性、直线与区域边界的交点个数及交点所在边界。:参考Cohen-SutherLand算法的编码形式,定义编码函数,得到传入的点的坐标,首先判断是否完全可见,完全可见则直接绘制,完全不可见则直接抛弃,以上两种情况均不符合则为部分可见的情况,则开始判断起点所处的区域,针对三个不同的区域进行不同区域的处理,根据不同的斜率值进行不同交点的求解,这里就体现了NLN直线段裁剪算法的。
2023-08-21 09:20:32
2750
1
原创 计算机图形学实验四-简单几何形体(三角形、多边形等)的平移、缩放、旋转等几何变换
首先定义缩放函数,传入缩放变量sx,sy,参考点的坐标(x,y),其中sx、sy的值是由鼠标点击位置来确定的,初始化单位矩阵(关于矩阵的相关算法在6.2中进行说明),将sx、sy、x、y的值填入对应的单位矩阵位置中,然后使之与另外定义相同维度的单位矩阵进行矩阵相乘,最后更新多边形上点的坐标,这样就完成了图形的缩放。关于sx、sy的值的说明:sx、sy一开始设定的值是1,根据不同的缩放策略来调整sx、sy的值,其中不等比例缩放,当监测到鼠标点击的点大于参考点的时候,分别对sx、sy进行。
2023-08-21 09:08:52
1891
2
原创 计算机图形学实验三-多边形的扫描转换算法
根据输出无疑OpenGL自带的绘制多边形的算法要远快于扫描线算法的,这是因为OpenGL自带的绘制多边形的算法比较简单,对输入的顶点进行首尾一次连接画线即可,但同时也带来了算法的缺点,即无法处理自交和带环的多边形,而扫描线算法在处理特殊多边形上优势较大,并且扫描线算法是对逐点判断法的一个很大的改进,综合说明,扫描线算法是一个相对优秀的算法。由键盘输入的凸多边形,在画布范围内的绘制均可填充,所以该算法处理任意凸多边形,下面对鼠标和键盘的交互加以具体说明。,输出执行10000次的时间,进行算法效率的对比。
2023-08-21 08:51:48
993
5
原创 软件工程课程第十三章-质量概念
当我们从预防到检查内部失效成本和外部失效成本时,找到并修复错误或缺陷的相关成本会急剧增加。符合质量关注的是实现遵从设计的程序以及所得到的系统满足需求和性能目标的程度。用户满意度=合格的产品+好的质量+按预算和进度安排交付。设计质量包括设计满足需求模型规定的功能和特性的程度。解决投诉、产品退货和更换、热线支持、保修工作。内部失效成本包括:返工、补救、失效模型分析。改正错误/缺陷的相对成本。
2023-08-16 10:44:40
243
1
原创 软件工程课程第十二章-体系结构设计
重点是掌握体系结构风格,给定例子能判断出是哪种体系结构风格,第二个是构建设计原则,给定代码,能够判断出违反了什么设计原则并做出对应的修改
2023-08-16 10:35:41
2285
1
原创 软件工程课程第十一章-设计概念
接口是一组描述类外部可观察行为的操作,并提供对其公共操作的访问三个重要的元素︰。数据设计或类设计将类模型转化为设计类的实现以及软件实现所要求的数据结构;部署级设计元素指明软件功能和子系统将如何在支持软件的物理计算环境内分布。接口设计描述了软件和协作系统之间,软件和使用人员之间是如何通信的;构件级设计将软件体结构的结构化元素变换为对软件构件的过程性描述。软件的构件级设计完整的描述了每个软件构件的内部细节。体系结构设计定义了软件的主要结构化元素之间的关系﹔愉悦:使用程序的体验应是愉悦的。2.软件工程中的设计。
2023-08-16 10:18:51
184
1
原创 软件工程课程第十章-需求建模(行为建模)
UML状态图是一种行为模型,该图为每个类呈现了主动状态和导致这些主动状态发生变化的事件(触发器)2. 事件触发系统处理的事件。事件可能有相关的数据,尽管并非总是如此。:水平方向:正在行动的对象/参与者;垂直:时间(向下->向前时间)每个图通常表示单个类的对象,并跟踪其对象在系统中的不同。行为模型是系统执行时的动态行为模型。行为模型显示了软件如何对。1. 有些数据到达后需要系统处理。:在图表中作用的对象或实体。:参与者对象之间的通信。
2023-08-16 09:57:19
1068
2
原创 软件工程课程第九章-需求建模(基于类)
本文章主要讲述类图的绘制方法及基本知识点,如何分析类,定义类的属性,类的关系(关联和依赖、泛化、组合和聚合)
2023-08-16 08:51:18
553
1
原创 软件工程课程第八章--需求建模
活动图使用两端为半圆形的矩形表示一个特定的系统功能,箭头表示通过系统的流,菱形表示分支(标记从菱形发出的每个箭头),实水平线意味着并行发生的活动。增加了一些细节,用例图无法完成的细节,用户可以尝试有限次的输入账号和密码,通过“提示重新输入”的判定菱形来体现。如果系统还没有准备好,房主必须关闭窗户/门,以便准备指示灯显示。]只是帮助定义系统外部(参与者)和系统应该执行的内容(用例)。在技术层面上,软件工程师开始于一系列的建模工作,关注的是“是对系统感兴趣的各方,可以影响或受到系统的影响。
2023-08-16 08:41:58
563
1
原创 软件工程课程第五章
(实施解决问题和实时质量保证的机制,使开发者能集中精力在手头的问题)之前先开发一系列用于检测本次(软件增量)发布的包括的所有故事的。”由客户定义并执行,以评估客户可见的功能。是敏捷软件开发中使用最广泛的一种方法。可以帮助程序员更好地理解系统需求。更重视人文、弱化文档、需求、过程。为什么测试先行,有什么好处?Scrum(敏捷开发)特点。(用户、管理人员),
2023-08-15 16:36:35
232
原创 软件工程第三、四章-过程模型
2. 逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。2. 增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。每个软件工程动作由任务集来定义,这个任务集明确了:①将要完成的工作任务,②将要产生的工作产品,③所需要的质量保证点,④用于表明过程状态的里程碑。电话打完:①录音/草记(打电话)②整理电话内容(整理)③回头沟通(确认)-整理文档给用户确认(可以邮件的形式发送)
2023-08-15 16:29:15
107
原创 软件工程课程第二章
软件过程将各个技术层次结合在一起,使得合理,及时地开发计算机软件成为可能。过程定义了一个框架,构建该框架是有效实施软件工程技术必不可少的。对于很多软件项目来说,随着项目的开展,框架活动可以迭代应用。在项目的多次迭代过程中,上述五个活动不断重复。每次项目迭代都会产生一个。,每个软件增量实现了部分的软件特性和功能。为构建软件提供技术上的解决方法(如何做)为过程和方法提供自动化或半自动化的支持。过程框架(包含框架活动和普适性活动)(上面三项框架活动由项目经理负责)1.需求分析:干什么。
2023-08-15 15:03:15
165
原创 计算机图形学实验二-实现圆的中点算法、椭圆的中点算法
F(X,Y) > 0 :(X,Y) 在椭圆外,这里还有一个特别注意的点,椭圆有上下两部分,而划分依据是(b^2)*x≥(a^2)*y与否,所以针对两个不同的部分,适时调整xy坐标,即当(b^2)*x≥(a^2)*y的时候,进行x坐标和y坐标的交换,这样就可继续使用设计的算法,原来的算法不会有太大的改动。前面两种算法的实现是基于用户在控制台的输入(圆的半径或者椭圆的长短轴),在实现两种算法的同时,我加入了鼠标的交互,即用户选择3(或者输入非1、2的字符),直接进入空白页面,鼠标右键点击弹出。
2023-08-15 14:53:09
929
原创 软件工程课程第一章
横轴是时间,纵轴是失效率,在软件完整的生命周期中,将会面临变更(change),就会由于(变更的)副作用而导致失效率突然提高。不断地变更是软件退化的根本原因。措施:“重构”,不改变外部使用功能情况下(交互UI,功能等),改变了内部设计和代码实现。硬件是有形的,包括各种电子元件、器件和外部设备。硬件则是指计算机系统中的物理实体,包括计算机的各种组件和设备。硬件是更接近计算机的物理层面,执行和控制计算机的实际物理操作。硬件一般需要重新设计、制造和替换才能进行改变。硬件问题可能需要更复杂的维修和替换。
2023-08-15 11:39:18
112
基于OpenGL的计算机图形学实验NURBS曲面算法
2023-08-21
基于OpenGL的计算机图形学实验NURBS曲线算法
2023-08-21
基于OpenGL的计算机图形学实验B样条曲面算法
2023-08-21
基于OpenGL的计算机图形学实验B样条曲线算法(完整可运行版本)
2023-08-21
基于OpenGL的计算机图形学实验Bezier曲面算法
2023-08-21
基于OpenGL的计算机图形学实验Bezier曲线算法
2023-08-21
基于OpenGL的计算机图形学实验七定义一个简单形体(OpenGL提供的基础形体,立方体、球体等),并生成正交投影及透视投影视图
2023-08-21
基于OpenGL的计算机图形学实验六多边形的Sutherland-Hodgman裁减算法(完整可运行版本)
2023-08-21
基于OpenGL的计算机图形学实验五直线段的编码裁剪算(Cohen-SutherLand算法)(完整可运行直线段的编码裁剪算法)
2023-08-21
基于OpenGL的计算机图形学实验四简单几何形体(三角形、多边形等)的平移、缩放、旋转等几何变换(完整可运行版本)
2023-08-21
基于OpenGL的计算机图形学实验三多边形的扫描转换算法(完整可运行版本)
2023-08-21
计算机图形学实验之实现圆的中点算法、椭圆的中点算法
2023-08-15
计算机图形学实验一之Bresenham画线算法和中点画线算法(完整版代码,可运行)
2023-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人