Advertisement
ThatSnail

Untitled

Jun 15th, 2012
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1.     double mm;
  2.     double dX,dY,dZ;
  3.     dX=camera.xto-camera.x;
  4.     dY=camera.yto-camera.y;
  5.     dZ=camera.zto-camera.z;
  6.     mm=sqrt(dX*dX+dY*dY+dZ*dZ);
  7.     dX/=mm;
  8.     dY/=mm;
  9.     dZ/=mm;
  10.     double uX,uY,uZ;
  11.     uX=camera.xup;
  12.     uY=camera.yup;
  13.     uZ=camera.zup;
  14.     mm=uX*dX+uY*dY+uZ*dZ;
  15.     uX-=mm*dX;
  16.     uY-=mm*dY;
  17.     uZ-=mm*dZ;
  18.     mm=sqrt(uX*uX+uY*uY+uZ*uZ);
  19.     uX/=mm;
  20.     uY/=mm;
  21.     uZ/=mm;
  22.     double tFOV;
  23.     tFOV=tan(camera.fov*PI/360);
  24.     uX*=tFOV;
  25.     uY*=tFOV;
  26.     uZ*=tFOV;
  27.     double vX,vY,vZ;
  28.     vX=uY*dZ-dY*uZ;
  29.     vY=uZ*dX-dZ*uX;
  30.     vZ=uX*dY-dX*uY;
  31.     vX*=SCREEN_WIDTH/SCREEN_HEIGHT;
  32.     vY*=SCREEN_WIDTH/SCREEN_HEIGHT;
  33.     vZ*=SCREEN_WIDTH/SCREEN_HEIGHT;
  34.  
  35.     double pX,pY,pZ;
  36.     pX=x1-camera.x;
  37.     pY=y1-camera.y;
  38.     pZ=z1-camera.z;
  39.     mm=pX*dX+pY*dY+pZ*dZ;
  40.  
  41.     double fx1,fy1;
  42.  
  43.     if(mm>0)
  44.     {
  45.         pX/=mm;
  46.         pY/=mm;
  47.         pZ/=mm;
  48.  
  49.         mm=(pX*vX + pY*vY + pZ*vZ) / pow((SCREEN_WIDTH/SCREEN_HEIGHT)*tan(camera.fov*PI/360),2);
  50.         fx1=(mm+1)/2*SCREEN_WIDTH;
  51.         mm=(pX*uX + pY*uY + pZ*uZ) / pow(tan(camera.fov*PI/360),2);
  52.         fy1=(1-mm)/2*SCREEN_HEIGHT;
  53.     }
  54.     else
  55.     {
  56.         drawit++;
  57.         //TODO: behind the camera code
  58.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement