博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
物体旋转的问题gl.glTranslatef,gl.glRotatef如何饶物体的中心轴旋转
阅读量:4615 次
发布时间:2019-06-09

本文共 811 字,大约阅读时间需要 2 分钟。

一、如何让物体绕自身中心旋转和绕过原点的向量旋转。

opengl的gl.glTranslatef确定绘图原点,旋转函数是以经过绘图原点的那条向量轴旋转的,当我们的正方形的坐标如下:

private FloatBuffer quaterBuffer1 = BufferUtil.floatToBuffer(new float[]{
 
-one,-one,0,
one,-one,0,
one,one,0,
-one,one,0,
});
在绘图的时候加上:
             gl.glLoadIdentity();
//右移 1.5 单位,并移入屏幕 4.0
gl.glTranslatef(0f, 0f, -4f);
//旋转矩阵
gl.glRotatef(rotateTri, 0.0f, 3.0f,0f);
会发现绘制的正方形绕它自己中心旋转,因为此时将远点移到了物体的中心。如果正方形如下:
private FloatBuffer quaterBuffer2 = BufferUtil.floatToBuffer(new float[]{
 
-one,-one, one,
one,-one, one,
one,one, one,
-one,one, one,
 
});
旋转时候如上面的一样:
             gl.glLoadIdentity();
//右移 1.5 单位,并移入屏幕 4.0
gl.glTranslatef(0f, 0f, -4f);
//旋转矩阵
gl.glRotatef(rotateTri, 0.0f, 3.0f,0f);
就会发信正方形会绕着经过(0,0,4)的向量(0,3,0)旋转,即不是绕物体中心旋转的,因为原点移到了(0,0,4)而此时物体的z坐标都为1因此物体中心在(0,0,3),因此就不会绕物体中心旋转了。

转载于:https://www.cnblogs.com/bokeofzp/p/5967593.html

你可能感兴趣的文章
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>
vim - manual -个人笔记
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异
查看>>
PHP中获取当前页面的完整URL
查看>>
所谓输入掩码技术,即只有数字键起作用
查看>>
Display对象,Displayable对象
查看>>
安装oracle11G,10G时都会出现:注册ocx时出现OLE初始化错误或ocx装载错误对话框
查看>>
数据结构(并查集):COGS 260. [NOI2002] 银河英雄传说
查看>>
生产环境下正则的应用实例(一)
查看>>