近期学习OPENGL相关知识点整理(模型,视图,投影坐标变换推导 + 鼠标控制球体旋转缩放公式)

本文整理了OpenGL中的坐标变换、模型变换、视变换、投影矩阵和视口变换等关键概念,包括向量和矩阵的运用、二维纹理映射、鼠标控制的球体旋转缩放公式等。通过详细讲解和相关链接,帮助读者深入理解OpenGL坐标系统的转换过程和投影原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

向量和矩阵要点(math-vector and matrices)

链接:https://blog.youkuaiyun.com/wangdingqiaoit/article/details/51383052

坐标和变换的数学基础(math-coordinates and transformations)

链接:https://blog.youkuaiyun.com/wangdingqiaoit/article/details/51394238

二维纹理映射(2D textures)

链接:https://blog.youkuaiyun.com/wangdingqiaoit/article/details/51457675

其中讲解滤波时,终于明白了放大和缩小滤波的原理了!

模型变换(model transformation)

链接:https://blog.youkuaiyun.com/wangdingqiaoit/article/details/51531002

视变换(view transformation)

链接:https://blog.youkuaiyun.com/wangdingqiaoit/article/details/51570001

投影矩阵和视口变换矩阵(math-projection and viewport matrix)

链接:https://blog.youkuaiyun.com/wangdingqiaoit/article/details/51589825

该文章中应该有一个地方写错了,“利用zn与ze的映射关系为:(-n,-1)和(-f,1)”,这里的映射关系应该是(-1,1)和(-n,-f)才对,如果是我错了,欢迎指正,并告明原因。

OpenGL坐标变换过程(vertex transformation)

链接:https://blog.youkuaiyun.com/bu_xiang_zhu_ce/article/details/78495186

OpenGL ES —— Perspective Projection的推导

链接:https://blog.youkuaiyun.com/osle123/article/details/52755980

这篇文章写得很好,很清晰,推荐,看完就完全了解了投影矩阵。

 

注意!注意!注意!!!代码书写的顺序和我们实际变换的顺序是反的,例如:

先缩放在平移完成模型变换P=T*S*p=(T*S)*p=Mp,但在代码中先调用translate再调用scale!

 

个人对投影矩阵中各个参数的理解:

   1.角度fovy:视野的范围角,即看到的视野范围大小,在计算投影矩阵的时候都用fovy/2;

   2. 近平面near:裁剪的近平面到相机的距离,小于near的所有物体都被裁剪;

   3. 远平面far:裁剪的远平面到相机的距离,大于far的所有物体都被裁剪;

   4. 推导过程中的(l,r)是近平面上x的范围;(t,b)是近平面上y的范围;根据视见体是对称的(正常情况下),

     -\frac{r+l}{r-l} 和-\frac{t+b}{t-b}便可以直接等于0,而宽度w=r-l,高度h=t-b,所以得到了最后的投影矩阵;

   

 

坐标系统:

 

球体坐标旋转视角参数:

制作鼠标控制图像旋转缩放时的参数计算

d:平面x方向上的偏移;

h:平面y方向上的偏移;

z:鼠标滚轮滑动的距离;

x=r\cdot cos(\frac{\pi }{180}\cdot d)\cdot cos(\frac{\pi }{180}\cdot h)\cdot z

y=r\cdot sin(\frac{\pi }{180}\cdot h)\cdot z

z=r\cdot sin(\frac{\pi }{180}\cdot d)\cdot cos(\frac{\pi }{180}\cdot h)\cdot z

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值