OpenGL 之3D数学

 我来答
温屿17
2022-06-04 · TA获得超过1.2万个赞
知道小有建树答主
回答量:827
采纳率:0%
帮助的人:96.1万
展开全部

在开发过程我们涉及到的图形变换,就会涉及到矩阵/向量的计算.例如大家在使用 CAnimation 实现仿射变换,就使用了了OpenGL渲染技术.

math3D中有2个数据类型能够表示一个3维或者4维向量

在典型情况下,w坐标设为1.0。x,y,z值通过除以w,来进⾏行行缩放。而除以1.0则本质上不改 变x,y,z值。

2个单元向量 之间进⾏点乘运算将得到一个标量(不是三维向量量,是一个标量量).它表示两个向量之间的夹角的余弦值[-1,1];
如果向量不是单位向量,我们可以通过单位化向量。
单位向量1(x1,y1,z1)点乘单位向量2(x2,y2,z2)等于x1 x2+y1 y2+z1*z2

结果是u和v都是单位向量,得到是u和v夹角的余弦值.

结果是U和V的夹角。

两个向量叉乘就可以得到另外一个向量,新的向量会与原来2个向量定义的平面垂直。(叉乘不要求两个向量为单位向量)
新的向量与原来两个向量垂直,我们可以得到两个方向的新向量,显然得到两个向量是不对的,在这里要用右手法则判断

result为u叉乘v的结果

两种定义方式只是精度不同,都为三维矩阵

精度不同的四维矩阵

将⼀个 向量乘以单元矩阵 ,就相当于一个向量乘以1. 不会发生任何改变。

变换顶点向量量 = M_pro * M_view * M_model * V_local
变换顶点向量量 = 投影矩阵 ✖ 视图变换矩阵 ✖ 模型矩阵 ✖ 顶点

A 到Aᵀ就是从行矩阵转化成列矩阵的过程,这个过程叫矩阵的转置
所以在openGL中运用的是列矩阵。
顶点着色器中的运用

模型变换: ⽤于操纵模型与其中某特定变换. 这些变换将对象移动到需要的位置. 通过旋转,缩放,平移.

m:设置平移后的矩阵
X:X轴方向上平移的距离
Y:Y轴方向上平移的距离
Z:Z轴方向上平移的距离

m:设置旋转后的矩阵
angle:设置旋转的角度
X:如果为1,沿X轴旋转 ,如果为0,X轴不旋转
Y:如果为1,沿Y轴旋转,如果为0,Y轴不旋转
Z:如果为1,沿Z轴旋转, 如果为0,Z轴不旋转

m:设置旋转后的矩阵
xScale:x轴的坐标缩放xScale,如果为-1,x轴翻转
yScale:y轴的坐标缩放yScale,如果为-1,y轴翻转
Z xScale:z轴的坐标缩放zScale,如果为-1,z轴翻转

product:两种模型变化后的结果
a:先按照a矩阵变化
b:后按照b矩阵变化.

** 其实我们经过打断点再手动计算可知,是bxa,,为什么呢?原因是OpenGL默认是列矩阵,我们手动设置的值还是按照数学规律设置的,因为转置,所以相等**

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式