WebGL编程(5)-矩阵与图形变换的关系(平移、旋转、缩放)

变换矩阵(Transformation matrix):一个mat4类型的变量

		<script id="vShader" type="x-shader/x-vertex">
			attribute vec4 a_Position;
			uniform mat4 u_MatrixFour;
			void main(){
				gl_Position=u_MatrixFour*a_Position;
			}
		</script>

新坐标 = 变换矩阵 * 旧坐标
(因为矩阵乘法原则,变换矩阵必须写在前面)
在这里插入图片描述
其中新旧坐标的w=1,由上式可知:
x1 = a * x + b * y +c * z + d ;
y1 = e * x + f * y +g * z + h ;
z1 = i * x + j * y +k * z + l ;
1 = m * x + n * y + o * z +p ;

如果没有图形变换,则有
x1=x,y1=y,z1=z,
则可设原始变换矩阵为
在这里插入图片描述

平移:

因为平移就是对应坐标相加减
所以可以有
x1 = x + d ;
y1 = y + h ;
z1 = z + l ;
则有
在这里插入图片描述
所以在矩阵中只需要改变d,h,l(即第四列)的值即可。

旋转:

由基本旋转方式可知(具体可参考第四节),以绕z轴旋转为例
x1 = x * cosB - y * sinB ;
y1 = x * sinB + y * cosB ;
则有·,其中a = cosB,b = -sinB,e = sinB,f = cosB
在这里插入图片描述

缩放:

缩放就是把对应坐标放大或缩小相应的倍数(n),一般选择a,f,k的值作改变
x1=n * x = a * x;
y1=n * y = f * y;
z1=n * z = k * z;
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值