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) |