ON ERROR OSCLI "REFRESH ON" : IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE MODE 3 : PRINT REPORT$ : END REM. FLIER - Copyright (C) 2001 Christopher Burke MODE 18 OFF *REFRESH OFF @% = &2030A DIM _LINE(10,6) DIM _2D(10,4) DIM _ENGINE(6,6) DIM _2DENG(6,4) DIM _BOX(4,2) _BOX(1,1) = 700 _BOX(1,2) = 600 _BOX(2,1) = -700 _BOX(2,2) = 600 _BOX(3,1) = -700 _BOX(3,2) = -600 _BOX(4,1) = 700 _BOX(4,2) = -600 _LINE(1,1) = 374.166 _LINE(1,2) = 0.58800 _LINE(1,3) = 0.27055 _LINE(1,4) = 300.000 _LINE(1,5) = 3.14159 _LINE(1,6) = 0.00000 _LINE(2,1) = 500.000 _LINE(2,2) = 0.92731 _LINE(2,3) = 0.00000 _LINE(2,4) = 300.000 _LINE(2,5) = 3.14159 _LINE(2,6) = 0.00000 _LINE(3,1) = 304.138 _LINE(3,2) = 0.00000 _LINE(3,3) = 6.11804 _LINE(3,4) = 300.000 _LINE(3,5) = 3.14159 _LINE(3,6) = 0.00000 _LINE(4,1) = 500.000 _LINE(4,2) = 5.35589 _LINE(4,3) = 0.00000 _LINE(4,4) = 300.000 _LINE(4,5) = 3.14159 _LINE(4,6) = 0.00000 _LINE(5,1) = 374.166 _LINE(5,2) = 5.69519 _LINE(5,3) = 0.27055 _LINE(5,4) = 300.000 _LINE(5,5) = 3.14159 _LINE(5,6) = 0.00000 _LINE(6,1) = 374.166 _LINE(6,2) = 0.58800 _LINE(6,3) = 0.27055 _LINE(6,4) = 500.000 _LINE(6,5) = 0.92731 _LINE(6,6) = 0.00000 _LINE(7,1) = 500.000 _LINE(7,2) = 0.92731 _LINE(7,3) = 0.00000 _LINE(7,4) = 304.138 _LINE(7,5) = 0.00000 _LINE(7,6) = -0.16515 _LINE(8,1) = 304.138 _LINE(8,2) = 0.00000 _LINE(8,3) = -0.16515 _LINE(8,4) = 500.000 _LINE(8,5) = 5.35589 _LINE(8,6) = 0.00000 _LINE(9,1) = 500.000 _LINE(9,2) = 5.35589 _LINE(9,3) = 0.00000 _LINE(9,4) = 374.166 _LINE(9,5) = 5.69519 _LINE(9,6) = 0.27055 _LINE(10,1) = 374.166 _LINE(10,2) = 0.58800 _LINE(10,3) = 0.27055 _LINE(10,4) = 374.166 _LINE(10,5) = 5.69519 _LINE(10,6) = 0.27055 _ENGINE(1,1) = 316.228 _ENGINE(1,2) = 0.32175 _ENGINE(1,3) = 0.00000 _ENGINE(1,4) = 361.421 _ENGINE(1,5) = 0.58800 _ENGINE(1,6) = 0.06923 _ENGINE(2,1) = 361.421 _ENGINE(2,2) = 0.58800 _ENGINE(2,3) = 0.06923 _ENGINE(2,4) = 320.156 _ENGINE(2,5) = 0.32175 _ENGINE(2,6) = 0.15682 _ENGINE(3,1) = 316.228 _ENGINE(3,2) = 0.32175 _ENGINE(3,3) = 0.00000 _ENGINE(3,4) = 320.156 _ENGINE(3,5) = 0.32175 _ENGINE(3,6) = 0.15682 _ENGINE(4,1) = 316.228 _ENGINE(4,2) = 5.96144 _ENGINE(4,3) = 0.00000 _ENGINE(4,4) = 361.421 _ENGINE(4,5) = 5.69518 _ENGINE(4,6) = 0.06923 _ENGINE(5,1) = 361.421 _ENGINE(5,2) = 5.69518 _ENGINE(5,3) = 0.06923 _ENGINE(5,4) = 320.156 _ENGINE(5,5) = 5.96144 _ENGINE(5,6) = 0.15682 _ENGINE(6,1) = 316.228 _ENGINE(6,2) = 5.96144 _ENGINE(6,3) = 0.00000 _ENGINE(6,4) = 320.156 _ENGINE(6,5) = 5.96144 _ENGINE(6,6) = 0.15682 PHI = -0.05 ZOOM = -0.6 FLIP = 1.0 XORIGIN = 640 YORIGIN = 480 REVOLUTION = 2 PSI = 3.14159 + 0.5 PHI = -0.05 REPEAT _RAD += 1 _THETA = _RAD - 500*INT(_RAD/500) XORIGINNEW = XORIGIN YORIGINNEW = YORIGIN PSINEW = PSI PHINEW = PHI ZOOMNEW = ZOOM PSINEW = PSINEW + 0.01257 PHINEW = PHINEW - FLIP*2*6.28319*(SIN(2*6.28319*_THETA/500)-SIN(2*6.28319*(_THETA-1)/500)) ZOOMNEW = ZOOMNEW + 0.2*(SIN(2*6.28319*_THETA/500)-SIN(2*6.28319*(_THETA-1)/500)) C = 0 PROCDISPLAY(PSI,PHI,C,ZOOM,FLIP,XORIGIN,YORIGIN) IF PHINEW < -1.57 THEN PHINEW = - 3.14159 - PHINEW FLIP = -1.0*FLIP PSINEW = PSINEW + 3.14159 ENDIF IF PHINEW > 1.57 THEN PHINEW = 3.14159 - PHINEW FLIP = -1.0*FLIP PSINEW = PSINEW + 3.14159 ENDIF IF PSINEW > 6.28319 PSINEW = PSINEW - 6.28319 PSI = PSINEW PHI = PHINEW ZOOM = ZOOMNEW XORIGIN = XORIGINNEW YORIGIN = YORIGINNEW C = 15 PROCDISPLAY(PSI,PHI,C,ZOOM,FLIP,XORIGIN,YORIGIN) IF _THETA = (REVOLUTION-1)*500 THEN C = 0 PROCDISPLAY(PSI,PHI,C,ZOOM,FLIP,XORIGIN,YORIGIN) ENDIF COLOR 2 PRINT TAB(1,27) "VECTOR:" PRINT TAB(9,27) _THETA/500*2.0 RANGE = 100*(1.0-ZOOM) PRINT TAB(55,27) "RANGE(m):" PRINT TAB(65,27) RANGE PRINT TAB(35,27) "TRACKING" *REFRESH WAIT 1 UNTIL FALSE END ; DEFPROCDISPLAY(PSI,PHI,C,ZOOM,FLIP,XORIGIN,YORIGIN) VDU 29,XORIGIN;YORIGIN; IF C > 0 GCOL 0,2 ELSE GCOL 0,0 MOVE (1.0+ZOOM)*_BOX(1,1),(1.0+ZOOM)*_BOX(1,2) DRAW (1.0+ZOOM)*(_BOX(1,1)-200),(1.0+ZOOM)*_BOX(1,2) MOVE (1.0+ZOOM)*(_BOX(2,1)+200),(1.0+ZOOM)*_BOX(2,2) DRAW (1.0+ZOOM)*_BOX(2,1),(1.0+ZOOM)*_BOX(2,2) MOVE (1.0+ZOOM)*_BOX(2,1),(1.0+ZOOM)*_BOX(2,2) DRAW (1.0+ZOOM)*_BOX(2,1),(1.0+ZOOM)*(_BOX(2,2)-200) MOVE (1.0+ZOOM)*_BOX(3,1),(1.0+ZOOM)*(_BOX(3,2)+200) DRAW (1.0+ZOOM)*_BOX(3,1),(1.0+ZOOM)*_BOX(3,2) MOVE (1.0+ZOOM)*_BOX(3,1),(1.0+ZOOM)*_BOX(3,2) DRAW (1.0+ZOOM)*(_BOX(3,1)+200),(1.0+ZOOM)*_BOX(3,2) MOVE (1.0+ZOOM)*(_BOX(4,1)-200),(1.0+ZOOM)*_BOX(4,2) DRAW (1.0+ZOOM)*_BOX(4,1),(1.0+ZOOM)*_BOX(4,2) MOVE (1.0+ZOOM)*_BOX(4,1),(1.0+ZOOM)*_BOX(4,2) DRAW (1.0+ZOOM)*_BOX(4,1),(1.0+ZOOM)*(_BOX(4,2)+200) MOVE (1.0+ZOOM)*_BOX(1,1),(1.0+ZOOM)*(_BOX(1,2)-200) DRAW (1.0+ZOOM)*_BOX(1,1),(1.0+ZOOM)*_BOX(1,2) GCOL 0,C FOR _LINELOOP = 1 TO 10 R1 = (1.0+ZOOM)*_LINE(_LINELOOP,1) S1 = _LINE(_LINELOOP,2) P1 = _LINE(_LINELOOP,3) R2 = (1.0+ZOOM)*_LINE(_LINELOOP,4) S2 = _LINE(_LINELOOP,5) P2 = _LINE(_LINELOOP,6) V1 = R1*SIN(P1) H1 = R1*COS(P1)*ABS(SIN(S1-(PSI-1.57080))) L1 = SQR(V1*V1 + H1*H1) A1 = ASN(V1/L1) V2 = R2*SIN(P2) H2 = R2*COS(P2)*ABS(SIN(S2-(PSI-1.57080))) L2 = SQR(V2*V2 + H2*H2) A2 = ASN(V2/L2) X1 = R1*COS(P1)*SIN(S1-PSI) SIGN1 = 1.0 IF S1 < PSI - 1.57080 SIGN1 = -1.0 IF S1 < PSI - 4.71239 SIGN1 = 1.0 IF S1 > PSI + 1.57080 SIGN1 = -1.0 IF S1 > PSI + 4.71239 SIGN1 = 1.0 Y1 = L1*SIN(A1+SIGN1*PHI) X2 = R2*COS(P2)*SIN(S2-PSI) SIGN2 = 1.0 IF S2 < PSI - 1.57080 SIGN2 = -1.0 IF S2 < PSI - 4.71239 SIGN2 = 1.0 IF S2 > PSI + 1.57080 SIGN2 = -1.0 IF S2 > PSI + 4.71239 SIGN2 = 1.0 Y2 = L2*SIN(A2+SIGN2*PHI) _2D(_LINELOOP,1) = FLIP*X1 _2D(_LINELOOP,2) = FLIP*Y1 _2D(_LINELOOP,3) = FLIP*X2 _2D(_LINELOOP,4) = FLIP*Y2 NEXT _LINELOOP FOR _LINELOOP = 1 TO 6 R1 = (1.0+ZOOM)*_ENGINE(_LINELOOP,1) S1 = _ENGINE(_LINELOOP,2) P1 = _ENGINE(_LINELOOP,3) R2 = (1.0+ZOOM)*_ENGINE(_LINELOOP,4) S2 = _ENGINE(_LINELOOP,5) P2 = _ENGINE(_LINELOOP,6) V1 = R1*SIN(P1) H1 = R1*COS(P1)*ABS(SIN(S1-(PSI-1.57080))) L1 = SQR(V1*V1 + H1*H1) A1 = ASN(V1/L1) V2 = R2*SIN(P2) H2 = R2*COS(P2)*ABS(SIN(S2-(PSI-1.57080))) L2 = SQR(V2*V2 + H2*H2) A2 = ASN(V2/L2) X1 = R1*COS(P1)*SIN(S1-PSI) SIGN1 = 1.0 IF S1 < PSI - 1.57080 SIGN1 = -1.0 IF S1 < PSI - 4.71239 SIGN1 = 1.0 IF S1 > PSI + 1.57080 SIGN1 = -1.0 IF S1 > PSI + 4.71239 SIGN1 = 1.0 Y1 = L1*SIN(A1+SIGN1*PHI) X2 = R2*COS(P2)*SIN(S2-PSI) SIGN2 = 1.0 IF S2 < PSI - 1.57080 SIGN2 = -1.0 IF S2 < PSI - 4.71239 SIGN2 = 1.0 IF S2 > PSI + 1.57080 SIGN2 = -1.0 IF S2 > PSI + 4.71239 SIGN2 = 1.0 Y2 = L2*SIN(A2+SIGN2*PHI) _2DENG(_LINELOOP,1) = FLIP*X1 _2DENG(_LINELOOP,2) = FLIP*Y1 _2DENG(_LINELOOP,3) = FLIP*X2 _2DENG(_LINELOOP,4) = FLIP*Y2 NEXT _LINELOOP GCOL 0,C IF C > 0 THEN PHI = -PHI IF PSI <= 6.28319 THEN V = 50 R = SQR(90000+V*V+(300*TAN(6.28319-PSI))*(300*TAN(6.28319-PSI))) ENDIF IF PSI <= 5.69518 THEN H = -100/(SIN(PSI)+1/3*COS(PSI)) S = H*SIN(PSI-4.39064) + 284.605 V = 0.15811*S - 50 R = SQR(V*V+H*H) ENDIF IF PSI <= 3.14159 THEN H = 100/(SIN(PSI)-1/3*COS(PSI)) S = H*SIN(PSI-1.89255) + 347.851 V = -0.15811*S + 50 R = SQR(V*V+H*H) ENDIF IF PSI <= 0.58800 THEN V = 50 R = SQR(90000+V*V+90000*TAN(PSI)*TAN(PSI)) ENDIF IF PHI >= ASN(V/R) THEN MOVE _2D(1,1),_2D(1,2) DRAW _2D(1,3),_2D(1,4) MOVE _2D(5,1),_2D(5,2) DRAW _2D(5,3),_2D(5,4) MOVE _2D(10,1),_2D(10,2) DRAW _2D(10,3),_2D(10,4) ENDIF IF PSI <= 6.28319 THEN H = -50/(SIN(PSI)-1/3*COS(PSI)) S = H*SIN(PSI-5.0341)+490.153 V = 0.15811*S - 50 R = SQR(V*V+H*H) ENDIF IF PSI <= 3.46344 THEN H = 100/(SIN(PSI)-2/3*COS(PSI)) V = -50 R = SQR(V*V+H*H) ENDIF IF PSI <= 0.92730 THEN V = 50 - 100/200*150*TAN(PSI) R = SQR(150*150+V*V+(150*TAN(PSI))*(150*TAN(PSI))) ENDIF IF PHI >= ASN(V/R) THEN MOVE _2D(1,1),_2D(1,2) DRAW _2D(1,3),_2D(1,4) MOVE _2D(2,1),_2D(2,2) DRAW _2D(2,3),_2D(2,4) MOVE _2D(6,1),_2D(6,2) DRAW _2D(6,3),_2D(6,4) ENDIF GCOL 0,7 IF PSI <= 6.28319 THEN V = 50 - 100/200*150*TAN(6.28319-PSI) R = SQR(150*150+V*V+(150*TAN(6.28319-PSI))*(150*TAN(6.28319-PSI))) ENDIF IF PSI <= 5.35589 THEN V = - 50 H = -100/(SIN(PSI)+2/3*COS(PSI)) R = SQR(V*V+H*H) ENDIF IF PSI <= 2.72337 THEN H = 50/(SIN(PSI)+1/3*COS(PSI)) S = H*SIN(PSI-1.24905)+142.303 V = 50 - 0.15811*S R = SQR(V*V+H*H) ENDIF IF PHI >= ASN(V/R) THEN MOVE _2D(4,1),_2D(4,2) DRAW _2D(4,3),_2D(4,4) MOVE _2D(5,1),_2D(5,2) DRAW _2D(5,3),_2D(5,4) MOVE _2D(9,1),_2D(9,2) DRAW _2D(9,3),_2D(9,4) ENDIF GCOL 0,C IF PSI <= 6.28319 THEN V = -37.5 + 50/400*(100-300*TAN(6.28319-PSI)) R = SQR(300*300+V*V+(300*TAN(6.28319-PSI))*(300*TAN(6.28319-PSI))) ENDIF IF PSI <= 5.96144 THEN H = 100/COS(PSI-4.71239) S = H*SIN(PSI-4.71239)+300 V = -50/600*S + 12.5 R = SQR(V*V+H*H) ENDIF IF PSI <=3.46334 THEN V = 12.5 H = 100/(SIN(PSI)-2/3*COS(PSI)) R = SQR(V*V+H*H) ENDIF IF PSI <= 0.78540 THEN V = 50/400*300*TAN(PSI)-25 R = (300*300+V*V+(300*TAN(PSI))*(300*TAN(PSI))) ENDIF IF PHI <= ATN(V/R) THEN MOVE _2D(2,1),_2D(2,2) DRAW _2D(2,3),_2D(2,4) MOVE _2D(3,1),_2D(3,2) DRAW _2D(3,3),_2D(3,4) MOVE _2D(7,1),_2D(7,2) DRAW _2D(7,3),_2D(7,4) ENDIF GCOL 0,7 IF PSI <= 6.28319 THEN V = 12.5-50/400*(300-300*TAN(6.28319-PSI)) R = SQR(300*300+V*V+(300*TAN(6.28319-PSI))*(300*TAN(6.28319-PSI))) ENDIF IF PSI <= 5.49779 THEN V = 12.5 H = -100/(SIN(PSI)+2/3*COS(PSI)) R = SQR(V*V+H*H) ENDIF IF PSI <= 2.81984 THEN H = 100/COS(PSI-1.57080) S = H*SIN(PSI-1.57080) + 300 V = 50/600*S-37.5 R = SQR(V*V+H*H) ENDIF IF PSI <= 0.32175 THEN V = -50/400*300*TAN(PSI)-25 R = SQR(300*300+V*V+(300*TAN(PSI))*(300*TAN(PSI))) ENDIF IF PHI <= ATN(V/R) THEN MOVE _2D(3,1),_2D(3,2) DRAW _2D(3,3),_2D(3,4) MOVE _2D(4,1),_2D(4,2) DRAW _2D(4,3),_2D(4,4) MOVE _2D(8,1),_2D(8,2) DRAW _2D(8,3),_2D(8,4) ENDIF GCOL 0,C IF PSI <= 1.57080 OR PSI >= 4.71239 THEN GCOL 0,7 MOVE _2D(6,1),_2D(6,2) DRAW _2D(6,3),_2D(6,4) MOVE _2D(7,1),_2D(7,2) DRAW _2D(7,3),_2D(7,4) MOVE _2D(8,1),_2D(8,2) DRAW _2D(8,3),_2D(8,4) MOVE _2D(9,1),_2D(9,2) DRAW _2D(9,3),_2D(9,4) MOVE _2D(10,1),_2D(10,2) DRAW _2D(10,3),_2D(10,4) GCOL 0,11 MOVE _2DENG(1,1),_2DENG(1,2) DRAW _2DENG(1,3),_2DENG(1,4) MOVE _2DENG(2,1),_2DENG(2,2) DRAW _2DENG(2,3),_2DENG(2,4) MOVE _2DENG(3,1),_2DENG(3,2) DRAW _2DENG(3,3),_2DENG(3,4) MOVE _2DENG(4,1),_2DENG(4,2) DRAW _2DENG(4,3),_2DENG(4,4) MOVE _2DENG(5,1),_2DENG(5,2) DRAW _2DENG(5,3),_2DENG(5,4) MOVE _2DENG(6,1),_2DENG(6,2) DRAW _2DENG(6,3),_2DENG(6,4) GCOL 0,C ENDIF ELSE FOR _LINELOOP = 1 TO 10 MOVE _2D(_LINELOOP,1),_2D(_LINELOOP,2) DRAW _2D(_LINELOOP,3),_2D(_LINELOOP,4) NEXT _LINELOOP FOR _LINELOOP = 1 TO 6 MOVE _2DENG(_LINELOOP,1),_2DENG(_LINELOOP,2) DRAW _2DENG(_LINELOOP,3),_2DENG(_LINELOOP,4) NEXT _LINELOOP ENDIF PHI = -PHI ENDPROC