Ignore:
Timestamp:
May 20, 2008, 6:34:33 PM (16 years ago)
Author:
garnier
Message:

r842@wl-72126: garnier | 2008-05-20 18:34:31 +0200
ca ne marche pas, les calculs sont approximatifs et a moitie faux

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r801 r802  
    17151715  G4Vector3D new_up ;
    17161716  G4Vector3D delta ;
    1717 
    1718   if ((up[1]==1) &&(up[0]==0) && (up[2]==0)) {
    1719     up[1] = cameraPosition[2];
    1720   }
    1721   new_dx[2] = (cameraPosition[0]*up[1]-cameraPosition[1]*up[0])/100; // EN TEST 
    1722   new_dx[0] = (cameraPosition[1]*up[2]-cameraPosition[2]*up[1])/100;  // EN TEST
    1723   new_dx[1] = (cameraPosition[2]*up[0]-cameraPosition[0]*up[2])/100;  // EN TEST
    1724 
    1725   delta = new_dx*dx*deltaRot + up*dy*deltaRot;
     1717  G4double new_cameraDistance;
     1718  G4Vector3D deltaCp;
     1719  G4Vector3D deltaUp;
     1720
     1721  new_dx[2] = (cameraPosition[0]*up[1]-cameraPosition[1]*up[0]);
     1722  new_dx[0] = (cameraPosition[1]*up[2]-cameraPosition[2]*up[1]);
     1723  new_dx[1] = (cameraPosition[2]*up[0]-cameraPosition[0]*up[2]);
     1724
     1725  delta = -new_dx*dx*deltaRot/45 - up*cameraDistance*dy*deltaRot/45; // 1 unit equal 45 degrees
    17261726  new_cameraPosition = cameraPosition + delta;
    1727  
    1728   new_up[2] = new_cameraPosition[0]*(-delta[1])-new_cameraPosition[1]*(-delta[0]);
    1729   new_up[0] = new_cameraPosition[1]*(-delta[2])-new_cameraPosition[2]*(-delta[1]);
    1730   new_up[1] = new_cameraPosition[2]*(-delta[0])-new_cameraPosition[0]*(-delta[2]);
     1727
     1728  new_cameraDistance = std::sqrt(new_cameraPosition[0]*new_cameraPosition[0]+new_cameraPosition[1]*new_cameraPosition[1]+new_cameraPosition[2]*new_cameraPosition[2]); 
     1729  deltaCp = cameraDistance*(cameraPosition/new_cameraDistance)-cameraPosition;
     1730  new_cameraPosition = new_cameraPosition + deltaCp;
     1731  delta += deltaCp;
     1732
     1733  /* *********************** */
     1734  G4Vector3D new_UpX;
     1735  new_UpX[2] = (-up[0]*cameraPosition[1]+up[1]*cameraPosition[0])/(cameraDistance*cameraDistance);
     1736  new_UpX[0] = (-up[1]*cameraPosition[2]+up[2]*cameraPosition[1])/(cameraDistance*cameraDistance);
     1737  new_UpX[1] = (-up[2]*cameraPosition[0]+up[0]*cameraPosition[2])/(cameraDistance*cameraDistance);
     1738  G4Vector3D deltaX;
     1739  G4Vector3D deltaUpX;
     1740  deltaX = -new_UpX*dx*deltaRot/45 - (-cameraPosition/cameraDistance)*cameraDistance*dy*deltaRot/45;
     1741  new_up = up+deltaX;
     1742
     1743  float new_upDist;
     1744  new_upDist = std::sqrt(new_up[0]*new_up[0]+new_up[1]*new_up[1]+new_up[2]*new_up[2]); 
     1745  deltaUpX = (up/new_upDist)-up;
     1746  new_up += deltaUpX;
     1747
     1748
     1749  //  new_up = up[0]+
     1750
     1751  //  new_up[1] = up[1]*((new_cameraPosition[1])/cameraDistance)/cameraPosition[0];
     1752  //  new_up[1] = up[1]*((new_cameraPosition[1])/cameraDistance)/cameraPosition[0];
     1753  //  new_up[2] = up[2]-delta[1]/cameraDistance ;
     1754  //  new_up[2] = new_cameraPosition[0]*(-delta[1])-new_cameraPosition[1]*(-delta[0]);
     1755  //  new_up[0] = new_cameraPosition[1]*(-delta[2])-new_cameraPosition[2]*(-delta[1]);
     1756  //  new_up[1] = new_cameraPosition[2]*(-delta[0])-new_cameraPosition[0]*(-delta[2]);
    17311757
    17321758
    17331759#ifdef GEANT4_QT_DEBUG
    1734   printf("G4OpenGLQtViewer::Rotate2 Tp %f,%f %f up:%f %f %f dx:%f %f %f\n",
    1735          targetPoint[0],targetPoint[1],targetPoint[2],up[0],up[1],up[2],new_dx[0],new_dx[1],new_dx[2]);
    1736   printf("G4OpenGLQtViewer::Rotate2 Cp %f,%f %f new_up:%f %f %f delta:%f %f %f\n",
    1737          new_cameraPosition[0],new_cameraPosition[1],new_cameraPosition[2],new_up[0],new_up[1],new_up[2],delta[0],delta[1],delta[2]);
     1760  printf(" Cp %f %f %f\tup:%f %f %f \tdx: %f %f %f\tTp %f %f %f\t\n",
     1761         cameraPosition[0],cameraPosition[1],cameraPosition[2],up[0],up[1],up[2],new_dx[0],new_dx[1],new_dx[2],targetPoint[0],targetPoint[1],targetPoint[2]);
     1762  printf(" Np %f %f %f\tnew_up: %f %f %f\tdelta: %f %f %f\tCd: %f\n",
     1763         new_cameraPosition[0],new_cameraPosition[1],new_cameraPosition[2],new_up[0],new_up[1],new_up[2],delta[0],delta[1],delta[2],cameraDistance);
     1764  printf(" DCp: %f %f %f\tNewUpX:%f %f %f\t deltaX:%f %f %f newUpDist:%f\n",deltaCp[0],deltaCp[1],deltaCp[2],new_UpX[0],new_UpX[1],new_UpX[2],deltaX[0],deltaX[1],deltaX[2],new_upDist);
    17381765#endif
    17391766
Note: See TracChangeset for help on using the changeset viewer.