X = X1: Y = Y1: Z = Z1
'WE'LL INSERT OUR ROTATION CODE HERE:
'ROTATION ON THE X-AXIS:
NEWY = Y * COSTABLE(XANGLE) - Z * SINTABLE(XANGLE)
NEWZ = Z * COSTABLE(XANGLE) + Y * SINTABLE(XANGLE)
Y = NEWY
Z = NEWZ
'ROTATION ON THE Y-AXIS:
NEWZ = Z * COSTABLE(YANGLE) - X * SINTABLE(YANGLE)
NEWX = X * COSTABLE(YANGLE) + Z * SINTABLE(YANGLE)
X = NEWX
'ROTATION ON THE Z-AXIS:
NEWX = X * COSTABLE(ZANGLE) - Y * SINTABLE(ZANGLE)
NEWY = Y * COSTABLE(ZANGLE) + X * SINTABLE(ZANGLE)
ROTX = NEWX
ROTY = NEWY
ROTZ = NEWZ
DBUFFER(FOV * ROTX / (ROTZ + ZCENTER) + XCENTER, FOV * ROTY / (ROTZ + ZCENTER) + YCENTER).Z = Z
DBUFFER(FOV * ROTX / (ROTZ + ZCENTER) + XCENTER, FOV * ROTY / (ROTZ + ZCENTER) + YCENTER).CLR = CLR
'AND WE'LL CHANGE THE PSET3D ROUTINE TO USE THE ROTATED COORDS:
PSET (FOV
* ROTX
/ (ROTZ
+ ZCENTER
) + XCENTER
, FOV
* ROTY
/ (ROTZ
+ ZCENTER
) + YCENTER
), CLR
'DIVIDE BOTH AXISES BY Z AND MOVE TO CENTER.
'PIXEL (FOV * ROTX / (ROTZ + ZCENTER) + XCENTER, FOV * ROTY / (ROTZ + ZCENTER) + YCENTER), CLR 'DIVIDE BOTH AXISES BY Z AND MOVE
XCENTER = 320
YCENTER = 240
ZCENTER = 256
FOV = 256