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
- opengl入门6。1
- OpenGL 入门6
- OpenGL入门
- OpenGL 入门
- Opengl入门
- OpenGL 入门
- OpenGL 入门
- opengl入门
- OpenGL入门
- opengl入门
- OpenGL入门
- openGL入门
- opengl入门
- opengl入门
- OpenGL入门
- OPENGL入门
- OpenGL入门
- OpenGl入门
- 57 leetcode - Jump Game II
- axis1实现webservice
- Leetcode Perfect Squares 279
- POJ 3415 Common Substrings 笔记
- WX-组件-基础内容
- OpenGL 入门6
- LCA之倍增及ST算法
- java swing Jtable 排序支持中文
- 安装mysql时的修改初始密码 mac
- 循环语句
- 背包
- 14. Longest Common Prefix**
- 反转字符串的四种方法
- 性能计数器参考