From: <sv...@ww...> - 2004-07-02 18:12:22
|
Author: delta Date: 2004-07-02 11:12:15 -0700 (Fri, 02 Jul 2004) New Revision: 1134 Modified: trunk/CSP/CSPSim/Source/Views/CameraAgent.cpp trunk/CSP/CSPSim/Source/Views/CameraKinematics.cpp trunk/CSP/CSPSim/Source/Views/View.cpp Log: Renamed attributes. Fixed a bug in view 3: camera could'nt move below the plane. Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1134 Modified: trunk/CSP/CSPSim/Source/Views/CameraAgent.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Views/CameraAgent.cpp 2004-07-02 18:06:22 UTC (rev 1133) +++ trunk/CSP/CSPSim/Source/Views/CameraAgent.cpp 2004-07-02 18:12:15 UTC (rev 1134) @@ -48,7 +48,7 @@ VirtualScene* scene = CSPSim::theSim->getScene(); const simdata::Ref<TerrainObject> terrain = scene->getTerrain(); TerrainObject::IntersectionHint camera_hint = 0; - double const SAFETY = m_LookPoint.z()- terrain->getGroundElevation(m_LookPoint.x(),m_LookPoint.y(),camera_hint); + double const SAFETY = 2.0; float h = SAFETY + terrain->getGroundElevation(m_EyePoint.x(),m_EyePoint.y(),camera_hint); if (m_EyePoint.z() < h) { double alpha_2 = simdata::toRadians(0.5*scene->getViewAngle()); @@ -73,16 +73,16 @@ } double dh = abs(h - m_LookPoint.z() - min_elev); double angle_x = std::max(simdata::toRadians(1.0),asin(dh/m_CameraKinematics.getDistance())); - if (abs(m_CameraKinematics.getAngleX()) < simdata::PI_2) - m_CameraKinematics.setAngleX(angle_x); + if (abs(m_CameraKinematics.getPhi()) < simdata::PI_2) + m_CameraKinematics.setPhi(angle_x); else - m_CameraKinematics.setAngleX(simdata::PI-angle_x); + m_CameraKinematics.setPhi(simdata::PI-angle_x); m_CameraKinematics.panUpDownStop(); m_ViewList[m_ViewMode]->recalculate(m_EyePoint,m_LookPoint,m_UpVector,dt); } } -void CameraAgent::set(size_t vm,CameraCommand* ck) { +void CameraAgent::set(size_t vm,CameraCommand* cc) { if (m_ViewMode != vm) { ViewList::iterator view_it = m_ViewList.find(vm); if (view_it != m_ViewList.end()) { @@ -90,7 +90,7 @@ m_ViewMode = vm; } } - m_CameraKinematics.accept(ck); + m_CameraKinematics.accept(cc); } void CameraAgent::updateCamera(double dt) { Modified: trunk/CSP/CSPSim/Source/Views/CameraKinematics.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Views/CameraKinematics.cpp 2004-07-02 18:06:22 UTC (rev 1133) +++ trunk/CSP/CSPSim/Source/Views/CameraKinematics.cpp 2004-07-02 18:12:15 UTC (rev 1134) @@ -41,8 +41,8 @@ } void CameraKinematics::update(double dt) { - rotateAboutZ(dt); - rotateAboutX(dt); + rotateTheta(dt); + rotatePhi(dt); scale(dt); } @@ -60,29 +60,29 @@ m_BaseRate(simdata::toRadians(30.0)), m_DisplacementCoefficient(0.001), m_MinimumDistanceOffset(10.0), - m_AbsoluteMaximumDistance(2000.0) { + m_AbsoluteMaximumDistance(80000.0) { reset(); } -void CameraKinematics::clampX(double& value,float min_value,float max_value, bool smooth_on) { - if (smooth_on && m_PanRateX != 0.0) { - m_PanRateX = simdata::sign(m_PanRateX)*smooth(value,min_value,max_value)*m_BaseRate; +void CameraKinematics::clampPhi(double& phi,float min_phi,float max_phi,bool smooth_on) { + if (smooth_on && m_PanRatePhi != 0.0) { + m_PanRatePhi = simdata::sign(m_PanRatePhi)*smooth(phi,min_phi,max_phi)*m_BaseRate; } - value = simdata::clampTo<double>(value,min_value,max_value); + phi = simdata::clampTo<double>(phi,min_phi,max_phi); } -void CameraKinematics::clampZ(double& value,float min_value,float max_value, bool smooth_on) { - if (smooth_on && m_PanRateZ != 0.0) { - m_PanRateZ = simdata::sign(m_PanRateZ)*smooth(value,min_value,max_value)*m_BaseRate; +void CameraKinematics::clampTheta(double& theta,float min_theta,float max_theta, bool smooth_on) { + if (smooth_on && m_PanRateTheta != 0.0) { + m_PanRateTheta = simdata::sign(m_PanRateTheta)*smooth(theta,min_theta,max_theta)*m_BaseRate; } - value = simdata::clampTo<double>(value,min_value,max_value); + theta = simdata::clampTo<double>(theta,min_theta,max_theta); } void CameraKinematics::reset() { - m_AngleRotX = 0.0; - m_AngleRotZ = 0.0; - m_PanRateX = 0.0; - m_PanRateZ = 0.0; + m_Phi = 0.0; + m_Theta = 0.0; + m_PanRatePhi = 0.0; + m_PanRateTheta = 0.0; m_ZoomRate = 0.0; resetDistance(); } @@ -97,27 +97,27 @@ } void CameraKinematics::panLeft() { - m_PanRateZ = m_BaseRate; + m_PanRateTheta = m_BaseRate; } void CameraKinematics::panRight() { - m_PanRateZ = -m_BaseRate; + m_PanRateTheta = -m_BaseRate; } void CameraKinematics::panLeftRightStop() { - m_PanRateZ = 0.0; + m_PanRateTheta = 0.0; } void CameraKinematics::panUp() { - m_PanRateX = m_BaseRate; + m_PanRatePhi = m_BaseRate; } void CameraKinematics::panDown() { - m_PanRateX = -m_BaseRate; + m_PanRatePhi = -m_BaseRate; } void CameraKinematics::panUpDownStop() { - m_PanRateX = 0.0; + m_PanRatePhi = 0.0; } void CameraKinematics::zoomIn() { @@ -145,18 +145,18 @@ } void CameraKinematics::displacement(int x, int y, int dx, int dy) { - m_PanRateX = 0.0; - m_PanRateZ = 0.0; - m_AngleRotZ -= dx * m_DisplacementCoefficient; - m_AngleRotX -= dy * m_DisplacementCoefficient; + m_PanRatePhi = 0.0; + m_PanRateTheta = 0.0; + m_Theta -= dx * m_DisplacementCoefficient; + m_Phi -= dy * m_DisplacementCoefficient; } -void CameraKinematics::accept(CameraCommand* cm) { - if (cm) { - if (std::find(m_CameraCommandList.begin(),m_CameraCommandList.end(),cm) == m_CameraCommandList.end()) { - m_CameraCommandList.push_back(cm); - cm->setCameraKinematics(this); +void CameraKinematics::accept(CameraCommand* cc) { + if (cc) { + if (std::find(m_CameraCommandList.begin(),m_CameraCommandList.end(),cc) == m_CameraCommandList.end()) { + m_CameraCommandList.push_back(cc); + cc->setCameraKinematics(this); } - cm->execute(); + cc->execute(); } } Modified: trunk/CSP/CSPSim/Source/Views/View.cpp =================================================================== --- trunk/CSP/CSPSim/Source/Views/View.cpp 2004-07-02 18:06:22 UTC (rev 1133) +++ trunk/CSP/CSPSim/Source/Views/View.cpp 2004-07-02 18:12:15 UTC (rev 1134) @@ -40,7 +40,7 @@ void View::updateBody(simdata::Vector3& ep,simdata::Vector3& lp,simdata::Vector3& up) { simdata::Vector3 object_up = m_ActiveObject->getUpDirection(); simdata::Vector3 object_dir = m_ActiveObject->getDirection(); - simdata::Quat q = simdata::Quat(-m_CameraKinematics->getAngleZ(),object_up,-m_CameraKinematics->getAngleX(), + simdata::Quat q = simdata::Quat(-m_CameraKinematics->getTheta(),object_up,-m_CameraKinematics->getPhi(), object_dir^object_up,0.0,object_dir); simdata::Vector3 object_pos = m_ActiveObject->getGlobalPosition(); ep = object_pos + m_CameraKinematics->getDistance() * q.rotate(-object_dir); @@ -49,7 +49,7 @@ } void View::updateWorld(simdata::Vector3& ep,simdata::Vector3& lp,simdata::Vector3& up) { - simdata::Quat q = simdata::Quat(-m_CameraKinematics->getAngleZ(),simdata::Vector3::ZAXIS,-m_CameraKinematics->getAngleX(), + simdata::Quat q = simdata::Quat(-m_CameraKinematics->getTheta(),simdata::Vector3::ZAXIS,-m_CameraKinematics->getPhi(), simdata::Vector3::XAXIS,0.0,simdata::Vector3::YAXIS); simdata::Vector3 object_pos = m_ActiveObject->getGlobalPosition(); ep = object_pos + m_CameraKinematics->getDistance() * q.rotate(-simdata::Vector3::YAXIS); @@ -77,15 +77,15 @@ void InternalView::constrain() { float limit = simdata::PI_2; - m_CameraKinematics->clampX(m_CameraKinematics->getAngleX(),-limit,limit); - m_CameraKinematics->clampZ(m_CameraKinematics->getAngleZ(),-limit,limit); + m_CameraKinematics->clampPhi(m_CameraKinematics->getPhi(),-limit,limit); + m_CameraKinematics->clampTheta(m_CameraKinematics->getTheta(),-limit,limit); } void InternalView::update(simdata::Vector3& ep,simdata::Vector3& lp,simdata::Vector3& up,double dt) { constrain(); simdata::Vector3 object_up = m_ActiveObject->getUpDirection(); simdata::Vector3 object_dir = m_ActiveObject->getDirection(); - simdata::Quat q = simdata::Quat(m_CameraKinematics->getAngleZ(),object_up,m_CameraKinematics->getAngleX(), + simdata::Quat q = simdata::Quat(m_CameraKinematics->getTheta(),object_up,m_CameraKinematics->getPhi(), object_dir^object_up,0.0,object_dir); simdata::Vector3 object_pos = m_ActiveObject->getGlobalPosition(); ep = object_pos + m_ActiveObject->getViewPoint(); @@ -164,8 +164,8 @@ } void SatelliteView::activate() { - m_CameraKinematics->setAngleZ(0.0); - m_CameraKinematics->setAngleX(simdata::PI_2); + m_CameraKinematics->setTheta(0.0); + m_CameraKinematics->setPhi(simdata::PI_2); m_CameraKinematics->setDistance(500.0); } @@ -188,8 +188,8 @@ m_Padlock = battlefield->getNextUnit(m_Padlock, -1, -1, -1); } if (m_Padlock != m_ActiveObject) { - m_NeckTheta = m_CameraKinematics->getAngleX() - 0.5*simdata::PI; - m_NeckPhi = m_CameraKinematics->getAngleZ(); + m_NeckTheta = m_CameraKinematics->getPhi() - 0.5*simdata::PI; + m_NeckPhi = m_CameraKinematics->getTheta(); } } |