EgtGraphics 1.6r10 :
- migliorata rotazione vista quando Top.
This commit is contained in:
Binary file not shown.
+16
-6
@@ -44,7 +44,14 @@ Scene::SetCamera( double dAngVertDeg, double dAngOrizzDeg, double dDist)
|
||||
// assegno la direzione e la distanza
|
||||
m_vtDirCamera = FromSpherical( 1, dAngVertDeg, dAngOrizzDeg) ;
|
||||
m_dDistCamera = dDist ;
|
||||
return VerifyCamera() ;
|
||||
if ( ! VerifyCamera())
|
||||
return false ;
|
||||
// se vista da sopra, impongo vtUp da angolo orizzontale
|
||||
if ( abs( dAngVertDeg) < EPS_ANG_SMALL) {
|
||||
m_vtUp = - FromPolar( 1, dAngOrizzDeg) ;
|
||||
m_bUpOk = true ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -121,8 +128,12 @@ Scene::GetCamera( double* pdAngVertDeg, double* pdAngOrizzDeg, double* pdDist)
|
||||
double dAngVertDeg ;
|
||||
double dAngOrizzDeg ;
|
||||
m_vtDirCamera.ToSpherical( nullptr, &dAngVertDeg, &dAngOrizzDeg) ;
|
||||
if ( fabs( dAngVertDeg) < EPS_ANG_SMALL)
|
||||
dAngOrizzDeg = -90 ;
|
||||
if ( fabs( dAngVertDeg) < EPS_ANG_SMALL) {
|
||||
if ( m_bUpOk)
|
||||
(-m_vtUp).ToSpherical( nullptr, nullptr, &dAngOrizzDeg) ;
|
||||
else
|
||||
dAngOrizzDeg = -90 ;
|
||||
}
|
||||
if ( pdAngVertDeg != nullptr)
|
||||
*pdAngVertDeg = dAngVertDeg ;
|
||||
if ( pdAngOrizzDeg != nullptr)
|
||||
@@ -235,9 +246,6 @@ Scene::PanCamera( const Point3d& ptWinOld, const Point3d& ptWinNew)
|
||||
bool
|
||||
Scene::RotateCamera( const Point3d& ptWinOld, const Point3d& ptWinNew)
|
||||
{
|
||||
const double MIN_ANG_VERT = 0.1 ;
|
||||
const double MAX_ANG_VERT = 179.9 ;
|
||||
|
||||
// angoli correnti della camera
|
||||
double dAngVertDeg ;
|
||||
double dAngOrizzDeg ;
|
||||
@@ -248,6 +256,8 @@ Scene::RotateCamera( const Point3d& ptWinOld, const Point3d& ptWinNew)
|
||||
double dDeltaAngOrizzDeg = ( ptWinNew.x - ptWinOld.x) / m_nViewportW * 360 ;
|
||||
|
||||
// calcolo nuovi angoli e limitazione dell'angolo verticale
|
||||
const double MIN_ANG_VERT = 0.0 ;
|
||||
const double MAX_ANG_VERT = 180.0 ;
|
||||
dAngVertDeg -= dDeltaAngVertDeg ;
|
||||
if ( dAngVertDeg < MIN_ANG_VERT)
|
||||
dAngVertDeg = MIN_ANG_VERT ;
|
||||
|
||||
Reference in New Issue
Block a user