
opengl
文章平均质量分 72
opengl
Marco&GalaxyDragon
这个作者很懒,什么都没留下…
展开
-
opengl绘制三次贝塞尔曲线
上一篇上篇讲了三次hermite曲线,三次cardinal曲线的绘制,都需要用约束矩阵来求解曲线的系数,而贝塞尔曲线直接给出显式公式来绘制,只要给出几个控制点即可,贝塞尔曲线其实就是一种加权混合的多项式,随着参数值的增加,依次逼近几个控制点,和无穷级数有异曲同工之妙。贝塞尔曲线通过混合几个控制点的位置,来逼近控制点。贝塞尔曲线的公式为在参数曲线表示下表示形式为其中看起来很复杂,实际上不复杂。根据给出的公式可以推导出三阶贝塞尔曲线的公式为y(u),和z(u)也是同理根据该公式就可以原创 2021-01-29 23:50:48 · 1163 阅读 · 0 评论 -
opengl绘制三次hermite曲线,三次cardinal曲线
引言上篇上一篇绘制了最基础插值曲线,讲到除了插值经过给定点之外,还有别的约束条件。有时为了所得曲线在端点处具有给定的N阶导数,亦即所称的参数连续性条件和几何连续性条件,给约束矩阵添加了导数约束。hermite曲线就是一种经过控制点,且必须在控制点具有给定导数的插值曲线。以三次hermite曲线为例,上次说到三次曲线有四个系数,所以必须构造一个四阶方阵,因此,必须要有四个约束条件。三次hermite曲线的约束条件分别是两个点的位置,以及两点处的导数,这样一共凑出四个约束条件,可以唯一确定一条三次曲线原创 2021-01-29 23:27:29 · 1897 阅读 · 0 评论 -
opengl绘制二次,三次,四次插值曲线
引言因为涉及许多矩阵操作,自己写一个完善的矩阵类较为复杂,所以这里使用了c/c++环境下用的比较多的线性代数库eigen。配置过程如下公式的推导插值曲线就是给出若干个控制点及一些约束条件,构造出一条曲线来经过或者逼近这几个控制点,最简单的曲线形式就是多项式曲线,依据多项式内的各项的最高次数,依次分为二次曲线,三次曲线,四次曲线…最简单的插值曲线形式就是给出N+1个点,然后构造出一条N次曲线来依次经过这几个点,这几个点又称为控制点。这样马上就能产生一个问题,几个点如何确定一条曲线呢?至少需要多少个点原创 2021-01-29 22:25:44 · 3362 阅读 · 1 评论 -
visual studio 2019配置eigen和例子
今天需要用到一些矩阵运算的函数,本来想自己写,但是实在是麻烦,而且有些难度,于是搜寻了一下发现了eigen这个c/c++环境下的矩阵运算的库记录一下配置过程eigen是以源代码的形式发布的在官方网址https://gitlab.com/libeigen/eigen/-/releases下载源代码任选一个压缩包下载即可解压后进入文件夹中,复制整个Eigen文件夹放置到vs2019的以下目录(或其他版本的相应目录下)整个复制进去即可,复制完成后include文件夹如下所示以下是一些使用原创 2021-01-29 14:53:29 · 3301 阅读 · 0 评论 -
opengl绘制旋转的立方体
主要是运用glutIdleFunc()函数来实现动画效果,glutIdleFunc()会在空闲时被调用,然后用angle记录角度gluPerspective(45, ratio, 0, 100);用来设置三维透视模式使用glRotatef(angle, 0, 1, 0)绕y轴旋转,之后调用 glTranslatef(-1, -1,-5);移动方块到一个可以看见的地方。最后调用glutWireCube(1)在当前坐标系原点绘制一个线框立方体#include<glut.h>floa..原创 2021-01-28 21:41:08 · 1397 阅读 · 0 评论 -
opengl三维几何变换实例
引言> 接上一篇 要在opengl中显示三维物体需要将投影模式设置为透视 如gluPerspective(45, 1, 0, 100);第一个参数为fov角,第二个参数是宽高比,后两个参数分别是最近可视距离和最远可视距离#include<glut.h>int main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GL原创 2021-01-28 20:55:31 · 3303 阅读 · 5 评论 -
opengl二维几何变换实例
opengl二维几何变换opengl提供的几何变换函数和绘图函数是完全分开的,并没有指定一个变换矩阵然后再绘图的API。opengl是先使用几何变换函数,此时相当于永久改变了坐标系,此后的所有绘图操作都相当于在新坐标系下进行。如 glTranslatef(100, 100, 0); 相当于把当前坐标轴向x轴正向和y轴正向同时移动100个单位,此后所有的绘图函数都参照此新坐标系进行。此时如果在新坐标系原点绘制一个点,相当于在原坐标系的(100,100)处绘制一个点opengl一共有四个矩阵栈,应用于不原创 2021-01-21 19:55:21 · 5582 阅读 · 2 评论