Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double mm;
- double dX,dY,dZ;
- dX=camera.xto-camera.x;
- dY=camera.yto-camera.y;
- dZ=camera.zto-camera.z;
- mm=sqrt(dX*dX+dY*dY+dZ*dZ);
- dX/=mm;
- dY/=mm;
- dZ/=mm;
- double uX,uY,uZ;
- uX=camera.xup;
- uY=camera.yup;
- uZ=camera.zup;
- mm=uX*dX+uY*dY+uZ*dZ;
- uX-=mm*dX;
- uY-=mm*dY;
- uZ-=mm*dZ;
- mm=sqrt(uX*uX+uY*uY+uZ*uZ);
- uX/=mm;
- uY/=mm;
- uZ/=mm;
- double tFOV;
- tFOV=tan(camera.fov*PI/360);
- uX*=tFOV;
- uY*=tFOV;
- uZ*=tFOV;
- double vX,vY,vZ;
- vX=uY*dZ-dY*uZ;
- vY=uZ*dX-dZ*uX;
- vZ=uX*dY-dX*uY;
- vX*=SCREEN_WIDTH/SCREEN_HEIGHT;
- vY*=SCREEN_WIDTH/SCREEN_HEIGHT;
- vZ*=SCREEN_WIDTH/SCREEN_HEIGHT;
- double pX,pY,pZ;
- pX=x1-camera.x;
- pY=y1-camera.y;
- pZ=z1-camera.z;
- mm=pX*dX+pY*dY+pZ*dZ;
- double fx1,fy1;
- if(mm>0)
- {
- pX/=mm;
- pY/=mm;
- pZ/=mm;
- mm=(pX*vX + pY*vY + pZ*vZ) / pow((SCREEN_WIDTH/SCREEN_HEIGHT)*tan(camera.fov*PI/360),2);
- fx1=(mm+1)/2*SCREEN_WIDTH;
- mm=(pX*uX + pY*uY + pZ*uZ) / pow(tan(camera.fov*PI/360),2);
- fy1=(1-mm)/2*SCREEN_HEIGHT;
- }
- else
- {
- drawit++;
- //TODO: behind the camera code
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement