首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【OpenGL】二十、OpenGL 矩阵变换 ( 矩阵缩放变换 | 矩阵旋转变换 | 矩阵平移变换 )

文章目录 一、绘制三角形 二、选中矩阵设置 三、矩阵缩放变换 四、矩阵旋转变换 五、矩阵平移变换 六、相关资源 一、绘制三角形 ---- 先绘制一个三角形 , 矩阵变换的主题就是该三角形 ; OpenGL...下面讲的 旋转 , 平移 , 变换 , 都是针对模型视图矩阵进行的操作 ; 三、矩阵缩放变换 ---- 渲染时先设置单位矩阵 , // 设置单位矩阵 glLoadIdentity(); 然后调用...绘制三角形结束 glEnd(); // 将后缓冲区绘制到前台 SwapBuffers(dc); } 执行效果 : 对比 ( 一 ) 中的三角形 , 增加了 2 倍 ; 四、矩阵旋转变换...// 绘制三角形结束 glEnd(); // 将后缓冲区绘制到前台 SwapBuffers(dc); } 执行结果 : 三角形绕 z 轴旋转了 30 度 ; 五、矩阵平移变换...// 如果对应值设置为 1 , 则绕该轴旋转 // 这里设置的是绕 z 轴旋转 30 度 //glRotatef(30.0f, 0.0f, 0.0f, 1.0f); // 平移变换

3.6K00

投影矩阵推导_矩阵投影变换

