1000 FILES RDATA,PDATA,TEMP,LVIEW,RVIEW,PLOTL,PLOTR 1010 DIM A[4,4],B[4,4],C[4,4] 1020 READ #1,1 1030 READ #1;X,Y,Z,P 1040 X8=X9=X 1050 Y8=Y9=Y 1060 Z8=Z9=Z 1070 READ #1;X,Y,Z,P 1080 X8=(X8 MIN X) 1090 X9=(X9 MAX X) 1100 Y8=(Y8 MIN Y) 1110 Y9=(Y9 MAX Y) 1120 Z8=(Z8 MIN Z) 1130 Z9=(Z9 MAX Z) 1140 IF TYP(1)=1 THEN 1070 1150 R=(X9-X8) MAX (Y9-Y8) MAX (Z9-Z8) 1160 T1=(X9+X8)/2 1170 T2=(Y9+Y8)/2 1180 T3=(Z9+Z8)/2 1190 READ #1,1 1200 READ #3,1 1210 READ #1;X,Y,Z,P 1220 X=(X-T1)/R 1230 Y=(Y-T2)/R 1240 Z=(Z-T3)/R 1250 PRINT #3;X,Y,Z,P 1260 IF TYP(1)=1 THEN 1210 1270 PRINT #3; END 1280 READ #1,1 1290 READ #3,1 1300 READ #3;X,Y,Z,P 1310 PRINT #1;X,Y,Z,P 1320 IF TYP(3)=1 THEN 1300 1330 PRINT #1; END 1340 MAT A=IDN 1350 PRINT 1360 PRINT "--ALL ANGLES IN DEGREES, NUMERIC RESPONSES--" 1370 PRINT "INITIAL ROTATION:" 1380 PRINT " YAW ANGLE:"; 1390 INPUT T 1400 REM SET UP YAW MATRIX 1410 GOSUB 3800 1420 REM CARRY OUT MATRIX MULTIPLICATION 1430 GOSUB 3960 1440 PRINT " PITCH ANGLE:"; 1450 INPUT T 1460 REM SET UP PITCH MATRIX 1470 GOSUB 3880 1480 REM CARRY OUT MATRIX MULTIPLICATION 1490 GOSUB 3960 1500 PRINT 1510 PRINT "SPECIFY PROJECTION:" 1520 PRINT " 1) AXONOMETRIC" 1530 PRINT " 2) OBLIQUE" 1540 PRINT " 3) PERSPECTIVE" 1550 PRINT " 4) STEREOGRAPHIC" 1560 INPUT S1 1570 GOTO S1 OF 1580,2270,2490,2920 1580 REM AXONOMETRIC PROJECTIONS 1590 PRINT "SPECIFY:" 1600 PRINT " 1) ISOMETRIC" 1610 PRINT " 2) DIMETRIC" 1620 PRINT " 3) TRIMETRIC" 1630 INPUT S1 1640 GOTO S1 OF 1650,1800,1990 1650 REM ISOMETRIC SET UP. 1660 PRINT 1670 PRINT " YAW ANGLE: 45" 1680 PRINT " PITCH ANGLE: 35.264" 1690 T=45 1700 REM SET UP YAW MATRIX 1710 GOSUB 3800 1720 REM CARRY OUT MATRIX MULTIPLICATION 1730 GOSUB 3960 1740 T=35.264 1750 REM SET UP PITCH MATRIX 1760 GOSUB 3880 1770 REM CARRY OUT MATRIX MULTIPLICATION 1780 GOSUB 3960 1790 GOTO 2130 1800 REM DIMETRIC SET UP 1810 PRINT 1820 PRINT " YAW ANGLE:"; 1830 INPUT T 1840 T1=T 1850 REM SET UP YAW MATRIX 1860 GOSUB 3800 1870 REM CARRY OUT MATRIX MULTIPLICATION 1880 GOSUB 3960 1890 T1=T1/57.2958 1900 T2=SIN(T1)^2/(1-SIN(T1)^2) 1910 T3=SQR(1/(1-T2^2)-1) 1920 T=ATN(T3)*57.2958 1930 PRINT " PITCH ANGLE:"T 1940 REM SET UP PITCH MATRIX 1950 GOSUB 3880 1960 REM CARRY OUT MATRIX MULTIPLICATION 1970 GOSUB 3960 1980 GOTO 2130 1990 REM TRIMETRIC SET UP 2000 PRINT 2010 PRINT " YAW ANGLE:"; 2020 INPUT T 2030 REM SET UP YAW MATRIX 2040 GOSUB 3800 2050 REM CARRY OUT MATRIX MULTIPLICATION 2060 GOSUB 3960 2070 PRINT " PITCH ANGLE:"; 2080 INPUT T 2090 REM SET UP PITCH MATRIX 2100 GOSUB 3880 2110 REM CARRY OUT MATRIX MULTIPLICATION 2120 GOSUB 3960 2130 REM CARRY OUT PROJECTION 2140 PRINT 2150 PRINT "PROJECTION RAYS PARALLEL TO Z AXIS." 2160 READ #1,1 2170 READ #2,1 2180 READ #1;X,Y,Z,P 2190 X1=X*A[1,1]+Y*A[2,1]+Z*A[3,1]+A[4,1] 2200 Y1=X*A[1,2]+Y*A[2,2]+Z*A[3,2]+A[4,2] 2210 PRINT #2;X1,Y1,P 2220 IF TYP(1)=1 THEN 2180 2230 PRINT #2; END 2240 PRINT 2250 PRINT "--TRANSFORMATION COMPLETE--" 2260 STOP 2270 REM OBLIQUE PROJECTIONS 2280 PRINT 2290 PRINT " ANGLE TO OBLIQUE AXIS:"; 2300 INPUT T 2310 T=T/57.2958 2320 PRINT " OBLIQUE AXIS FORESHORTENING FACTOR:"; 2330 INPUT F 2340 F1=F*COS(T) 2350 F2=F*SIN(T) 2360 READ #1,1 2370 READ #2,1 2380 READ #1;X,Y,Z,P 2390 Z1=X*A[1,3]+Y*A[2,3]+Z*A[3,3]+A[4,3] 2400 X1=X*A[1,1]+Y*A[2,1]+Z*A[3,1]+A[4,1]-Z1*F1 2410 Y1=X*A[1,2]+Y*A[2,2]+Z*A[3,2]+A[4,2]-Z1*F2 2420 PRINT #2;X1,Y1,P 2430 IF TYP(1)=1 THEN 2380 2440 PRINT #2; END 2450 READ #1,1 2460 PRINT 2470 PRINT "--TRANSFORMATION COMPLETE--" 2480 STOP 2490 REM PERSPECTIVE PROJECTION 2500 PRINT 2510 READ #1,1 2520 READ #2,1 2530 READ #3,1 2540 READ #1;X,Y,Z,P 2550 X1=X*A[1,1]+Y*A[2,1]+Z*A[3,1]+A[4,1] 2560 Y1=X*A[1,2]+Y*A[2,2]+Z*A[3,2]+A[4,2] 2570 Z1=X*A[1,3]+Y*A[2,3]+Z*A[3,3]+A[4,3] 2580 PRINT #3;X1,Y1,Z1,P 2590 IF TYP(1)=1 THEN 2540 2600 PRINT #3; END 2610 READ #3,1 2620 READ #3;X1,Y1,Z1,P 2630 Z9=Z1 2640 READ #3;X1,Y1,Z1,P 2650 Z9=(Z9 MAX Z1) 2660 IF TYP(3)=1 THEN 2640 2670 MAT A=IDN 2680 A[4,3]=-Z9 2690 PRINT " X-TRANSLATION:"; 2700 INPUT X3 2710 A[4,1]=X3 2720 PRINT " Y-TRANSLATION:"; 2730 INPUT Y3 2740 A[4,2]=Y3 2750 PRINT " DISTANCE TO CENTER OF PROJECTION:"; 2760 INPUT K 2770 A[4,4]=(1+Z9/K) 2780 A[3,4]=-1/K 2790 READ #3,1 2800 READ #3;X,Y,Z,P 2810 X1=X+A[4,1] 2820 Y1=Y+A[4,2] 2830 H=Z*A[3,4]+A[4,4] 2840 X1=X1/H-X3 2850 Y1=Y1/H-Y3 2860 PRINT #2;X1,Y1,P 2870 IF TYP(3)=1 THEN 2800 2880 PRINT #2; END 2890 PRINT 2900 PRINT "--TRANSFORMATION COMPLETE--" 2910 STOP 2920 REM STEREOGRAPHIC PROJECTION 2930 PRINT 2940 READ #1,1 2950 READ #3,1 2960 READ #1;X,Y,Z,P 2970 X1=X*A[1,1]+Y*A[2,1]+Z*A[3,1]+A[4,1] 2980 Y1=X*A[1,2]+Y*A[2,2]+Z*A[3,2]+A[4,2] 2990 Z1=X*A[1,3]+Y*A[2,3]+Z*A[3,3]+A[4,3] 3000 PRINT #3;X1,Y1,Z1,P 3010 IF TYP(1)=1 THEN 2960 3020 PRINT #3; END 3030 READ #3,1 3040 READ #3;X1,Y1,Z1,P 3050 Z9=Z1 3060 READ #3;X1,Y1,Z1,P 3070 Z9=(Z9 MAX Z1) 3080 IF TYP(3)=1 THEN 3060 3090 MAT A=IDN 3100 A[4,3]=-Z9 3110 PRINT " X-TRANSLATION:"; 3120 INPUT X3 3130 A[4,1]=X3 3140 PRINT " Y-TRANSLATION:"; 3150 INPUT Y3 3160 A[4,2]=Y3 3170 PRINT " EYE SEPARATION (INCHES):"; 3180 INPUT W 3190 A[4,1]=A[4,1]+.2 3200 PRINT " DISTANCE TO CENTER OF PROJECTION:"; 3210 INPUT K 3220 A[4,4]=1+Z9/K 3230 A[3,4]=-1/K 3240 READ #3,1 3250 READ #4,1 3260 READ #3;X,Y,Z,P 3270 X1=X+A[4,1] 3280 Y1=Y+A[4,2] 3290 H=Z*A[3,4]+A[4,4] 3300 X1=X1/H-X3 3310 Y1=Y1/H-Y3 3320 PRINT #4;X1,Y1,P 3330 IF TYP(3)=1 THEN 3260 3340 PRINT #4; END 3350 READ #3,1 3360 READ #5,1 3370 A[4,1]=A[4,1]-.4 3380 READ #3;X,Y,Z,P 3390 X1=X+A[4,1] 3400 Y1=Y+A[4,2] 3410 H=Z*A[3,4]+A[4,4] 3420 X1=X1/H-X3 3430 Y1=Y1/H-Y3 3440 PRINT #5;X1,Y1,P 3450 IF TYP(3)=1 THEN 3380 3460 PRINT #5; END 3470 READ #4,1 3480 READ #5,1 3490 REM FIND MAX AND MIN VALUES IN LVIEW AND RVIEW 3500 READ #4;X,Y,P 3510 L8=L9=X 3520 READ #5;X,Y,P 3530 R8=R9=X 3540 READ #4;X,Y,P 3550 L8=(L8 MIN X) 3560 L9=(L9 MAX X) 3570 READ #5;X,Y,P 3580 R8=(R8 MIN X) 3590 R9=(R9 MAX X) 3600 IF TYP(4)=1 THEN 3540 3610 REM COMPUTE VIEW SEPARATION ADJUSTMENT 3620 S=(2*W-R9-R8+L9+L8)/4 3630 REM COMPUTE AND STORE PLOTTING VALUES 3640 READ #4,1 3650 READ #5,1 3660 READ #6,1 3670 READ #7,1 3680 READ #4;X,Y,P 3690 X=X-S 3700 PRINT #6;X,Y,P 3710 READ #5;X,Y,P 3720 X=X+S 3730 PRINT #7;X,Y,P 3740 IF TYP(4)=1 THEN 3680 3750 PRINT #6; END 3760 PRINT #7; END 3770 PRINT 3780 PRINT "--TRANSFORMATION COMPLETE--" 3790 STOP 3800 REM YAW ROTATION MATRIX 3810 T=T/57.2958 3820 MAT B=IDN 3830 B[1,1]=B[3,3]=COS(T) 3840 B[1,3]=-SIN(T) 3850 B[3,1]=SIN(T) 3860 REM END OF SUBROUTINE 3870 RETURN 3880 REM PITCH ROTATION MATRIX 3890 T=T/57.2958 3900 MAT B=IDN 3910 B[2,2]=B[3,3]=COS(T) 3920 B[2,3]=SIN(T) 3930 B[3,2]=-SIN(T) 3940 REM END OF SUBROUTINE 3950 RETURN 3960 REM MATRIX MULTIPLICATION 3970 MAT C=A*B 3980 MAT A=C 3990 REM END OF SUBROUTINE 4000 RETURN 4010 END