平行移動

translate.png

マウスの右クリックで平行移動を実装してみる。

void CPlyRender::TranslateFromScreeen(float _dx,float _dy){
    m_translate+=vec3<float>(_dx,_dy,0.0);
}
  void CPlyRender::display(){
       glTranslated(m_translate.x,m_translate.y,m_translate.z);/* 平行移動(奥行き方向)   */
        m_target_quaternion.toMat4(const_cast<float*>(m_rotation_matrix.m));
        glMultMatrixf(m_rotation_matrix.m);//クォータニオンによる回転
.....
 
       }
if(glfwGetMouseButton(GLFW_MOUSE_BUTTON_RIGHT)){//平行移動
                opengl.TranslateFromScreeen(
                    (float)(mx-translate_lastpush.x)/(float)winx,
                    (float)(my-translate_lastpush.y)*-1.0f/(float)winy);
                    translate_lastpush.set(mx,my);
            }else{
                    translate_lastpush.set(mx,my);
            }

サポートサイト Wikidot.com