00001 /* 00002 * lib-controler : Un contrôleur générique de scène 3D. 00003 * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC 00004 * http://www.sic.sp2mi.univ-poitiers.fr/ 00005 * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS, 00006 * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/ 00007 * 00008 * This file is part of lib-controler 00009 * 00010 * This program is free software: you can redistribute it and/or modify 00011 * it under the terms of the GNU Lesser General Public License as published by 00012 * the Free Software Foundation, either version 3 of the License, or 00013 * (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 * GNU Lesser General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU Lesser General Public License 00021 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00022 */ 00023 00024 //****************************************************************************** 00025 #include "controler.hh" 00026 #include "view-precompile.hh" 00027 //****************************************************************************** 00028 void CControler::modeSceneTranslationOperationMove() 00029 { 00030 CViewPrecompile * view = FViews[FCurrentViewId]; 00031 CParameterAimedPosition & aimed = view->getAimedPosition(); 00032 00033 GLfloat vect[3]; 00034 00035 view->unproject(FFirstX, FFirstY, FFirst3D); 00036 view->unproject(FLastX , FLastY , vect); 00037 00038 for (int i=0; i<3; ++i) 00039 { 00040 vect[i] -= FFirst3D[i]; 00041 aimed.setLookAt(i, FMemoAimedPosition.getLookAt(i) - vect[i]); 00042 } 00043 } 00044 //****************************************************************************** 00045 void CControler::modeSceneRotationOperationMove() 00046 { 00047 CParameterEyePosition & eye = FViews[FCurrentViewId]->getEyePosition(); 00048 00049 eye.setRotationAlpha(FMemoEyePosition.getRotationAlpha() + 0.4 * FDeltaX); 00050 eye.setRotationBeta (FMemoEyePosition.getRotationBeta () - 0.4 * FDeltaY); 00051 } 00052 //****************************************************************************** 00053 void CControler::modeSceneScaleOperationMove() 00054 { 00055 CParameterEyePosition & eye = FViews[FCurrentViewId]->getEyePosition(); 00056 00057 eye.setDistance(FMemoEyePosition.getDistance() * exp(0.01 * -FDeltaY)); 00058 } 00059 //****************************************************************************** 00060 void CControler::modeSceneTransformationOperationStop() 00061 { 00062 } 00063 //******************************************************************************
1.5.8