To --> program code (complete)



Data snippets from the user editing area for 
planes auto shading (light source) and for 
rotating and translating a section of data:

(program code -- not including the subroutine 
blocks of code -- is below the data snippets.)


---------------------------------------------------------------
Rotation for light source:   0 = 0   1 = 90   2 = 180   3 = 270

Plane   t1,b1,t2,b2            direction,color

----------------------------------------------
AUTOPLANE:
1   3,8,3,18      3,5
2   18,5,8,9      3,5
3   44,43,2,13    3,5
4   1,2,12,13     2,5
5   51,52,59,60   2,4
6   49,50,51,52   3,2
7   12,13,11,8    6,10
8   11,8,26,23    2,13
9   26,23,27,27   2,13
10  8,9,23,24     3,13
11  50,66,52,64   2,2
12  52,60,64,58   2,2
13  58,62,60,56   2,2
14  72,54,62,56   2,2
15  27,26,58,62   5,5
16  63,72,26,62   3,3
17  33,34,37,38   2,5
18  36,35,40,39   4,5
19  41,42,45,46   2,5
20  44,43,48,47   4,5
21  33,36,37,40   6,6
22  34,35,38,39   5,5
23  41,44,45,48   6,6
24  42,43,46,47   5,5
25  37,40,38,39   3,4
26  45,48,46,47   3,4
27  3,8,33,34     3,5
28  36,35,41,42   3,5
29  44,43,2,13    3,5
30  34,43,8,13    3,5
31  49,50,69,66   5,4
32  53,54,71,72   5,4
33  8,13,34,43    2,4
999     999,999,999,999                    0,0
----------------------------------------------


Rotation for light source:   0 = 0   1 = 90   2 = 180   3 = 270

point one    min x,y,z       max x,y,z       rotation,color
---------    ---------       ---------       --------------

Points 201 - 398
Use line labels 201, 211, 221 .... 391

AUTOCUBE20:
201  0,0,0     21.85   .125  .458    0,2
211  0,0,0     21.85   .125  .458    0,2
221  0,0,0     23.875  .125  .458    0,3
231  0,0,0     23.875  .125  .458    0,3
241  0,0,0     17.675  .125  .458    0,2
251  0,0,0     17.675  .125  .458    0,2
999  999,999,999         999,999,999        0,0


----------------------------------------
first, last, zangle, tranx, trany, tranz

TRAN
ZROTATETRANSLATE:
201  208      90      24     41.39     8.75
211  218      90      24     41.39     9.916
221  228      0       .125   63.02     8.75
231  238      0       .125   63.02     9.916
241  248      90      .125   45.47     8.75
251  258      90      .125   45.47     9.916
999,999      999             999,999,999
----------------------------------------


program code snippets -- not including the subroutine 
blocks of code -- for reading the above data snippets:

PMOD:

NUM = 1800

  LOCATE 54,1
  INPUT "Plane number ";PL
  LOCATE 54, 1
  PRINT "                                         "

 IF DIR(PL) = 5 THEN TDIR(PL) = 5
 IF DIR(PL) = 6 THEN TDIR(PL) = 6
 
 IF ROTAT(PL) = 0 AND DIR(PL) = 1 THEN TDIR(PL) = 1
 IF ROTAT(PL) = 0 AND DIR(PL) = 2 THEN TDIR(PL) = 2
 IF ROTAT(PL) = 0 AND DIR(PL) = 3 THEN TDIR(PL) = 3
 IF ROTAT(PL) = 0 AND DIR(PL) = 4 THEN TDIR(PL) = 4

 IF ROTAT(PL) = 1 AND DIR(PL) = 1 THEN TDIR(PL) = 4
 IF ROTAT(PL) = 1 AND DIR(PL) = 2 THEN TDIR(PL) = 1
 IF ROTAT(PL) = 1 AND DIR(PL) = 3 THEN TDIR(PL) = 2
 IF ROTAT(PL) = 1 AND DIR(PL) = 4 THEN TDIR(PL) = 3

 IF ROTAT(PL) = 2 AND DIR(PL) = 1 THEN TDIR(PL) = 3
 IF ROTAT(PL) = 2 AND DIR(PL) = 2 THEN TDIR(PL) = 4
 IF ROTAT(PL) = 2 AND DIR(PL) = 3 THEN TDIR(PL) = 1
 IF ROTAT(PL) = 2 AND DIR(PL) = 4 THEN TDIR(PL) = 2

 IF ROTAT(PL) = 3 AND DIR(PL) = 1 THEN TDIR(PL) = 2
 IF ROTAT(PL) = 3 AND DIR(PL) = 2 THEN TDIR(PL) = 3
 IF ROTAT(PL) = 3 AND DIR(PL) = 3 THEN TDIR(PL) = 4
 IF ROTAT(PL) = 3 AND DIR(PL) = 4 THEN TDIR(PL) = 1

 IF DIR(PL) = 6 OR DIR(PL) = 5 THEN
   COLR(PL) = COLR(PL) + 1
    GOTO CONTCOL
 END IF

 IF PL < 201 THEN
   COLR(PL) = COLR(PL) - 1
 END IF

