OpenGL 入门6

来源:互联网 发布:mac git 添加忽略文件 编辑:程序博客网 时间:2024/04/29 23:41

原帖地址:
http://ogldev.atspace.co.uk/www/tutorial07/tutorial07.html
http://blog.csdn.net/cordova/article/details/52558133

旋转变换

这里写图片描述
首先我们用极坐标的形式把(x1,y1)表示出来。假设 x1,y1到原点的距离是r,且(x1,y1)与x轴的夹角是a1,那么(x1,y1)的极坐标表示为(r·cosα1,r·sinα1)。
现在我们将(x1,y1)延着z轴(假设我们使用左手坐标系,z轴从屏幕里指向我们)旋转α2度,那么做种坐标(x2,y2)的极坐标表示为(r·cos(α1+α2),r·sin(α1+α2))。所以,
x2 = r·cosα1·cosα2 - r·sinα1·sinα2 =x1·cosα2 - y1·sinα2
y2 = r·sinα1·cosα2 + r·cosα1·sinα2 = x1·sinα2 + y1·cosα2
所以绕z轴旋转α2度的映射关系如下:
变换矩阵用列向量表示:
这里写图片描述
变换矩阵用行向量表示:
这里写图片描述

沿着y轴旋转的行矩阵:

沿着x轴旋转的行矩阵:
这里写图片描述
我们发现,沿着那个轴旋转,那个轴的坐标就不会改变。

代码

World.m[0][0]=cosf(Scale); World.m[0][1]=-sinf(Scale); World.m[0][2]=0.0f; World.m[0][3]=0.0f;World.m[1][0]=sinf(Scale); World.m[1][1]=cosf(Scale);  World.m[1][2]=0.0f; World.m[1][3]=0.0f;World.m[2][0]=0.0f;        World.m[2][1]=0.0f;         World.m[2][2]=1.0f; World.m[2][3]=0.0f;World.m[3][0]=0.0f;        World.m[3][1]=0.0f;         World.m[3][2]=0.0f; World.m[3][3]=1.0f;

这里的代码,设置我们的图形沿着z轴做周期性的旋转操作。

0 0
原创粉丝点击