计算机图形学
文章平均质量分 65
咕噜咕噜的玛卡巴卡
菜鸟分享学习代码日常~
展开
-
头歌实践教学平台:CG1-v1.0-点和直线的绘制
(1) 直线颜色为红色(1.0f,0.0f,0.0f), 线粗为1;五角星的顶点坐标分别为:(261, 215), (344, 275),(429, 213), (398, 319), (477, 384), (378, 385), (344, 491), (310, 384), (209, 382), (292, 319).1.要使前面的0<k<1直线绘制算法推广到任意斜率的一般直线,需要进行下面两方面的改造: (1) 当直线的斜率|k|>1时,算法的步进为y方向,同时需要用中点判别式确定x变量的计算;原创 2024-05-13 00:06:33 · 366 阅读 · 1 评论 -
头歌实践教学平台:CG1-v1.0-点和直线的绘制
(1).背景色为黑色,用 glclearcolor 来完成;(2).利用中点画线算法生成一条直线,线粗为1,直线颜色为(0.0f,1.0f,0.0f),直线两端点坐标为(10,50,300,260)。为了完成本关任务,你需要掌握: (1).中点画线算法的基本原理和步骤;(2).上一关glutReshapeFunc()函数的使用;根据下面要求,在右侧修改代码,绘制出预期输出的图片。掌握一种基本图形元素光栅化算法,利用OpenGL实现直线光栅化的中点画线算法。开始你的任务吧,祝评测通过!原创 2024-05-13 00:04:17 · 379 阅读 · 0 评论 -
头歌实践教学平台:CG1-v1.0-点和直线的绘制
(1).背景色为黑色,用 glclearcolor 来完成;(2).利用DDA算法生成一条直线,线粗为1,直线颜色为(1.0f,1.0f,0.0f),直线两端点坐标为(0,0,200,200)。为了完成本关任务,你需要掌握: (1).DDA算法的基本原理和步骤;(2).上一关glutReshapeFunc()函数的使用;(3).虚拟机的使用。根据下面要求,在右侧修改代码,绘制出预期输出的图片。掌握一种基本图形元素光栅化算法,利用OpenGL实现直线光栅化的DDA算法。开始你的任务吧,祝评测通过!原创 2024-05-12 18:09:04 · 394 阅读 · 0 评论 -
头歌实践教学平台:CG1-v1.0-点和直线的绘制
(2).绘制一个矩形,颜色为(1.0f,0.0f,0.0f),矩形位置(25.0,25.0,75.0,75.0);(3).绘制一个直径为10的点,颜色为(0.0f, 1.0f, 0.0f),对应的点坐标为原点;(4).利用GL_LINES的绘线方式绘制一条线,其中线段的两个顶点颜色分别为(0.0f, 1.0f, 0.0f),(0.0f, 1.0f, 0.0f)两个顶点的坐标分别为(100.0f, 0.0f),(180.0f, 240.0f);数学上的直线没有宽度,但OpenGL的直线则是有宽度的。原创 2024-05-12 18:07:27 · 746 阅读 · 0 评论 -
头歌实践教学平台:CG1-v1.0-点和直线的绘制
(3).绘制一个三角形,三个顶点颜色分别为(1.0f, 0.0f, 0.0f), (0.0f,1.0f,0.0f), (0.0f,0.0f,1.0f),对应的顶点坐标分别为(0.0f,1.0f), (0.8f,-0.5f), (-0.8f,-0.5f);(4).绘制三个直径为3的点,颜色为(1.0f, 0.0f, 0.0f), (0.0f,1.0f,0.0f), (0.0f,0.0f,1.0f),对应的顶点坐标分别为(-0.4f,-0.4f), (0.0f,0.0f),(0.4f,0.4f)。原创 2024-05-11 13:03:42 · 345 阅读 · 0 评论 -
头歌实践教学平台:CG1-v1.0-点和直线的绘制
先介绍下Glut库。GLUT最初由MarkKilgard编写,从OpenGL Redbook(红宝书)第二版起就用来作为示例程序的支持环境,直到第八版为止(注:第九版开始改为GLFW)。从那时起,GLUT因为其简单、可用性广、可移植性强,被广泛应用于各种OpenGL实际应用中。Glut最新版本为3.7版,大致在1998年8月停止维护和更新,同时其代码也没有开源。Freeglut是Glut库(OpenGL Utility Toolkit,OpenGL实用工具包)的免费开源替代品。原创 2024-05-11 13:01:59 · 883 阅读 · 0 评论 -
头歌实践教学平台:CG1-v2.0-直线绘制
(1)根据直线Bresenham算法补全line函数以绘制白色直线,其中直线斜率为任意情况。(2)当直线方程恰好经过P(x,y)和T(x,y+1)的中点M时,统一选取直线上方的T点为显示的像素点。image.set(x, y, color)函数是绘制点的函数,参数包括x、y和color。参数x为绘制点的x坐标,参数y为绘制点的y坐标,参数color为绘制点的颜色。(2)点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。Bresenham算法相关知识点,请参考教材与课件或有关资料。原创 2024-05-10 00:22:43 · 543 阅读 · 0 评论 -
头歌实践教学平台:CG1-v2.0-直线绘制
(1)根据直线Bresenham算法补全line函数,其中直线斜率0<k<1,并将main函数中的line函数参数补充完整;(2)当直线方程恰好经过P(x,y)和T(x,y+1)的中点M时,统一选取直线上方的T点为显示的像素点。image.set(x, y, color)函数是绘制点的函数,参数包括x、y和color。参数x为绘制点的x坐标,参数y为绘制点的y坐标,参数color为绘制点的颜色。(1)按要求补全line函数;(1)直线两端点坐标:(20, 20)和(180,140);(2)直线颜色为白色。原创 2024-05-10 00:20:32 · 250 阅读 · 0 评论 -
头歌实践教学平台:CG1-v2.0-直线绘制
(1)根据直线中点画线算法补全line函数,其中直线斜率0<k<1,并将main函数中的line函数参数补充完整;(2)当直线方程恰好经过P(x,y)和T(x,y+1)的中点M时,统一选取直线上方的T点为显示的像素点。image.set(x, y, color)函数是绘制点的函数,参数包括x、y和color。参数x为绘制点的x坐标,参数y为绘制点的y坐标,参数color为绘制点的颜色。(1)按要求补全line函数;(1)直线两端点坐标:(100, 100)和(520,300);(2)直线颜色为红色。原创 2024-05-10 00:18:29 · 435 阅读 · 0 评论 -
头歌实践教学平台:CG1-v2.0-直线绘制
(1)根据直线DDA算法补全line函数,其中直线斜率0<k<1;(2)当直线方程恰好经过P(x,y)和T(x,y+1)的中点M时,统一选取直线上方的T点为显示的像素点。image.set(x, y, color)函数是绘制点的函数,参数包括x、y和color。参数x为绘制点的x坐标,参数y为绘制点的y坐标,参数color为绘制点的颜色。(2)点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。(1)直线两端点坐标:(13, 20)和(180,140);(2)直线颜色为白色。原创 2024-05-10 00:15:54 · 314 阅读 · 0 评论 -
头歌实践教学平台:CG3-v2.0-图形几何变换
(2) 将立方体的顶点坐标分别沿x,y,z轴方向缩放0.5倍;(3) 将立方体的顶点坐标分别沿z轴逆时针方向旋转45度,再分别向y,z轴缩放0.5倍,x轴保持不变,然后绘制一个红菱形;(1) 理解几何变换基本原理, 掌握平移、旋转和缩放变换的方法;(2) 根据几何变换基本原理,将main函数中的空白部分补充完整来绘制三菱形状。(1)按要求补全代码;(2)点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。几何变换:指对图形的几何信息经过平移、缩放、旋转等变换后产生的新图形。原创 2024-05-09 11:39:12 · 468 阅读 · 0 评论 -
头歌实践教学平台:CG3-v2.0-图形几何变换
(2) 将立方体的顶点坐标分别沿x,y,z轴方向缩放0.5倍,然后绘制一个白色正方形;(3) 将立方体的顶点坐标分别向y,z轴缩放0.5倍,x轴保持不变,再沿z轴逆时针方向旋转45度,然后绘制一个绿色矩形;(4) 将立方体的顶点坐标分别沿z轴逆时针方向旋转45度,再分别向y,z轴缩放0.5倍,x轴保持不变,然后绘制一个红菱形。(2)点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。几何变换:指对图形的几何信息经过平移、缩放、旋转等变换后产生的新图形。旋转一定角度,然后再通过矩阵。原创 2024-05-09 11:37:43 · 622 阅读 · 0 评论 -
头歌实践教学平台:CG3-v2.0-图形几何变换
(2) 将立方体的顶点坐标分别沿x,y,z轴方向缩放0.5倍,然后绘制一个白色正方形;(3) 将立方体的顶点坐标分别向x,y,z轴正方向平移0.5个单位距离,再沿z轴逆时针方向旋转45度,然后绘制一个绿色正方形 (4) 将立方体的顶点坐标分别沿z轴逆时针方向旋转45度,再分别向x,y,z轴正方向平移0.5个单位距离,然后绘制一个红色正方形;(1)按要求补全代码;(2)点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。几何变换:指对图形的几何信息经过平移、缩放、旋转等变换后产生的新图形。原创 2024-05-08 19:45:16 · 545 阅读 · 0 评论 -
头歌实践教学平台:CG3-v2.0-图形几何变换
(2) 将立方体的顶点坐标分别沿x,y,z轴方向缩放0.5倍,然后绘制一个白色正方形;(3) 将(2)中的立方体的顶点坐标分别沿x,y,z轴方向缩放0.5倍,再分别向x,y,z轴正方向平移0.5个单位距离,然后绘制一个红色正方形;(4) 将(2)中的立方体的顶点坐标分别向x,y,z轴正方向平移0.5个单位距离,再分别沿x,y,z轴方向缩放0.5倍,然后绘制一个绿色正方形。(1) 理解几何变换基本原理, 掌握平移和缩放变换的方法;几何变换:指对图形的几何信息经过平移、缩放、旋转等变换后产生的新图形。原创 2024-05-08 19:42:29 · 389 阅读 · 0 评论 -
头歌实践教学平台:CG3-v2.0-图形几何变换
(2) 根据平移算法原理补全translation、scale、rotation_x、rotation_y和rotation_z函数;(3) 将立方体的顶点坐标分别向x,y,z轴正方向平移0.5个单位距离,然后绘制一个红色正方形;(4) 将立方体的顶点坐标分别沿x,y,z轴方向缩放0.5倍,然后绘制一个绿色正方形;时,物体x、y坐标改变,而z坐标值在该变换中不改变,即。时,物体y、z坐标改变,而x坐标值在该变换中不改变,即。时,物体x、z坐标改变,而y坐标值在该变换中不改变,即。开始你的任务吧,祝你成功!原创 2024-05-08 19:40:53 · 514 阅读 · 0 评论 -
头歌实践教学平台:画圆
如果我们生成一个点(x,y)的坐标,我们将得到八个点的坐标。根据以下要求修改右侧的代码,绘制预期的输出图像。系统将测试您编写的代码。要完成此任务,您需要了解圆的对称性和“中点法”,以便能够绘制圆。原创 2024-05-07 09:20:24 · 502 阅读 · 0 评论 -
头歌实践教学平台:CG2-v2.0-三角形填充
对于下半部分,y每增加1点(有可能t0 == t1)我们就用插值来求出对应的点A和点B。如果想绘制一个三角形,最简单的方法是,对于三角形边界上每个点的y坐标,我们找到对应的左右两边界的X坐标y_left(A)和y_right(B) 从三角形的最低顶点开始,沿着你的方法一直到顶部,用扫描线法填充它。了解和掌握扫描线填充法,实现对三角形区域进行填充,具体要求如下: (1) 补全triangle函数;image.set(x, y, color)函数用来绘制点,其中参数x,y为点的坐标,color为点的颜色。原创 2024-05-07 09:19:49 · 337 阅读 · 0 评论 -
头歌实践教学平台:三维图形观察OpenGL2.0
将立方体[-1,1] * [-1,1] * [-1,1]映射到屏幕,得到立方体[x,x+w]* [y,y+h]* [0,d]。这里d是z-buffer的分辨率,等于255,这样可以简单地转储z-buffer的黑白图像以便调试。(2) 视口矩阵中参数x、y的大小为宽度(width)的四分之一,参数w的大小为宽度的一半(width),参数h的大小为高度的一半(height),参数d=255。(3) 根据视口变换的方法将viewport函数中的空白部分补充完整,并将main函数中的参数补充完整。原创 2024-05-06 00:14:28 · 396 阅读 · 0 评论 -
头歌实践教学平台:三维图形观察OpenGL2.0
现在图像有另一个帧(O',i',j',k')。可以这样来解决这个问题:如果想要绘制一个场景,摄像机位于点e(眼睛),摄像机应该指向点c(中心),这样给定的矢量u(上)在最终渲染中是垂直的。这意味着需要在(c, x', y', z')中进行渲染,但是模型是在坐标系(O, x, y, z)中给出的,所以需要计算坐标的变换。(2) 相机坐标为(0, 1.5, 4),中心点坐标为(0,0,0),向上的矢量为Vec3f(0, 1, 0)(2) 点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。原创 2024-05-06 00:14:00 · 432 阅读 · 0 评论 -
头歌实践教学平台:三维图形观察OpenGL2.0
(3) 将白色立方体的顶点坐标向x轴正方向平移1.2个单位距离,然后绘制一个红色立方形;(4) 将白色立方体的顶点坐标沿y轴逆时针方向旋转30度,再向x轴负方向平移1.3个单位距离,然后绘制一个绿色正方形。(1) 理解模型变换基本原理,掌握平移和旋转变换的方法;(2)点击窗口右下角"测评"按钮,等待测评结果,如果通过后可进行下一关任务。时,物体x、y坐标改变,而z坐标值在该变换中不改变,即。时,物体y、z坐标改变,而x坐标值在该变换中不改变,即。时,物体x、z坐标改变,而y坐标值在该变换中不改变,即。原创 2024-05-06 00:13:23 · 334 阅读 · 0 评论 -
头歌实践教学平台:三维图形观察OpenGL1.0
(2).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,以中心为绘制原点,设置前景色为红色glColor3f(1.0, 0.0, 0.0),绘制单位立方体线框,用glutWireCube(1.0)完成;(3).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,设置前景色为绿色glColor3f(0.0, 1.0, 0.0),设置线宽为2.0用glLineWidth(2.0)完成,将原单位立方体线框沿X轴正方向平移2.0;原创 2024-05-05 00:47:06 · 1072 阅读 · 0 评论 -
头歌实践教学平台:三维图形观察OpenGL1.0
(5).视点改为(1.0,1.5,8.0),观察中心改为在(0, 0 ,0),向上矢量改为(0, 1, 0);(2).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,以中心为绘制原点,设置前景色为红色glColor3f(1.0, 0.0, 0.0),绘制单位立方体线框,用glutWireCube(1.0)完成;gluLookAt(0,0,5,0,0,0,0,1,0)函数指把照相机位置放在(0, 0, 5)处,镜头瞄准(0,0,0)点,朝上方向为(0,1,0)。原创 2024-05-05 00:45:18 · 665 阅读 · 0 评论 -
头歌实践教学平台:三维图形观察OpenGL1.0
(2).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,以中心为绘制原点,设置前景色为红色glColor3f(1.0, 0.0, 0.0),绘制单位立方体线框,用glutWireCube(1.0)完成;(3).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,设置前景色为绿色glColor3f(0.0, 1.0, 0.0),设置线宽为2.0用glLineWidth(2.0)完成,将原单位立方体线框沿X轴正方向平移2.0;原创 2024-05-05 00:42:46 · 455 阅读 · 0 评论 -
头歌实践教学平台:投影变换v2.0
(2) 代码自动将模型投影到二维平面,经过模型变换,生成一个长宽高不等的立方体,并将显示窗口一分为四,分为四个视口,每个视口大小均为原窗口大小的一半。然后沿Y轴顺时针旋转90度,最后进行视口变换ViewPort1,绘制一个绿色矩形;(5) 在第三视口ViewPort2中,首先将立方体沿Y轴向XOZ平面投影。(6) 在第四视口ViewPort3中,首先将立方体沿Y轴顺时针旋转45度,然后进行投影变换,投影变换参数eye和center已给出。最后进行视口变换ViewPort3,绘制一个黄色立方体。原创 2024-05-04 00:54:28 · 582 阅读 · 0 评论 -
头歌实践教学平台:投影变换v2.0
(2) 代码自动将模型投影到二维平面,经过模型变换,生成一个长宽高不等的立方体;(4) 将立方体沿Y轴向XOZ平面正投影,然后沿X轴逆时针旋转90度,最后沿着Y轴负方向平移1.2个单位长度,绘制一个红色矩形;(5) 将立方体沿X轴向YOZ平面正投影,然后沿Y轴顺时针旋转90度,最后沿着X轴负方向平移1.2个单位长度,绘制一个绿色矩形;(6) 绘制正等测投影图,将立方体沿Z轴逆时针旋转45度,再沿X轴逆时针旋转35.25度,然后沿Z轴向XOY平面正投影。(2) 将main函数中的空白部分补充完整。原创 2024-05-04 00:52:37 · 145 阅读 · 0 评论 -
头歌实践教学平台:投影变换v2.0
(5) 改变视点与模型位置,产生两点透视(先观察变换再模型变换): 首先对绿色立方体分别进行观察变换,将参数eye沿y轴顺时针旋转45度作为相机坐标,中心点坐标为center,向上矢量为Vec3f(0, 1, 0)。(4) 改变视点与模型位置,产生两点透视(先模型变换再观察变换): 首先将立绿色方体的顶点分别向x轴正,负两个方向平移1.2个单位,绘制两个绿色立方体。(3) 改变模型位置,产生两点透视: 将绿色立方体顶点分别沿y轴逆时针旋转45度,向y轴正方向平移1.2个单位,绘制一个红色立方体。原创 2024-05-03 00:22:49 · 27 阅读 · 0 评论 -
头歌实践教学平台:投影变换v2.0
(3) 参考已有代码,将中心立绿色方体的顶点分别向y轴负方向平移1.2个单位,绘制一个红色立方体。再将红色立方体顶点分别向x轴正,负两个方向平移1.2个单位,绘制两个红色立方体。三个立方体的投影变换eye的坐标均为(0,0,4);(4) 将中心绿色立方体的顶点分别向y轴正方向平移1.2个单位,绘制一个黄色立方体。再将黄色立方体顶点分别向x轴正,负两个方向平移1.2个单位,绘制两个黄色立方体。三个立方体的投影变换eye的坐标均为(0,0,8);(1) 理解透视投影变换的方法;(1) 按要求补全代码;原创 2024-05-03 00:19:54 · 455 阅读 · 0 评论 -
头歌实践教学平台:投影变换v1.0
(2)阅读实验原理,运行示范实验代码,理解掌握OpenGL程序的模型视图变换。(5).进行平行投影调用glOrtho()函数,坐标为(左,右,下,上,近,远),坐标为glOrtho(-3.0, 3.0, -3.0, 3.0,-100.0, 100.0);glOrtho(左,右,下,上,近,远)为正投影函数,其中六个参数划分出了一个立方体空间,这个空间里物体将以正投影的模式表现,在移动的过程中,观察到的物体大小不会发生变化,这解释了为什么在正投影中移动物体,不能观察出物体形状变化;开始你的任务吧,祝你成功!原创 2024-04-30 00:30:30 · 758 阅读 · 0 评论 -
头歌实践教学平台:投影变换v1.0
(2).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,以中心为绘制原点,设置前景色为红色glColor3f(1.0, 0.0, 0.0),绘制单位立方体线框,用glutWireCube(1.0)完成;(3).运用glPushMatrix()函数和glPopMatrix()函数进行矩阵操作,设置前景色为绿色glColor3f(0.0, 1.0, 0.0),设置线宽为2.0用glLineWidth(2.0)完成,将原单位立方体线框沿X轴正方向平移2.0;原创 2024-04-30 00:27:57 · 639 阅读 · 0 评论 -
头歌实践教学平台:CG4-v1.0-Bezier曲线和B样条曲线
Bezier曲线是通过一组多边形折线的顶点来定义的。如果折线的顶点固定不变,则由其定义的Bezier曲线是唯一的。在折线的各顶点中,只有第一点和最后一点在曲线上且作为曲线的起始点和终止点,其他的点用于控制曲线的形状及阶次。曲线的形状趋向于多边形折线的形状,要修改曲线,只要修改折线的各顶点就可以了。(3).参考代码文件中的Bezier曲线生成代码,根据B样条公式,修改B样条曲线代码来实现B样条的生成。掌握几种常见的曲线生成算法,利用VC+OpenGL实现Bezier曲线生成算法和B样条曲线算法。原创 2024-04-29 14:26:52 · 483 阅读 · 0 评论 -
头歌实践教学平台:CG7-v2.0-实体消隐
实际上,只要存在深度缓冲区,都会把像素的深度值写入到缓冲区中。当要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中)如果大于原来的z值,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色。对于P点的z值,可以通过重心坐标来计算:我们把P点z值也可以看成三角形顶A,B,C的重心坐标的一个线性组合,即: P.z = A.z*a + B.z*b + C.z*c, 其中A,B,C为三角形顶点, a,b,c为重心坐标。开始你的任务吧,祝你成功!原创 2024-04-29 11:50:37 · 427 阅读 · 0 评论 -
头歌实践教学平台:CG5-v1.0-简单光照效果
(2).在合适的地方修改代码,使茶壶进行着色,每个茶壶材质参数和光照的参数已给出;(3).左边茶壶只有环境光和自身的发射光RGBA强度;(4).中间的茶壶有环境光、漫反射光和自身的发射光RGBA强度;(5).右边的茶壶有环境光、漫反射光、镜面反射光和自身的发射光RGBA强度;(1).设置一个或多个光源,设定它的有关属性;(3).设置物体的材料属性。为了完成本关任务,你需要掌握:了解掌握OpenGL程序的光照与材质,能正确使用光源与材质函数设置所需的绘制效果。根据提示,在右侧修改代码,并自己绘制出图形。原创 2024-04-27 14:23:59 · 319 阅读 · 0 评论 -
头歌实践教学平台:CG5-v1.0-简单光照效果
给球体添加环境光,漫反射和镜面反射等效果,每个参数的含义已在代码中给出。(1).左侧圆球有环境光、漫反射和镜面低反射;(2).中间圆球有环境光、漫反射和镜面高反射;(3).右侧圆球有彩色环境光、漫反射、镜面高反射和材料辐射。为在场景中增加光照,需要执行以下步骤。(1).设置一个或多个光源,设定它的有关属性;(3).设置物体的材料属性。为了完成本关任务,你需要掌握:了解掌握OpenGL程序的光照与材质,能正确使用光源与材质函数设置所需的绘制效果。根据提示,在右侧修改代码,并自己绘制出图形。原创 2024-04-27 14:18:12 · 310 阅读 · 0 评论 -
头歌实践教学平台:CG5-v1.0-简单光照效果
例如: //材质的环境颜色,params默认值(0.2,0.2,0.2,1.0) glMaterialfv(GL_FRONT,GL_AMBIENT,params);//材质的镜面反射颜色,params默认值(0.0,0.0,0.0,1.0) glMaterialfv(GL_FRONT,GL_SPECULAR,params);//材质的发射光颜色,params默认值(0.0,0.0,0.1,1.0) glMaterialfv(GL_FRONT,GL_EMISSION,params);原创 2024-04-27 14:10:45 · 435 阅读 · 0 评论