CONTCOL :

 IF TDIR(PL) = LIGHT THEN COLR(PL) = COLR(PL) - 1
 IF TDIR(PL) = DARKK THEN COLR(PL) = COLR(PL) + 1

 COLOR COLR(PL)

 FOR INS = 0 TO NUM
  GYT = GY(T1(PL)) + ((INS / (NUM)) * (GY(T2(PL)) - GY(T1(PL))))
  GXT = GX(T1(PL)) + ((INS / (NUM)) * (GX(T2(PL)) - GX(T1(PL))))
  GYB = GY(B1(PL)) + ((INS / (NUM)) * (GY(B2(PL)) - GY(B1(PL))))
  GXB = GX(B1(PL)) + ((INS / (NUM)) * (GX(B2(PL)) - GX(B1(PL))))
  LINE (GYT, GXT)-(GYB, GXB)
 NEXT INS

 FOR INS = 0 TO NUM
  GYT = GY(T1(PL)) + ((INS / (NUM)) * (GY(B1(PL)) - GY(T1(PL))))
  GXT = GX(T1(PL)) + ((INS / (NUM)) * (GX(B1(PL)) - GX(T1(PL))))
  GYB = GY(T2(PL)) + ((INS / (NUM)) * (GY(B2(PL)) - GY(T2(PL))))
  GXB = GX(T2(PL)) + ((INS / (NUM)) * (GX(B2(PL)) - GX(T2(PL))))
  LINE (GYT, GXT)-(GYB, GXB)
 NEXT INS

 IF AUTOFRM1(PL) = 0 AND AUTOFRM2(PL) = 0 THEN GOTO PLPoNPL4

 COL = COLR(PL) + 1

 IF AUTOFRM1(PL) = 0 AND AUTOFRM2(PL) > 0 THEN GOTO PLPoFLIP2
 IF AUTOFRM1(PL) > 0 AND AUTOFRM2(PL) = 0 THEN GOTO PLPoFLIP1
 IF AUTOFRM1(PL) > 0 AND AUTOFRM2(PL) > 0 THEN REPEAT = 1
 GOTO PLPoFLIP1

PLPoFLIP1:
T1 = T1(PL): T2 = T2(PL): B1 = B1(PL): B2 = B2(PL)
NR = AUTOFRM1(PL): GOTO PLPoFRAMEIT

PLPoFLIP2: 
T1 = T1(PL): T2 = B1(PL): B1 = T2(PL): B2 = B2(PL)
NR = AUTOFRM2(PL): GOTO PLPoFRAMEIT

PLPoNPL4:

GOTO ENHANCE

AXoB11:
   DO WHILE TIPE$ <> "AUTOCUBE20:"
     INPUT #2, TIPE$
   LOOP

   P = P - 1: RL = RL - 1: RPL = RPL - 5
   NL6 = RL - (NL1 + NL2 + NL3 + NL4 + NL5)
   NP1 = P

   P = 201: RL = NL1 + NL2 + NL3 + NL4 + NL5 + NL6 + 1
   RPL = 201
 
   INPUT #2, X1, Y1, Z1, X6, Y6, Z6, XINC, ENDCUBE, ROT, COLAC
   X1 = X1 - XINC: X6 = X6 - XINC: STOPREAD = ENDCUBE + 1
 
  FOR AC = 20 TO ENDCUBE
     X1 = X1 + XINC
     X6 = X6 + XINC
     BLOK = 2: GOTO AXoB101
AXoB20:
     IF AC = STOPREAD THEN GOTO AXoB21
   NEXT AC

AXoB101:

GOSUB B101ASSIGNMENTS

IF BLOK = 4 THEN GOTO AXoSINGLES

GOSUB FMEMBERS

GOTO AXoB150

AXoSINGLES:
GOSUB LUCKY 'routine named for Lucky

AXoB150:
        IF BLOK = 1 THEN GOTO AXoB10
        IF BLOK = 2 THEN GOTO AXoB20
        IF BLOK = 3 THEN GOTO AXoB30
        IF BLOK = 4 THEN GOTO AXoB40

AXoFRAMINGREAD1:

GOSUB FRAMINGAXYZXYZ8

RETURN

AXoERR1:

GOSUB ERRORCODES

ZROT:
FOR RD = 1 TO 1000
  INPUT #2, FIRST, LAST, ZANGLE, TRANX, TRANY, TRANZ
  IF FIRST = 999 THEN EXIT FOR
  ZANGLE = (ZANGLE * 3.14159) / 180
  FOR ROT = FIRST TO LAST
   X(ROT) = (XR(ROT) * COS(ZANGLE)) - (YR(ROT) * SIN(ZANGLE)) + TRANX
   Y(ROT) = (XR(ROT) * SIN(ZANGLE)) + (YR(ROT) * COS(ZANGLE)) + TRANY
   Z(ROT) = ZR(ROT) + TRANZ
   XR(ROT) = X(ROT): YR(ROT) = Y(ROT): ZR(ROT) = Z(ROT)
  NEXT ROT
NEXT RD
GOTO TRANSFORMATIONS


To --> program code (complete)