专栏
资源中心
模板库
首页
>
专栏
>
计算机图形学
> 文章详情
WebGL图形变换:旋转矩阵
发布于:2023-02-26 20:45:33 原创发表 查看:59 讨论:0
一,原始步骤
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
旋转比平移复杂一些,因为描述一个旋转本身就比描述一个平移复杂。为了描述旋转,你应该知道:
F89易塔云建站-模板下载,web开发资源,技术博客
1. 旋转轴(图形将围绕旋转轴旋转)
F89易塔云建站-模板下载,web开发资源,技术博客
2. 旋转方向(方向:顺时针或逆时针)
F89易塔云建站-模板下载,web开发资源,技术博客
3. 旋转角度(图形旋转经过的角度)
F89易塔云建站-模板下载,web开发资源,技术博客
这里这样描述:绕Z轴,逆时针旋转了 β 角度。
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
右手旋转法则:右手握拳,大拇指伸直并使其指向旋转轴的正方向,那么右手其余几个手指就指明了旋转的方向。现在我们看下旋转的数学表达式:
F89易塔云建站-模板下载,web开发资源,技术博客
设点p(x, y, z)旋转 β 角度之后变为 p'(x', y', z') ;首先旋转是绕z轴进行的,所以z坐标不会变,直接忽略,然后,x轴和y轴的情况有一些复杂。
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
由于:
F89易塔云建站-模板下载,web开发资源,技术博客
x = r cos α
F89易塔云建站-模板下载,web开发资源,技术博客
y = r sin α
F89易塔云建站-模板下载,web开发资源,技术博客
类似的,你也可以表示点p'的坐标
F89易塔云建站-模板下载,web开发资源,技术博客
x' = r cos (α + β)
F89易塔云建站-模板下载,web开发资源,技术博客
y' = r sin (α + β)
F89易塔云建站-模板下载,web开发资源,技术博客
利用三角函数可得
F89易塔云建站-模板下载,web开发资源,技术博客
x' = r (cos α cos β - sin α sin β)
F89易塔云建站-模板下载,web开发资源,技术博客
y' = r (sin α cos β + cos α sin β)
F89易塔云建站-模板下载,web开发资源,技术博客
将等式1代入上式,得
F89易塔云建站-模板下载,web开发资源,技术博客
x' = x cos β - y sin β
F89易塔云建站-模板下载,web开发资源,技术博客
y' = y cos β + x sin β
F89易塔云建站-模板下载,web开发资源,技术博客
z' = z
F89易塔云建站-模板下载,web开发资源,技术博客
现在我们就可以把sin β 和 cos β 通过js 传递给着色器。
F89易塔云建站-模板下载,web开发资源,技术博客
着色器:
F89易塔云建站-模板下载,web开发资源,技术博客
gl_Position.x = a_Position.x * u_CosB - a_Position.y * u_SinB;
F89易塔云建站-模板下载,web开发资源,技术博客
gl_Position.y = a_Position.x * u_SinB + a_Position.y * u_CosB;
F89易塔云建站-模板下载,web开发资源,技术博客
js:
F89易塔云建站-模板下载,web开发资源,技术博客
var u_CosB = gl.getUniformLocation(gl.program, "u_CosB");
F89易塔云建站-模板下载,web开发资源,技术博客
var u_SinB = gl.getUniformLocation(gl.program, "u_SinB");
F89易塔云建站-模板下载,web开发资源,技术博客
gl.uniform1f(u_CosB );
F89易塔云建站-模板下载,web开发资源,技术博客
gl.uniform1f(u_SinB );
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
二,旋转矩阵
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
由上一篇的平移矩阵,我们同样可以推理出,旋转矩阵,如图:
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
三,沿X轴旋转和Y轴旋转的推到过程:
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
F89易塔云建站-模板下载,web开发资源,技术博客
写的不错
返回栏目
上一篇:WebGL图形变换:平移矩阵
下一篇:WebGL图形变换:缩放矩阵
评论
匿名
最新文章
热门笔记
理解:JS 的事件循环机制 Event Loop,微任务与宏任务
反问:JS 的原型链存在的意义是什么?为什么这样设计?
线性代数基础:求逆矩阵
总结:JS判断数据类型的四种方法
canvas 实例方法: save() 和 restore() 的理解
理解 js 构造函数
理解:js中 构造函数 与 原型的对应关系
正则表达式_概念_简介_起源
js 对于地址栏中的 URI 的解析
原生 js 获取 html 是一个 HTML Collection 集合,使用 let 方法可以获得块级作用域
可以直接扫码关注本站
微信扫码关注公众号
回复指定菜单关键词,即可获取相应功能或领取会员福利哦
微信扫一扫,添加好友
添加指定客服微信
咨询相关建站问题,还可获取领取会员福利哦