zoukankan      html  css  js  c++  java
  • 物体旋转的问题gl.glTranslatef,gl.glRotatef如何饶物体的中心轴旋转

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

    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),因此就不会绕物体中心旋转了。
  • 相关阅读:
    树形结构的数据库表Schema设计-基于左右值编码
    windows下的coreseek安装及PHP调用入门
    C#string详解
    C#(Wpf)实现小键盘
    c#实现任务栏添加控制按钮
    c#解析Lrc歌词文件
    wpf仿QQ之窗体翻转
    C#(wpf)迷你词典
    wpf常见枚举收集
    最新百度音乐api
  • 原文地址:https://www.cnblogs.com/bokeofzp/p/5967593.html
Copyright © 2011-2022 走看看