初识open GL es 组合动画

OpenGL变换技巧
本文通过示例介绍了OpenGL中平移和旋转组合变换的区别,展示了不同变换顺序如何影响图形输出,并探讨了参数设置及其对图形表现的影响。

 

Translate & Rotate (平移和旋转组合变换)

按照正常的理解,先平移和先旋转没什么区别吧,但是经测试,的确是有很大的区别的。甚至是结果完全的不同。示例如下:

先画一个方块绕着中心点自转。

 

	        // SQUARE A
		// Save the current matrix.
		gl.glPushMatrix();
		// Rotate square A counter-clockwise.
		gl.glRotatef(angle, 0, 0, 1);
		// Draw square A.
		square.draw(gl);
		// Restore the last matrix.
		gl.glPopMatrix();// 恢复了变换矩阵

 然后再画一个方块B绕着方块A做旋转,正常代码(先旋转再平移)应该如下:

 

 

		// SQUARE B
		// Save the current matrix
		gl.glPushMatrix();
		// Rotate square B before moving it, making it rotate around A.
		gl.glRotatef(-angle, 0, 0, 1);
		// Move square B.
		gl.glTranslatef(2, 0, 0);
		// Scale it to 50% of square A
		gl.glScalef(.5f, .5f, .5f);
		// Draw square B.
		square.draw(gl);
		gl.glPopMatrix();

 但是如果先平移再旋转:

gl.glTranslatef(2, 0, 0);// 先平移
gl.glRotatef(-angle, 0, 0, 1);//再旋转

 

就造成方块A和方块B同轴旋转了。

再有旋转

public abstract void glRotatef (float angle, float x, float y, float z)

 中参数X,Y,Z是一个整体,应该是(x,y,z)的向量坐标。

原理性的问题进一步了解中。

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值