SCREEN 7, , 0, 1 MaxX = 320: MaxY = 200 C = 10 XC = 160: YC = 100 EyeX = 0: EyeY = 40: EyeZ = 80 W0X = 30: W0Y = 0: W0Z = 0 W1X = -30: W1Y = 0: W1Z = 0 W2X = 30: W2Y = 0: W2Z = -80 W3X = -30: W3Y = 0: W3Z = -80 GOSUB DrawObject DO K$ = INKEY$ IF K$ = "6" THEN Angle = 5 * .017453: GOSUB Rotate IF K$ = "4" THEN Angle = -5 * .017453: GOSUB Rotate IF K$ = "8" THEN W0Z = W0Z + 2: W1Z = W1Z + 2: W2Z = W2Z + 2: W3Z = W3Z + 2: GOSUB DrawObject IF K$ = "2" THEN W0Z = W0Z - 2: W1Z = W1Z - 2: W2Z = W2Z - 2: W3Z = W3Z - 2: GOSUB DrawObject IF K$ = CHR$(27) THEN END LOOP Rotate: X = W0X: Y = W0Y: Z = W0Z: GOSUB Formula W0X = X: W0Y = Y: W0Z = Z X = W1X: Y = W1Y: Z = W1Z: GOSUB Formula W1X = X: W1Y = Y: W1Z = Z X = W2X: Y = W2Y: Z = W2Z: GOSUB Formula W2X = X: W2Y = Y: W2Z = Z X = W3X: Y = W3Y: Z = W3Z: GOSUB Formula W3X = X: W3Y = Y: W3Z = Z GOSUB DrawObject RETURN Formula: OldX = X: OldY = Y: OldZ = Z IF K$ = "2" OR K$ = "8" THEN Y = (SIN(Angle) * OldZ) + (COS(Angle) * OldY) Z = (COS(Angle) * OldZ) - (SIN(Angle) * OldY) END IF IF K$ = "4" OR K$ = "6" THEN X = (COS(Angle) * OldX) - (SIN(Angle) * OldZ) Z = (SIN(Angle) * OldX) + (COS(Angle) * OldZ) END IF IF K$ = "7" OR K$ = "9" THEN X = (COS(Angle) * OldX) + (SIN(Angle) * OldY) Y = (COS(Angle) * OldY) - (SIN(Angle) * OldX) END IF RETURN DrawObject: E0X = W0X - EyeX: E0Y = W0Y - EyeY: E0Z = W0Z - EyeZ E1X = W1X - EyeX: E1Y = W1Y - EyeY: E1Z = W1Z - EyeZ E2X = W2X - EyeX: E2Y = W2Y - EyeY: E2Z = W2Z - EyeZ E3X = W3X - EyeX: E3Y = W3Y - EyeY: E3Z = W3Z - EyeZ S0X = (E0X / E0Z) * MaxX + MaxX / 2: S0Y = (E0Y / E0Z) * MaxY + MaxY / 2 S1X = (E1X / E1Z) * MaxX + MaxX / 2: S1Y = (E1Y / E1Z) * MaxY + MaxY / 2 S2X = (E2X / E2Z) * MaxX + MaxX / 2: S2Y = (E2Y / E2Z) * MaxY + MaxY / 2 S3X = (E3X / E3Z) * MaxX + MaxX / 2: S3Y = (E3Y / E3Z) * MaxY + MaxY / 2 CLS LINE (S0X, S0Y)-(S1X, S1Y), C LINE (S0X, S0Y)-(S2X, S2Y), C LINE (S0X, S0Y)-(S3X, S3Y), C LINE (S1X, S1Y)-(S2X, S2Y), C LINE (S1X, S1Y)-(S3X, S3Y), C LINE (S2X, S2Y)-(S3X, S3Y), C PCOPY 0, 1 RETURN