概要 投影变换是计算机图形学的基础,理解并推导投影矩阵也是很有必要的。正交投影比较简单,没有透视失真效果(近大远小)。而透视投影比较符合人类的眼睛感知,平行线在远处会相交于一点。...投影是通过一个4×4的矩阵来完成的,将视锥映射成标准观察体(齐次裁剪空间)。...OpenGL采用的是右手坐标系,z轴朝屏幕向外,因此观察方向是朝着z轴负方向的,那么将x,y,z坐标从区间[l, r], [b,t], [-n, -f]映射到[-1, 1]的函数为: 得到投影矩阵...: 当然也可以用一个平移和缩放矩阵的级联矩阵,来达到一样的效果。...: 变换后的齐次坐标,w分量为-Pz, DirectX DirectX的区别在于近平面为z=n,并且要将[n, f]映射到[0, 1],经过类似的计算,可以得到 得到投影矩阵

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    二维DCT变换

    二维DCT变换 二维DCT变换是在一维的基础上再进行一次DCT变换,公式如下: F(u,v)=c(u)c(v)\sum_{i=0}^{N-1}\sum_{i=0}^{N-1}f(i,j)\cos{[\frac...XX = A'* Y* A; % DCT逆变换 disp('原始矩阵:') disp(X) disp('使用公式进行DCT逆变换:') disp(XX) disp('使用MATLAB函数DCT逆变换...Python scipy模块中的fftpack.dct()函数提供了一维DCT变换功能(默认是沿着矩阵的最后一个axis进行变换),下面使用Python代码进行验证。...DCT用于图像压缩 对于二维灰度图像进行DCT变换,就能得到图像的频谱图:低阶(变化幅度小)的部分反映在DCT的左上方,高阶(变化幅度大)的部分反映在DCT的右下方。...(grayim) title('原始灰度图像'); 运行结果: [hpcco3d82l.png] 参考文献 1 二维DCT变换:https://wuyuans.com/2012/11/dct2 2 余弦离散变换原理及应用

    3.9K30

    OpenGL渲染流水线之世界矩阵,相机变换矩阵,透视投影变换矩阵

    OpenGL的矩阵和向量结合方式 OpenGL的向量为列向量,矩阵和向量采用的方式为“矩阵X列向量”的方式,而D3D11为"行向量X矩阵"的方式。OpenGL的向量矩阵结合如下所示: ?...当多个矩阵乘以向量时,应该从右向左计算,比如存在三个矩阵:Proj,View,Model 向量:Pos Proj*View*Model*Pos 代表 向量Pos先进行Model的变换,然后在进行View...的变换,最后进行Proj的变换 OpenGL的各个空间的变换矩阵 世界变换矩阵 我一般称世界矩阵为SRT矩阵,SRT分别是"Scale","rotate","translate"三个单词的缩写,也就是世界矩阵由缩放矩阵...二,相机变换矩阵(ViewMatrix) 在此之前看看UVN相机模型,如图所示: ?...相机矩阵如下所示: ? 具体推导见文章:推导相机变换矩阵,当然这篇博客对于OpenGL的相机矩阵计算是有些错误的。

    1.4K50

    OpenGL ---渲染流水线之世界矩阵,相机变换矩阵,透视投影变换矩阵

    当多个矩阵乘以向量时,应该从右向左计算,比如存在三个矩阵:Proj,View,Model 向量:Pos Proj*View*Model*Pos 代表 向量Pos先进行Model的变换,然后在进行View...的变换,最后进行Proj的变换 OpenGL的各个空间的变换矩阵 世界变换矩阵 我一般称世界矩阵为SRT矩阵,SRT分别是"Scale","rotate","translate"三个单词的缩写,也就是世界矩阵由缩放矩阵...二,相机变换矩阵(ViewMatrix) 在此之前看看UVN相机模型,如图所示: ?...相机矩阵如下所示: ? 具体推导见文章:推导相机变换矩阵,当然这篇博客对于OpenGL的相机矩阵计算是有些错误的。...具体推导参见文章: 深入探索透视投影变换 和 深入探索透视投影变换(续)

    2.6K20

    OpenGL(五)-- OpenGL中矩阵变换OpenGL(五)-- OpenGL中矩阵变换

    通过对视图坐标系经过投影矩阵(Projection Matrix)通过矩阵相乘变换得来的。...通过模型矩阵,观察者矩阵(View Matrix),投影矩阵(Projection Matrix)三步矩阵变换后最终确定该展示怎样的图像。...要注意的是矩阵的计算时从右往左的所以: result = 投影矩阵 * 观察者矩阵 * 模型矩阵。 物体旋转、平移变换 ?...压栈(PUSH操作)一个单元矩阵,初始化之后本身已近就存在一个单元矩阵。 ? 通过Xcode来查看矩阵中的入内,需要变换为4行4列来看。 2....拿出这单元矩阵和另一个矩阵相乘,就会得到一个新的矩阵矩阵6)。 3. 使用矩阵6之后,将最上方矩阵出栈(POP操作) 仿射变换API ?

    2.3K10

    透视投影变换矩阵推导_矩阵的投影

    在3D图形程序的基本矩阵变换中,投影矩阵是其中比较复杂的。平移和缩放浏览一下就能理解,旋转矩阵只要掌握了三角函数知识也可以理解,但投影矩阵有点棘手。...计算机显示器是一个二维表面,所以如果你想显示三维图像,你需要一种方法把3D几何体转换成一种可作为二维图像渲染的形式。那也正是投影做的。...它启发我们注意到这个矩阵可以用两个简单的变换串联替代:平移其次是缩放。...一个偏离中心(OffCenter)的正交投影矩阵也可以用一个变换和一个缩放代替,它和上面的结果很相似所以我在这里不列出了。...如果你能找到个办法获得z’z的公式就像x’z和y’z那样,你就可以写一个变换矩阵把(x, y, z)映射到(x’z, y’z, z’z)。

    1.4K20

    详解Winograd变换矩阵生成原理

    、乘法模逆元 2.6、多项式乘法模逆元 2.7、中国剩余定理 2.8、多项式的中国剩余定理 3、多项式的中国剩余定理的应用 3.1、卷积操作与中国剩余定理的联系 3.2、Winograd F(2,3)变换矩阵推导...主要是在看完许多相关的文章之后,对于Winograd这个算法背后的数学原理我还是没法完全理解,尤其是Winograd的变换矩阵究竟是如何生成的。...还有一点要提下,就是Winograd这个算法发明出来其实是用来加速Convolution操作的,所以计算变换矩阵也是从Convolution角度去计算,而计算出来的变换矩阵在做一点小变动之后,也可以直接应用在深度学习的...3.2、Winograd F(2,3)变换矩阵推导 现在来看下具体到F(2,3)的变换矩阵是如何得到的。...Winograd的变换矩阵反着来用的,为了和上面的公式对应,这里用 s,p,h 分别表示,输入,权值和输出: h=AT∗[G∗p⊙BT∗s] 把矩阵 A 和 B 做转置: AT=[111001−11]BT

    1K10

    详解Winograd变换矩阵生成原理

    主要是在看完许多相关的文章之后,对于Winograd这个算法背后的数学原理我还是没法完全理解,尤其是Winograd的变换矩阵究竟是如何生成的。...还有一点要提下,就是Winograd这个算法发明出来其实是用来加速Convolution操作的,所以计算变换矩阵也是从Convolution角度去计算,而计算出来的变换矩阵在做一点小变动之后,也可以直接应用在深度学习的...3.2、Winograd F(2,3)变换矩阵推导 现在来看下具体到F(2,3)的变换矩阵是如何得到的。...然后看下如何提取出变换矩阵,首先对公式作一些改动,把除2操作移动到 的计算里面: 通过观察上面的式子就能抽取出序列 , 各自的变换矩阵 ,还有最后输出变换矩阵 :...Winograd的变换矩阵反着来用的,为了和上面的公式对应,这里用 分别表示,输入,权值和输出: 把矩阵 和 做转置: 验证下,假设输入 ,权值 和输出 ,直接做

    4.4K20

    opengl投影矩阵变换_opengl 坐标

    翻译: 概述 计算机显示器是一个二维表面。由OpenGL渲染的3D场景必须作为2D图像投影到计算机屏幕上。GL_PROJECTION matrix投影 矩阵 用于此投影 转变。...翻译: 请注意:Xp和Yp依赖Ze;他们和-Ze成反比,换句话说:他们两个除以-Ze,这时构造GL_PROJECTIO矩阵第一条线索,然后视图坐标系通过乘以透视矩阵转换。裁剪坐标依旧是齐次坐标。...翻译:因此,我们能够将裁剪坐标的w分量设置为-Ze,并且,把投影矩阵第四列变换成(0, 0, -1, 0)。...翻译 现在,我们只需要处理投影矩阵的前三行。找到Zn和Xn、Yn有一点不同,因为在视图坐标中总是投影到-n的近平面。我们需要为唯一的z值做裁剪和深度测试,另外,我们应该能够对他取消投影(逆变换)。...完成投影矩阵: OpenGL Perspective Projection Matrix 翻译: openGL透视投影矩阵 This projection matrix is for a general

    1.7K10

    OpenGL矩阵变换的数学推导

    什么是OpenGL的矩阵变换 我们先来看一张经典图: [g19314w146.jpeg] 这张图相信很多同学在学习OpenGL的过程中都看到过,它比较直观地展示了OpenGL矩阵变换的过程,下面我详解一下其中的含义...就要通过视口变换映射到屏幕上 以上就是一个完整的矩阵变换过程,里面最重要的就是MVP三个矩阵,M即模型矩阵(Model Matrix),V即视图矩阵(View Matrix),P即投影矩阵(Projection...模型矩阵(Model Matrix)推导 相信大家在数学中都学过平移、缩放、旋转三种基本变换,将模型放到世界坐标系中就是利用这三种变换的组合来实现的,我们来看一下平移、缩放、旋转三种变换对应的矩阵:  ...,R表示旋转变换矩阵。...原来神秘的矩阵变换过程已经清晰可见,希望能对大家有帮助!

    6.4K62

    详解Winograd变换矩阵生成原理

    还有一点要提下,就是Winograd这个算法发明出来其实是用来加速Convolution操作的,所以计算变换矩阵也是从Convolution角度去计算,而计算出来的变换矩阵在做一点小变动之后,也可以直接应用在深度学习的...的乘法次数就能达到加速的目的 3.2、Winograd F(2,3)变换矩阵推导 现在来看下具体到的变换矩阵是如何得到的。...然后看下如何提取出变换矩阵,首先对公式作一些改动,把除2操作移动到 的计算里面: 通过观察上面的式子,就能抽取出序列 , 各自的变换矩阵 ,还有最后输出变换矩阵 : 然后就可以用以下公式计算 的系数了...3.3、Winograd F(4,3)变换矩阵推导 再来看下的变换矩阵是如何得到的。首先假设有两个长度是4和3的离散序列 , 和它们等价的多项式表示 和 。...,所以可以把 矩阵的每一列抽取公因子,然后乘到 的对应行上, 而 每一列的公因子为 ,然后把公因子乘到 对应行,则得到新的矩阵: 最后就可以得到参考文献[5]中给出的 变换矩阵

    1.1K30

    OpenGL矩阵变换的数学推导

    就要通过视口变换映射到屏幕上 以上就是一个完整的矩阵变换过程,里面最重要的就是MVP三个矩阵,M即模型矩阵(Model Matrix),V即视图矩阵(View Matrix),P即投影矩阵(Projection...模型矩阵(Model Matrix)推导 相信大家在数学中都学过平移、缩放、旋转三种基本变换,将模型放到世界坐标系中就是利用这三种变换的组合来实现的,我们来看一下平移、缩放、旋转三种变换对应的矩阵: 平移变换...缩放变换 旋转变换         1)绕x轴旋转          2)绕y轴旋转           3)绕z轴旋转 大家可以看到旋转变换有三个矩阵?...,R表示旋转变换矩阵。...Matrix)的数学推导,可以看到里面的变换还是很精彩的,原来神秘的矩阵变换过程已经清晰可见,希望能对大家有帮助!

    1.1K30
    领券