A.N.A.L.O.G. ISSUE 16 / FEBRUARY 1984 / PAGE 119
Most people who are familiar with the Atari personal computers will agree that their graphics are superior to any other computer in their price range. By using the Atari’s high-resolution GRAPHICS 8 mode, one can produce very respectable images on the video screen. Combine this ability with Atari 1020 printer/plotter hard-copy, and you’ve got an excellent, low-cost graphics machine.
This article presents a program which lets you show three-dimensional objects on the screen or print them out on a 1020 plotter. You can view the objects from any angle, with true perspective. If you like, object data can be stored on cassette or disk for future use.
In order to describe any object in our three-dimensional world, we must give at least three coordinates. These coordinates are usually labeled X (length), Y (width) and Z (height). This 3-D program is no exception. When you want to show an object, you must break it down into a number of points. Each point has its own set of X, Y and Z coordinates, which tells the computer where the point is located in space.
In addition to the locations of the points, we must tell the computer how these points are connected to form the sides of the object. The final result will be a “wire-frame” graphic representation of the object (so called because the object looks like it is constructed out of thin wires strung between the individual points of the object). Figure 1 shows the wire-frame representation of a pyramid.
The pyramid in Figure 1 is made up of five points (labeled 1-5) and eight lines. Let’s see how we find the coordinates of the points of this pyramid. First we must draw a top view of the pyramid. A piece of graph paper is best for this. Draw two perpendicular lines on the paper as in Figure 2. Label the horizontal line X, the vertical line Y and number the lines as shown. These will be the X and Y axes, the first two coordinates in the X-Y-Z group.
Next, draw the top view of the 3-D object and number each point where two or more lines intersect. Figure 3 shows the top view of our pyramid with its five points labeled.
Now draw another set of axis lines and label the horizontal line X and the vertical line Z. This set of axes will be used to draw a side view of the object in order to get the height coordinate (Z) for each point. Figure 4 shows the X-Z axes with the side view of our pyramid. Note that points 2 and 5 are at the same location on the side view, as are points 3 and 4. This is because they have the same X and Z locations.
Now that we’ve drawn our pyramid, we can write down the coordinates for each point. First let’s find the coordinates for point 1. To find the X coordinate, we can look at either Figure 3 or Figure 4. In either case, the X coordinate for point 1 is 0. To find the Y coordinate, we look at Figure 3. The Y coordinate for point 1 is also 0. To find the Z coordinate, look at Figure 4. The Z coordinate for point 1 is 5. Repeat this procedure for the remaining four points in the pyramid and you should have a list that looks like Figure 5.
POINT # X Y Z
1 0 0 5
2 4 4 0
3 -4 4 0
4 -4 -4 0
5 4 -4 0
Figure 5.
After defining all the points, we’re ready to tell the computer how to draw the pyramid. As stated earlier, this pyramid is made up of eight lines. In order to draw each line, the computer must know which two points make up the endpoints of the line. Figure 6 shows the endpoints of the eight lines.
LINE # FROM POINT TO POINT
1 1 2
2 1 3
3 1 4
4 1 5
5 2 3
6 3 4
7 4 5
8 5 2
Figure 6.
With this information in hand, you’re ready to enter it into the 3-D image program in Listing 1. Type in the program and check your typing with C:CHECK or D:CHECK2. When you’re sure the program is correct, RUN it.
When the 3-D object plot program is executed, the computer will ask you several questions.
ENTER OBSERVER LOCATION X,Y,Z OR E FOR EDIT
If you’d like to examine and/or change the object data, type E, press RETURN and go to step 8. Otherwise, type in the X, Y and Z coordinates of the point in space where your imaginary “eye” is located and press RETURN. A good observer location for our pyramid is 5,7,3. Next you will be asked:
ENTER COORDINATES LOOKED AT X,Y,Z
Now you should enter the X, Y, and Z coordinates of the place where you want to look. If, for example, you want to look at the center of our pyramid, you should type 0,0,2.5 and press RETURN. Finally, you’ll be asked:
ENTER ZOOM FACTORThe normal zoom factor is 1. To enlarge the object image, type a larger number; to make the object smaller, enter a smaller number.
You can design and plot extremely complex objects with this image processor. The procedure is the same as the simple pyramid used in the above illustrations; there are just more points and lines involved.
Figure 7 is the data for a futuristic 3-D space shuttle. Try entering this data into your computer and viewing it.
POINTS:44
POINT 1: -5.5 -5.5 0
POINT 2: -8 -1 0
POINT 3: -8 3 0
POINT 4: -16 14 0
POINT 5: -16 17 0
POINT 6: -5.5 21 0
POINT 7: 8 16 2.5
POINT 8: 8 0 2.5
POINT 9: -2.5 0 1.25
POINT 10: -2.5 -6.5 1.25
POINT 11: 8 -7.5 2.5
POINT 12: -1.25 -2 1.5
POINT 13: -1.25 -7.5 1.5
POINT 14: -2.5 18.5 1.25
POINT 15: -4.5 22 6.5
POINT 16: -4.5 18 6.5
POINT 17: -3.2 13 3
POINT 18: -2.5 5.5 1.25
POINT 19: -4 -6 0
POINT 20: -4 -7.5 0
POINT 21: 0 -26 0
POINT 22: 4 -7.5 0
POINT 23: 4 -6 8
POINT 24: 1.25 -7.5 1.5
POINT 25: 1.25 -2 1.5
POINT 26: 2.5 0 1.25
POINT 27: 2.5 -6.5 1.25
POINT 28: 5.5 -5.5 0
POINT 29: 5.5 21 0
POINT 30: 2.5 18.5 1.25
POINT 31: 4.5 22 6.5
POINT 32: 4.5 18 6.5
POINT 33: 3.2 13 3
POINT 34: 2.5 5.5 1.25
POINT 35: 16 17 0
POINT 36: 16 14 0
POINT 37: 8 3 0
POINT 38: 8 -1 0
POINT 39: 3.5 -9.5 0.25
POINT 40: 8.5 -9.5 2
POINT 41: 8.5 -19 0.6
POINT 42: -8.5 -9.5 2
POINT 43: -3.5 -9.5 0.25
POINT 44: -8.5 -19 0.6
LINES:58
LINE 1: 7 TO 6
LINE 2: 6 TO 29
LINE 3: 29 TO 7
LINE 4: 29 TO 35
LINE 5: 35 TO 36
LINE 6: 36 TO 37
LINE 7: 37 TO 38
LINE 8: 38 TO 28
LINE 9: 28 TO 29
LINE 10: 6 TO 5
LINE 11: 5 TO 4
LINE 12: 4 TO 3
LINE 13: 3 TO 2
LINE 14: 2 TO 1
LINE 15: 1 TO 6
LINE 16: 7 TO 8
LINE 17: 8 TO 9
LINE 18: 9 TO 10
LINE 19: 10 TO 1
LINE 20: 8 TO 26
LINE 21: 26 TO 27
LINE 22: 27 TO 28
LINE 23: 30 TO 31
LINE 24: 31 TO 32
LINE 25: 32 TO 33
LINE 26: 33 TO 34
LINE 27: 34 TO 30
LINE 28: 14 TO 15
LINE 29: 15 TO 16
LINE 30: 16 TO 17
LINE 31: 17 TO 18
LINE 32: 18 TO 14
LINE 33: 10 TO 13
LINE 34: 13 TO 12
LINE 35: 12 TO 9
LINE 36: 12 TO 8
LINE 37: 13 TO 11
LINE 38: 11 TO 8
LINE 39: 8 TO 25
LINE 40: 25 TO 26
LINE 41: 11 TO 24
LINE 42: 24 TO 25
LINE 43: 27 TO 24
LINE 44: 24 TO 23
LINE 45: 23 TO 22
LINE 46: 22 TO 24
LINE 47: 13 TO 19
LINE 48: 19 TO 20
LINE 49: 20 TO 13
LINE 50: 11 TO 21
LINE 51: 21 TO 22
LINE 52: 20 TO 21
LINE 53: 42 TO 43
LINE 54: 43 TO 44
LINE 55: 44 TO 42
LINE 56: 39 TO 40
LINE 57: 40 TO 41
LINE 58: 41 TO 39
Figure 7.
Some suggested views for this shuttle are:
OBSERVER LOC. LOOKED AT ZOOM 60,-60,40 0,0,0 1 OBSERVER LOC. LOOKED AT ZOOM 0,-45,6 0,0,0 1 OBSERVER LOC. LOOKED AT ZOOM 1,0,500 0,0,0 4.5 OBSERVER LOC. LOOKED AT ZOOM 500,0,0 0,0,0 6
To be honest, I can’t take all the credit for this program. I got it from a Compucolor II computer bulletin board several years ago; the author was not credited. I modified the program to work on the Atari computers, added the editing, screen clipping, plotter output and file handling.
Although the code has been heavily modified, the author may recognize the general structure, and is encouraged to let me know his or her name. I’ll be glad to give credit where it is due.
I’d be interested in seeing some of the 3-D objects created by our readers with this program. Just send in a printout of your object’s data along with your name, and you may see your work displayed in a future issue!
100 GRAPHICS 0 110 ? "***************************" 120 ? "* 3-D IMAGE PLOT SYSTEM *" 130 ? "* BY TOM HUDSON *" 140 ? "* ANALOG COMPUTING # 16 *" 150 ? "***************************" 160 DIM A$(5),F$(20),DMA$(1),O$(1),EG$(2),IN$(1):EG$=CHR$(27):EG$(2)=CHR$(7) 170 XL=0:XR=319:YT=0:YB=191:OFF=40000 180 ? :? "DMA OFF";:INPUT DMA$:IF DMA$ <>"Y" AND DMA$<>"N" THEN 180 190 ? :? "OUTPUT TO PLOTTER";:INPUT O$ :IF O$<>"Y" AND O$<>"N" THEN 190 200 IF O$="N" THEN 220 210 TRAP 190:CLOSE #3:OPEN #3,8,0,"P": ? #3;EG$;"*H*I*M0,−300*I":PC=0 220 ? :? "FILE OR KEYBOARD INPUT";:INP UT A$:IF A$="F" THEN 1100 230 IF A$<>"K" THEN 220 240 ? :? "HOW MANY POINTS ARE THERE";: INPUT PS 250 DIM X(PS),Y(PS),Z(PS),P(PS,2),VIS( PS) 260 ? "ENTER X,Y,Z COORDINATES FOR EAC H POINT" 270 FOR I=1 TO PS:? "POINT ";I;:INPUT Q1,Q2,Q3:X(I)=Q1:Y(I)=Q2:Z(I)=Q3:NEXT I 280 ? :? "HOW MANY LINES ARE THERE";:I NPUT LS:DIM LN(LS,1) 290 ? :? "NOW ENTER POINT INFORMATION" 300 ? "FOR EACH LINE." 310 FOR I=1 TO LS:? :? "LINE ";I:? "FR OM POINT";:INPUT Q1:LN(I,0)=Q1:? " TO POINT";:INPUT Q1:LN(I,1)=Q1:NEXT I 320 ? :? "DO YOU WANT TO SAVE THIS OBJ ECT";:INPUT A$:IF A$="Y" THEN 1250 330 IF A$<>"N" THEN 320 340 REM *************************** 350 REM * TIME FOR NEW PLOT * 360 REM *************************** 370 ? :? "ENTER OBSERVER LOCATION X,Y, Z" 380 ? "OR E FOR EDIT":TRAP 1340 390 ZOOM=1 400 INPUT OX,OY,OZ 410 ? :? "ENTER COORDINATES LOOKED AT X,Y,Z" 420 TRAP 410:INPUT VX,VY,VZ 430 ? :? "ENTER ZOOM FACTOR":TRAP 430: INPUT ZOOM:TRAP OFF 440 X(0)=VX:Y(0)=VY:Z(0)=VZ 450 D0=1:IF DMA$="Y" THEN POKE 559,0 460 REM *************************** 470 REM * CALCULATE PERSPECTIVE * 480 REM *************************** 490 DX=VX-OX:DY=VY-OY:DZ=VZ-OZ 500 U1=SQR(DX*DX+DY*DY+DZ*DZ):IF U1=0 THEN U1=1E−04 510 CX=DX/U1:CY=DY/U1:CZ=DZ/U1 520 S3=SQR(1-CZ*CZ):S2=SQR(1-CY*CY) 530 QX=OX+D0*CX:QY=OY+D0*CY:QZ=OZ+D0*C Z 540 FOR I=0 TO PS:XW=X(I):YW=Y(I):ZW=Z (I):GOSUB 610:NEXT I 550 FOR I=0 TO PS:IF VIS(I)=0 THEN 570 560 XW=X(I):YW=Y(I):ZW=Z(I):GOSUB 610: GOSUB 670 570 NEXT I:GOTO 740 580 REM *************************** 590 REM * IS THE POINT VISIBLE? * 600 REM *************************** 610 VIS(I)=1:VCX=XW−OX:VCY=YW−OY:VCZ=Z W−OZ 620 IF DX*VCX+DY*VCY+DZ*VCZ>0 THEN RET URN 630 VIS(I)=0:RETURN 640 REM *************************** 650 REM * NOW CALC PLOT COORDS * 660 REM *************************** 670 K=D0/(VCX*CX+VCY*CY+VCZ*CZ) 680 AX=OX+K*VCX:AY=OY+K*VCY:AZ=OZ+K*VC Z 690 IF S3=0 THEN 720 700 P(I,1)=((AX-QX)*CY-(AY-QY)*CX)/S3 710 P(I,2)=(AZ-QZ)/S3:RETURN 720 P(I,1)=((QX-AX)*CZ+(AZ-QZ)*CX)/S2 730 P(I,2)=(AY-QY)/S2:RETURN 740 REM *************************** 750 REM * SCALE THE IMAGE * 760 REM *************************** 770 T=450*ZOOM:FOR I=0 TO PS 780 P(I,1)=P(I,1)*T 790 P(I,2)=P(I,2)*T 800 NEXT I 810 XAD=160−P(0,1):YAD=96−P(0,2):FOR I =1 TO PS:P(I,1)=P(I,1)+XAD:P(I,2)=P(I, 2)+YAD:NEXT I 820 REM *************************** 830 REM * NOW DRAW THE IMAGE! * 840 REM *************************** 850 GRAPHICS 24:SETCOLOR 2,0,0:COLOR 1 :TRAP OFF 860 IF O$="Y" THEN ? #3;"M0,0*D480,0*D 480,288*D0,288*D0,0" 870 FOR I=1 TO LS:TV=VIS(LN(I,0))+VIS( LN(I,1)):IF TV=0 THEN 1010 880 IF TV=2 THEN 980 890 QT=0:ISAVE=I:IF VIS(LN(I,0))=0 THE N I1=LN(I,0):I2=LN(I,1):I=LN(I,0):GOTO 910 900 I1=LN(I,1):I2=LN(I,0):I=LN(I,1) 910 XT1=X(I1):YT1=Y(I1):ZT1=Z(I1):XT2= X(I2):YT2=Y(I2):ZT2=Z(I2):FV=0:FH=0 920 XW=(XT1+XT2)/2:YW=(YT1+YT2)/2:ZW=( ZT1+ZT2)/2:GOSUB 610 930 IF VIS(I)>0 THEN XT2=XW:YT2=YW:ZT2 =ZW:GOTO 950 940 XT1=XW:YT1=YW:ZT1=ZW 950 QT=QT+1:IF QT<15 THEN 920 960 XW=XT2:YW=YT2:ZW=ZT2:GOSUB 610 970 GOSUB 670:P(I,1)=P(I,1)*T+XAD:P(I, 2)=P(I,2)*T+YAD:VIS(I)=0:I=ISAVE 980 X1=P(LN(I,0),1):Y1=191−P(LN(I,0),2 ):X2=P(LN(I,1),1):Y2=191−P(LN(I,1),2): GOSUB 1550 990 IF O$="N" OR POK=0 THEN 1010 1000 ? #3;"M";X1*1.5;",";(191−Y1)*1.5; "*D";XW*1.5;",";(191−YW)*1.5:PC=PC+1 1010 NEXT I 1020 IF PC>0 THEN ? #3;"H*M0,−300*I":P C=0 1030 FOR X=15 TO 0 STEP −1:SOUND 0,128 ,10,X:NEXT X 1040 IF PEEK(53279)=7 AND STRIG(0)=1 T HEN 1040 1050 GRAPHICS 0:? "LAST PARAMETERS:" 1060 ? :? "OBSERVER: ";OX;",";OY;",";O Z:? "VIEWPOINT:";VX;",";VY;",";VZ:? "Z OOM:";ZOOM:GOTO 340 1070 REM *************************** 1080 REM * LOAD 3-D IMAGE FILE * 1090 REM *************************** 1100 CLOSE #1:? "ENTER FILENAME TO LOA D";:INPUT F$:TRAP 1200:OPEN #1,4,0,F$: TRAP 1180 1110 INPUT #1,PS:DIM X(PS),Y(PS),Z(PS) ,P(PS,2),VIS(PS) 1120 FOR X=1 TO PS:INPUT #1,Q1:X(X)=Q1 :NEXT X 1130 FOR X=1 TO PS:INPUT #1,Q1:Y(X)=Q1 :NEXT X 1140 FOR X=1 TO PS:INPUT #1,Q1:Z(X)=Q1 :NEXT X 1150 INPUT #1,LS:DIM LN(LS,1) 1160 FOR X=1 TO LS:INPUT #1,Q1:LN(X,0) =Q1:INPUT #1,Q1:LN(X,1)=Q1:NEXT X 1170 CLOSE #1:TRAP OFF:GOTO 340 1180 ? :? "}FILE FORMAT ERROR!":GOTO 1 210 1190 ? :? "}I/O ERROR − ";PEEK(195):GO TO 1210 1200 ? :? "}CAN'T OPEN FILE!" 1210 ? "PRESS RETURN":INPUT IN$:RUN 1220 REM *************************** 1230 REM * SAVE 3-D IMAGE FILE * 1240 REM *************************** 1250 CLOSE #1:? "ENTER FILENAME TO SAV E";:INPUT F$:TRAP 1210:OPEN #1,8,0,F$: TRAP 1190 1260 ? #1;PS 1270 FOR X=1 TO PS:? #1;X(X):NEXT X 1280 FOR X=1 TO PS:? #1;Y(X):NEXT X 1290 FOR X=1 TO PS:? #1;Z(X):NEXT X 1300 ? #1;LS:FOR X=1 TO LS:? #1;LN(X,0 ):? #1;LN(X,1):NEXT X:GOTO 1170 1310 REM *************************** 1320 REM * EDIT THE 3-D IMAGE DATA * 1330 REM *************************** 1340 TRAP OFF:? :? "PRINT, EDIT OR QUI T";:INPUT A$:IF A$="E" THEN 1410 1350 IF A$="Q" THEN 340 1360 IF A$<>"P" THEN 1340 1370 TRAP 1340:LPRINT "POINTS:";PS:LPR INT 1380 FOR X=1 TO PS:LPRINT "POINT ";X;" : ";X(X),Y(X),Z(X):NEXT X:LPRINT 1390 LPRINT "LINES:";LS:LPRINT 1400 FOR X=1 TO LS:LPRINT "LINE ";X;": ";LN(X,0);" TO ";LN(X,1):NEXT X:LPRIN T :GOTO 1340 1410 TRAP OFF:? :? "EDIT POINT OR LINE OR EXIT";:INPUT A$:IF A$="L" THEN 148 0 1420 IF A$="E" THEN 320 1430 IF A$<>"P" THEN 1410 1440 ? :? "ENTER POINT# OR RETURN";:TR AP 1410:INPUT PT:IF PT>PS OR PT<0 THEN 1440 1450 ? :? "X=";X(PT),"Y=";Y(PT),"Z=";Z (PT) 1460 ? :? "ENTER NEW X,Y,Z OR RETURN": TRAP 1410 1470 INPUT Q1,Q2,Q3:X(PT)=Q1:Y(PT)=Q2: Z(PT)=Q3:GOTO 1410 1480 ? :? "ENTER LINE# OR RETURN";:TRA P 1410:INPUT LN:IF LN>LS OR LN<0 THEN 1480 1490 ? :? "FROM POINT:";LN(LN,0):? " TO POINT:";LN(LN,1) 1500 ? :? "ENTER NEW LINE POINTS OR RE TURN":TRAP 1410 1510 ? "FROM POINT:";:INPUT Q1:IF Q1>P S THEN 1510 1520 LN(LN,0)=Q1 1530 ? " TO POINT:";:INPUT Q1:IF Q1>P S THEN 1530 1540 LN(LN,1)=Q1:GOTO 1410 1550 REM *************************** 1560 REM * GRAPHICS CLIP ROUTINE * 1570 REM *************************** 1580 L1=0:L2=0:R1=0:R2=0:T1=0:T2=0:B1= 0:B2=0:POK=0 1590 IF X1<XL THEN L1=1:GOTO 1610 1600 IF X1>XR THEN R1=1 1610 IF Y1>YB THEN B1=1:GOTO 1630 1620 IF Y1<YT THEN T1=1 1630 IF X2<XL THEN L2=1:GOTO 1650 1640 IF X2>XR THEN R2=1 1650 IF Y2>YB THEN B2=1:GOTO 1670 1660 IF Y2<YT THEN T2=1 1670 IF L1+L2=2 OR R1+R2=2 OR T1+T2=2 OR B1+B2=2 THEN RETURN 1680 X3=X1:Y3=Y1:X4=X2:Y4=Y2:GOSUB 173 0 1690 L1=L2:R1=R2:T1=T2:B1=B2 1700 X1=XW:Y1=YW:X3=X2:Y3=Y2:X4=X1:Y4= Y1:GOSUB 1730 1710 IF X1<XL OR X1>XR OR Y1<YT OR Y1> YB OR XW<XL OR XW>XR OR YW<YT OR YW>YB THEN RETURN 1720 PLOT X1,Y1:DRAWTO XW,YW:POK=1:RET URN 1730 IF L1+T1+B1+R1=0 THEN XW=X3:YW=Y3 :RETURN 1740 IF L1 THEN XW=XL:YW=Y3+(Y4−Y3)*(X L−X3)/(X4−X3):X3=XW:Y3=YW:IF Y3>=YT AN D Y3<=YB THEN RETURN 1750 IF R1 THEN XW=XR:YW=Y3+(Y4−Y3)*(X R−X3)/(X4−X3):X3=XW:Y3=YW:IF Y3>=YT AN D Y3<=YB THEN RETURN 1760 IF B1 THEN YW=YB:XW=X3+(X4−X3)*(Y B−Y3)/(Y4−Y3):X3=XW:Y3=YW:IF X3>=XR AN D X3<=XL THEN RETURN 1770 IF T1 THEN YW=YT:XW=X3+(X4−X3)*(Y T−Y3)/(Y4−Y3):X3=XW:Y3=YW 1780 RETURN
A.N.A.L.O.G. ISSUE 19 / JUNE 1984 / PAGE 93
In issue 16 of ANALOG, I presented Solid States, a 3-D object plotting system. Readers were asked to send in their 3-D object data and modifications to the original program. Well, we’ve received a good deal of feedback, and I decided to print some of the more interesting items in lieu of my Basic Training column.
For those readers who do not have the Solid States program, you can still order issue 16 as a back issue. See the ad elsewhere in this issue.
If you have a copy of Solid States, get started typing in the data below!
Paul J. Goldernew, of Pittsburg, PA sent in our first Solid States graphic. It is a 3-D representation of the “A” in the ANALOG logo. Paul’s original data file also contained the entire ANALOG logo above the “A,” but it was just too big (157 points, 158 lines) for us to print. I did a little editing and cut it down to just the “A” itself, and came out with 100 points and 110 lines. Paul’s effort shows how curved lines can be shown with Solid States.
POINTS:100 POINT 1: 9 -7 6 POINT 2: 9 7 6 POINT 3: 8.75 7.75 6 POINT 4: 8.25 8.25 6 POINT 5: 7.75 8.75 6 POINT 6: 7 9 6 POINT 7: -5 9 6 POINT 8: -9 5 6 POINT 9: -9 -7 6 POINT 10: -8.75 -7.75 6 POINT 11: -8.25 -8.25 6 POINT 12: -7.75 -8.75 6 POINT 13: -7 -9 6 POINT 14: -3 -9 6 POINT 15: -2.25 -8.75 6 POINT 16: -1.5 -8 6 POINT 17: -1 -7 6 POINT 18: -1 -6 6 POINT 19: -1.25 -5 6 POINT 20: -2 -3 6 POINT 21: 3 -3 6 POINT 22: 4 -2.75 6 POINT 23: 4.5 -2 6 POINT 24: 4.75 -1 6 POINT 25: 4.5 0 6 POINT 26: 4 0.75 6 POINT 27: 3 1 6 POINT 28: -4 1 6 POINT 29: -5 2.5 6 POINT 30: -5 3.5 6 POINT 31: -4.5 4 6 POINT 32: -3.75 4.75 6 POINT 33: -3 5 6 POINT 34: 5 5 6 POINT 35: 5 -7 6 POINT 36: 5.25 -8 6 POINT 37: 6 -8.75 6 POINT 38: 7 -9 6 POINT 39: 8 -8.75 6 POINT 40: 8.75 -8 6 POINT 41: 7 -8.25 6 POINT 42: 6 -8 6 POINT 43: 5.5 -7 6 POINT 44: 5.75 -6 6 POINT 45: 6 -5.5 6 POINT 46: 7 -5.25 6 POINT 47: 8 -5.5 6 POINT 48: 8.5 -6 6 POINT 49: 8.75 -7 6 POINT 50: 8 -8 6 POINT 51: 9 -7 0 POINT 52: 9 7 0 POINT 53: 8.75 7.75 0 POINT 54: 8.25 8.25 0 POINT 55: 7.75 8.75 0 POINT 56: 7 9 0 POINT 57: -5 9 0 POINT 58: -9 5 0 POINT 59: -9 -7 0 POINT 60: -8.75 -7.75 0 POINT 61: -8.25 -8.25 0 POINT 62: -7.75 -8.75 0 POINT 63: -7 -9 0 POINT 64: -3 -9 0 POINT 65: -2.25 -8.75 0 POINT 66: -1.5 -8 0 POINT 67: -1 -7 0 POINT 68: -1 -6 0 POINT 69: -1.25 -5 0 POINT 70: -2 -3 0 POINT 71: 3 -3 0 POINT 72: 4 -2.75 0 POINT 73: 4.5 -2 0 POINT 74: 4.75 -1 0 POINT 75: 4.5 0 0 POINT 76: 4 0.75 0 POINT 77: 3 1 0 POINT 78: -4 1 0 POINT 79: -5 2.5 0 POINT 80: -5 3.5 0 POINT 81: -4.5 4 0 POINT 82: -3.75 4.75 0 POINT 83: -3 5 0 POINT 84: 5 5 0 POINT 85: 5 -7 0 POINT 86: 5.25 -8 0 POINT 87: 6 -8.75 0 POINT 88: 7 -9 0 POINT 89: 8 -8.75 0 POINT 90: 8.75 -8 0 POINT 91: 7 -8.25 0 POINT 92: 6 -8 0 POINT 93: 5.5 -7 0 POINT 94: 5.75 -6 0 POINT 95: 6 -5.5 0 POINT 96: 7 -5.25 0 POINT 97: 8 -5.5 0 POINT 98: 8.5 -6 0 POINT 99: 8.75 -7 0 POINT 100: 8 -8 0 LINES:110 LINE 1: 1 TO 2 LINE 2: 2 TO 3 LINE 3: 3 TO 4 LINE 4: 4 TO 5 LINE 5: 5 TO 6 LINE 6: 6 TO 7 LINE 7: 7 TO 8 LINE 8: 8 TO 9 LINE 9: 9 TO 10 LINE 10: 10 TO 11 LINE 11: 11 TO 12 LINE 12: 12 TO 13 LINE 13: 13 TO 14 LINE 14: 14 TO 15 LINE 15: 15 TO 16 LINE 16: 16 TO 17 LINE 17: 17 TO 18 LINE 18: 18 TO 19 LINE 19: 19 TO 20 LINE 20: 20 TO 21 LINE 21: 21 TO 22 LINE 22: 22 TO 23 LINE 23: 23 TO 24 LINE 24: 24 TO 25 LINE 25: 25 TO 26 LINE 26: 26 TO 27 LINE 27: 27 TO 28 LINE 28: 28 TO 29 LINE 29: 29 TO 30 LINE 30: 30 TO 31 LINE 31: 31 TO 32 LINE 32: 32 TO 33 LINE 33: 33 TO 34 LINE 34: 34 TO 35 LINE 35: 35 TO 36 LINE 36: 36 TO 37 LINE 37: 37 TO 38 LINE 38: 38 TO 39 LINE 39: 39 TO 40 LINE 40: 40 TO 1 LINE 41: 41 TO 42 LINE 42: 42 TO 43 LINE 43: 43 TO 44 LINE 44: 44 TO 45 LINE 45: 45 TO 46 LINE 46: 46 TO 47 LINE 47: 47 TO 48 LINE 48: 48 TO 49 LINE 49: 49 TO 50 LINE 50: 50 TO 41 LINE 51: 51 TO 52 LINE 52: 52 TO 53 LINE 53: 53 TO 54 LINE 54: 54 TO 55 LINE 55: 55 TO 56 LINE 56: 56 TO 57 LINE 57: 57 TO 58 LINE 58: 58 TO 59 LINE 59: 59 TO 60 LINE 60: 60 TO 61 LINE 61: 61 TO 62 LINE 62: 62 TO 63 LINE 63: 63 TO 64 LINE 64: 64 TO 65 LINE 65: 65 TO 66 LINE 66: 66 TO 67 LINE 67: 67 TO 68 LINE 68: 68 TO 69 LINE 69: 69 TO 70 LINE 70: 70 TO 71 LINE 71: 71 TO 72 LINE 72: 72 TO 73 LINE 73: 73 TO 74 LINE 74: 74 TO 75 LINE 75: 75 TO 76 LINE 76: 76 TO 77 LINE 77: 77 TO 78 LINE 78: 78 TO 79 LINE 79: 79 TO 80 LINE 80: 80 TO 81 LINE 81: 81 TO 82 LINE 82: 82 TO 83 LINE 83: 83 TO 84 LINE 84: 84 TO 85 LINE 85: 85 TO 86 LINE 86: 86 TO 87 LINE 87: 87 TO 88 LINE 88: 88 TO 89 LINE 89: 89 TO 90 LINE 90: 90 TO 51 LINE 91: 91 TO 92 LINE 92: 92 TO 93 LINE 93: 93 TO 94 LINE 94: 94 TO 95 LINE 95: 95 TO 96 LINE 96: 96 TO 97 LINE 97: 97 TO 98 LINE 98: 98 TO 99 LINE 99: 99 TO 100 LINE 100: 100 TO 91 LINE 101: 8 TO 58 LINE 102: 9 TO 59 LINE 103: 7 TO 57 LINE 104: 28 TO 78 LINE 105: 20 TO 70 LINE 106: 24 TO 74 LINE 107: 34 TO 84 LINE 108: 35 TO 85 LINE 109: 1 TO 51 LINE 110: 2 TO 52
OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 30,-50,100 0,6,0 1.5 OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- -12,-12,1 0,4.5,3 .2
Nick A. Brienza, of Columbia, MD, sent in a 3-D representation of a nuclear reactor cooling tower. Once again, this graphic shows how curved surfaces can be shown with Solid States. You’ll note that this object was defined using only 32 points, a pretty efficient job.
POINTS: 32 POINT 1: -2 0 8 POINT 2: -2.25 0 4 POINT 3: -2.75 0 2 POINT 4: -4 0 0 POINT 5: -1.3 1.3 8 POINT 6: -1.5 1.5 4 POINT 7: -1.9 1.9 2 POINT 8: -2.7 2.7 0 POINT 9: 0 2 8 POINT 10: 0 2.25 4 POINT 11: 0 2.75 2 POINT 12: 0 4 0 POINT 13: 1.3 1.3 8 POINT 14: 1.5 1.5 4 POINT 15: 1.9 1.9 2 POINT 16: 2.7 2.7 0 POINT 17: 2 0 8 POINT 18: 2.25 0 4 POINT 19: 2.75 0 2 POINT 20: 4 0 0 POINT 21: 1.3 -1.3 8 POINT 22: 1.5 -1.5 4 POINT 23: 1.9 -1.9 2 POINT 24: 2.7 -2.7 0 POINT 25: 0 -2 8 POINT 26: 0 -2.25 4 POINT 27: 0 -2.75 2 POINT 28: 0 -4 0 POINT 29: -1.3 -1.3 8 POINT 30: -1.5 -1.5 4 POINT 31: -1.9 -1.9 2 POINT 32: -2.7 -2.7 0 LINES:40 LINE 1: 1 TO 2 LINE 2: 2 TO 3 LINE 3: 3 TO 4 LINE 4: 5 TO 6 LINE 5: 6 TO 7 LINE 6: 7 TO 8 LINE 7: 9 TO 10 LINE 8: 10 TO 11 LINE 9: 11 TO 12 LINE 10: 13 TO 14 LINE 11: 14 TO 15 LINE 12: 15 TO 16 LINE 13: 17 TO 18 LINE 14: 18 TO 19 LINE 15: 19 TO 20 LINE 16: 21 TO 22 LINE 17: 22 TO 23 LINE 18: 23 TO 24 LINE 19: 25 TO 26 LINE 20: 26 TO 27 LINE 21: 27 TO 28 LINE 22: 29 TO 30 LINE 23: 30 TO 31 LINE 24: 31 TO 32 LINE 25: 1 TO 5 LINE 26: 5 TO 9 LINE 27: 9 TO 13 LINE 28: 13 TO 17 LINE 29: 17 TO 21 LINE 30: 21 TO 25 LINE 31: 25 TO 29 LINE 32: 29 TO 1 LINE 33: 4 TO 8 LINE 34: 8 TO 12 LINE 35: 12 TO 16 LINE 36: 16 TO 20 LINE 37: 20 TO 24 LINE 38: 24 TO 28 LINE 39: 28 TO 32 LINE 40: 32 TO 4
OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 45,45,45 0,0,4 2 OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 5,4,1 0,0,3 .2
Nick also asked if the 3-D views could be animated by showing a series of views in progression. Our next reader came up with a very nice program modification to do just that.
Larry L. Harris, of Poca, WV, has gone beyond the limitations of the original Solid States program, and has come up with a program modification that allows for automatic rotation of an object. Because of the memory requirements of this modification, 48k memory is suggested, and even then only fairly small objects can be rotated. Larry writes:
“This modification allows the viewer to rotate about the object in a circle on the X-Y plane with a Z coordinate the user inputs. The radius is determined by the input X and Y corrdinates of the observer’s viewpoint. The object appears to rotate on the screen. A two-page flip was added to give instant transition from one frame to the next. You do not see the object develop. It is drawn off-screen, then through a page flip you see the complete object. A machine-language routine is used to clear the GRAPHICS 8+16 screen.
“To add this feature to the existing Solid States program, simply add the lines in Listing 1 . Some are changes to existing lines.
“The program runs like the original until the zoom factor has been entered. Respond Y to “DO YOU WANT TO DO AN X-Y LOOP.” Then input the total number of degrees rotation and the number of degrees to increment for each drawing. Expect a screen flicker and some delay while initializing takes place and the first drawing is developed off-screen. Do not turn DMA off if you want to rotate around the object, or you won’t see it.
“The program will also operate as originally designed. Just answer N to the above prompt.”
I’d like to thank all the readers who have sent in their 3-D image data. Special thanks goes to Larry L. Harris for his rotation modification. If you’ve created a 3-D object and haven’t sent it in yet, what are you waiting for? Simply send it (on tape, disk or printout) to:
When we get another good batch of objects, we’ll run them in a future issue.
135 ? "* ROTATION: LARRY HARRIS *" 160 DIM R$(1),A$(5),F$(20),DMA$(1),O$(1),EG$(2),IN$(1):EG$=CHR$(27):EG$(2)=C HR$(7) 434 ? :? "DO YOU WANT TO DO AN X−Y LOO P";:INPUT R$:IF R$<>"Y" THEN 440 436 ? "HOW MANY DEG. TOTAL ROTATION";: INPUT AN2:AN2=(AN2/360)*6.28 438 ? "HOW MANY DEG. INC. ROTATION";:I NPUT AN3:AN3=(AN3/360)*6.28:GOSUB 2300 :REM SET UP PAGE FLIP 439 GOTO 2000 850 GOSUB 2200:SETCOLOR 2,0,0:COLOR 1: TRAP OFF 1035 IF FLAG THEN 2100 1040 IF PEEK(53279)=7 AND STRIG(0)=1 T HEN 1035 2000 FLAG=1:R=(OX^2+OY^2)^0.5:AN1=ATN( OY/OX):AN2=AN2+AN1 2100 AN1=AN1+AN3:OX=R*COS(AN1):OY=R*SI N(AN1) 2120 GOTO 440 2199 REM PAGE FLIP 2200 IF NOT FLAG THEN GRAPHICS 24:RET URN 2201 IF AN1>AN2 THEN FLAG=0 2202 XI=XI+1-2*(XI=2):XA=2-(XI=2) 2205 FOR S=40 TO 0 STEP −10:SOUND 0,S, 10,8:NEXT S 2210 POKE DL+4,DLL(XA):POKE DL+5,DLH(X A) 2220 POKE DL+100,DHL(XA):POKE DL+101,D HH(XA) 2230 POKE 88,DLL(XI):POKE 89,DLH(XI) 2240 ADS=DLL(XI)+256*DLH(XI):Z=USR(153 6,ADS) 2250 RETURN 2299 REM SET UP DATA FOR PAGE FLIP 2300 TRAP 2500:DIM DLL(2),DLH(2),DHL(2 ),DHH(2):X=0:RESTORE 2400 2310 READ DAT:IF DAT=-1 THEN 2330 2320 POKE 1536+X,DAT:X=X+1:GOTO 2310 2330 X=2:GOSUB 2350:X=1:POKE 106,PEEK( 106)−32:GOSUB 2350 2340 RETURN 2350 GRAPHICS 24:DLL(X)=PEEK(88):DLH(X )=PEEK(89):DL=PEEK(560)+256*PEEK(561): DHL(X)=PEEK(DL+100) 2360 DHH(X)=PEEK(DL+101):RETURN 2399 REM CLR DATA 2400 DATA 104,24,104,133,4,104,133,3,1 65,4,105,30,133,10,160,0,169,0,145,3,2 00,192,0,208,249,160,0 2410 DATA 230,4,165,4,197,10,208,237,9 6,−1 2500 TRAP OFF:GRAPHICS 24:RETURN
A.N.A.L.O.G. ISSUE 22 / SEPTEMBER 1984 / PAGE 79
Okay, Solid States fans, hang onto your hats! This issue, we’ve got program modifications and 3-D objects galore from yours truly and ANALOG readers around the world. Let’s get started, shall we?
Our first object was sent in by Vinette DePhillipe, of Hampton, Virginia. It’s called an “adjustable stop” and reminds me of my days back in good ol’ Glendale High School. My general drafting teacher, Ernie Belden (and heaven help you if you ever called him Ernie), was always coming up with weird objects for us to draw, and we never could figure out what they were used for. Here is the data for the adjustable stop:
POINTS:58 POINT 1: -13 -12 -9 POINT 2: -13 -12 -5 POINT 3: -13 -14 -5 POINT 4: -13 -14 4 POINT 5: -13 -12 4 POINT 6: -13 -12 8 POINT 7: 13 -12 8 POINT 8: 13 -12 4 POINT 9: 13 -14 4 POINT 10: 13 -14 -5 POINT 11: 13 -12 -5 POINT 12: 13 -12 -9 POINT 13: -13 -3 -9 POINT 14: 1 -3 -9 POINT 15: -1 -7 -9 POINT 16: 8 -7 -9 POINT 17: 6 -3 -9 POINT 18: 13 -3 -9 POINT 19: -1 8.25 4 POINT 20: 8 8.25 4 POINT 21: 6 10 2 POINT 22: 1 10 2 POINT 23: -13 10 2 POINT 24: -13 5 8 POINT 25: 13 5 8 POINT 26: 13 10 2 POINT 27: -6 -4 -9 POINT 28: -4.86 -4.23 -9 POINT 29: -3.88 -4.88 -9 POINT 30: -3.23 -5.86 -9 POINT 31: -3 -7 -9 POINT 32: -3.23 -8.14 -9 POINT 33: -3.88 -9.12 -9 POINT 34: -4.86 -9.77 -9 POINT 35: -6 -10 -9 POINT 36: -7.14 -9.77 -9 POINT 37: -8.12 -9.12 -9 POINT 38: -8.77 -8.14 -9 POINT 39: -9 -7 -9 POINT 40: -8.77 -5.86 -9 POINT 41: -8.12 -4.88 -9 POINT 42: -7.14 -4.23 -9 POINT 43: -6 -4 8 POINT 44: -4.86 -4.23 8 POINT 45: -3.88 -4.88 8 POINT 46: -3.23 -5.86 8 POINT 47: -3 -7 8 POINT 48: -3.23 -8.14 8 POINT 49: -3.88 -9.12 8 POINT 50: -4.86 -9.77 8 POINT 51: -6 -10 8 POINT 52: -7.14 -9.77 8 POINT 53: -8.12 -9.12 8 POINT 54: -8.77 -8.14 8 POINT 55: -9 -7 8 POINT 56: -8.77 -5.86 8 POINT 57: -8.12 -4.88 8 POINT 58: -7.14 -4.23 8 LINES:88 LINE 1: 1 TO 2 LINE 2: 2 TO 3 LINE 3: 3 TO 4 LINE 4: 4 TO 5 LINE 5: 5 TO 6 LINE 6: 6 TO 7 LINE 7: 7 TO 8 LINE 8: 8 TO 9 LINE 9: 9 TO 10 LINE 10: 10 TO 11 LINE 11: 11 TO 12 LINE 12: 12 TO 1 LINE 13: 2 TO 11 LINE 14: 3 TO 10 LINE 15: 4 TO 9 LINE 16: 5 TO 8 LINE 17: 6 TO 7 LINE 18: 1 TO 13 LINE 19: 13 TO 14 LINE 20: 14 TO 15 LINE 21: 15 TO 16 LINE 22: 16 TO 17 LINE 23: 17 TO 18 LINE 24: 18 TO 12 LINE 25: 15 TO 19 LINE 26: 19 TO 20 LINE 27: 20 TO 21 LINE 28: 21 TO 17 LINE 29: 20 TO 16 LINE 30: 14 TO 22 LINE 31: 19 TO 22 LINE 32: 13 TO 23 LINE 33: 23 TO 24 LINE 34: 24 TO 25 LINE 35: 25 TO 26 LINE 36: 26 TO 18 LINE 37: 26 TO 21 LINE 38: 23 TO 22 LINE 39: 24 TO 6 LINE 40: 25 TO 7 LINE 41: 27 TO 28 LINE 42: 28 TO 29 LINE 43: 29 TO 30 LINE 44: 30 TO 31 LINE 45: 31 TO 32 LINE 46: 32 TO 33 LINE 47: 33 TO 34 LINE 48: 34 TO 35 LINE 49: 35 TO 36 LINE 50: 36 TO 37 LINE 51: 37 TO 38 LINE 52: 38 TO 39 LINE 53: 39 TO 40 LINE 54: 40 TO 41 LINE 55: 41 TO 42 LINE 56: 42 TO 27 LINE 57: 27 TO 43 LINE 58: 43 TO 44 LINE 59: 44 TO 45 LINE 60: 45 TO 46 LINE 61: 46 TO 47 LINE 62: 47 TO 48 LINE 63: 48 TO 49 LINE 64: 49 TO 50 LINE 65: 50 TO 51 LINE 66: 51 TO 52 LINE 67: 52 TO 53 LINE 68: 53 TO 54 LINE 69: 55 TO 54 LINE 70: 55 TO 56 LINE 71: 56 TO 57 LINE 72: 57 TO 58 LINE 73: 58 TO 43 LINE 74: 28 TO 44 LINE 75: 29 TO 45 LINE 76: 30 TO 46 LINE 77: 31 TO 47 LINE 78: 32 TO 48 LINE 79: 33 TO 49 LINE 80: 34 TO 50 LINE 81: 35 TO 51 LINE 82: 36 TO 52 LINE 83: 37 TO 53 LINE 84: 38 TO 54 LINE 85: 39 TO 55 LINE 86: 40 TO 56 LINE 87: 41 TO 57 LINE 88: 42 TO 58
ADJUSTABLE STOP VIEW DATA: OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 60,-60,40 0,0,0 1
This got me thinking about orthographic projection (the drawing of an object from three views without perspective) and how Solid States can simulate the process.
Solid States draws objects with true perspective. The closer you get to an object, the more exaggerated the perspective becomes. Theoretically, if you could look at an object from an infinite distance through a large telescope, you would see the object without the perspective distortion.
We can produce orthographic views with Solid States by placing our viewpoint very far from the object and using a large ZOOM factor. The orthographic views of the adjustable stop are shown below, along with the coordinate and ZOOM information.
TOP VIEW -------- OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 0,0,12000 0,0,0 132 FRONT VIEW ---------- OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 0,12000,0 0,0,0 132 SIDE VIEW --------- OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 12000,0,0 0,0,0 132
Conversely, if we place our viewpoint very close to the object and use a very small ZOOM factor, we will see the object severely distorted by perspective. Try the following view with the adjustable stop, and you’ll see what I mean.
ADJ STOP EXAGGERATED PERSPECTIVE OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 15,0,0 0,0,0 .04
Those readers interested in mechanical drawing applications of Solid States should find this information very useful. Mr. Belden would be proud.
Robert Ashcraft of Amarillo, Texas, sent in the data for a TIE fighter, the famous Imperial craft from the Star Wars movies.
Here’s the data for the TIE fighter:
POINTS:84 POINT 1: 5 -2 6 POINT 2: 5 2 6 POINT 3: 5 4 0 POINT 4: 5 2 -6 POINT 5: 5 -2 -6 POINT 6: 5 -4 0 POINT 7: -5 -2 6 POINT 8: -5 2 6 POINT 9: -5 4 0 POINT 10: -5 2 -6 POINT 11: -5 -2 -6 POINT 12: -5 -4 0 POINT 13: -1 -2 1 POINT 14: 1 -2 1 POINT 15: 1 -2 -1 POINT 16: -1 -2 -1 POINT 17: -1 1 2 POINT 18: 1 1 2 POINT 19: 1 -1 2 POINT 20: -1 -1 2 POINT 21: -1 2 -1 POINT 22: 1 2 -1 POINT 23: 1 2 1 POINT 24: -1 2 1 POINT 25: -1 -1 -2 POINT 26: 1 -1 -2 POINT 27: 1 1 -2 POINT 28: -1 1 -2 POINT 29: -2 1 1 POINT 30: -2 -1 1 POINT 31: -2 -1 -1 POINT 32: -2 1 -1 POINT 33: 2 1 -1 POINT 34: 2 -1 -1 POINT 35: 2 -1 1 POINT 36: 2 1 1 POINT 37: 2 0 1 POINT 38: 2 1 0 POINT 39: 2 0 -1 POINT 40: 2 -1 0 POINT 41: 3 0 1 POINT 42: 3 1 0 POINT 43: 3 0 -1 POINT 44: 3 -1 0 POINT 45: -2 0 1 POINT 46: -2 1 0 POINT 47: -2 0 -1 POINT 48: -2 -1 0 POINT 49: -3 0 1 POINT 50: -3 1 0 POINT 51: -3 0 -1 POINT 52: -3 -1 0 POINT 53: 3 0 0.67 POINT 54: 3 0.67 0 POINT 55: 3 0 -0.67 POINT 56: 3 -0.67 0 POINT 57: 4 0 0.67 POINT 58: 4 0.67 0 POINT 59: 4 0 -0.67 POINT 60: 4 -0.67 0 POINT 61: -3 0 0.67 POINT 62: -3 0.67 0 POINT 63: -3 0 -0.67 POINT 64: -3 -0.67 0 POINT 65: -4 0 0.67 POINT 66: -4 0.67 0 POINT 67: -4 0 -0.67 POINT 68: -4 -0.67 0 POINT 69: 4 0 0.33 POINT 70: 4 0.33 0 POINT 71: 4 0 -0.33 POINT 72: 4 -0.33 0 POINT 73: 5 0 0.33 POINT 74: 5 0.33 0 POINT 75: 5 0 -0.33 POINT 76: 5 -0.33 0 POINT 77: -4 0 0.33 POINT 78: -4 0.33 0 POINT 79: -4 0 -0.33 POINT 80: -4 -0.33 0 POINT 81: -5 0 0.33 POINT 82: -5 0.33 0 POINT 83: -5 0 -0.33 POINT 84: -5 -0.33 0 LINES:138 LINE 1: 1 TO 2 LINE 2: 2 TO 3 LINE 3: 3 TO 4 LINE 4: 4 TO 5 LINE 5: 5 TO 6 LINE 6: 6 TO 1 LINE 7: 1 TO 4 LINE 8: 2 TO 5 LINE 9: 3 TO 6 LINE 10: 7 TO 8 LINE 11: 8 TO 9 LINE 12: 9 TO 10 LINE 13: 10 TO 11 LINE 14: 11 TO 12 LINE 15: 12 TO 7 LINE 16: 7 TO 10 LINE 17: 8 TO 11 LINE 18: 9 TO 12 LINE 19: 13 TO 20 LINE 20: 20 TO 17 LINE 21: 17 TO 24 LINE 22: 24 TO 21 LINE 23: 21 TO 28 LINE 24: 28 TO 25 LINE 25: 25 TO 16 LINE 26: 16 TO 13 LINE 27: 14 TO 19 LINE 28: 19 TO 18 LINE 29: 18 TO 23 LINE 30: 23 TO 22 LINE 31: 22 TO 27 LINE 32: 27 TO 26 LINE 33: 26 TO 15 LINE 34: 15 TO 14 LINE 35: 13 TO 14 LINE 36: 14 TO 35 LINE 37: 35 TO 36 LINE 38: 36 TO 23 LINE 39: 23 TO 24 LINE 40: 24 TO 29 LINE 41: 29 TO 30 LINE 42: 30 TO 13 LINE 43: 16 TO 15 LINE 44: 15 TO 34 LINE 45: 34 TO 33 LINE 46: 33 TO 22 LINE 47: 22 TO 21 LINE 48: 21 TO 32 LINE 49: 32 TO 31 LINE 50: 31 TO 16 LINE 51: 17 TO 18 LINE 52: 18 TO 36 LINE 53: 36 TO 33 LINE 54: 33 TO 27 LINE 55: 27 TO 28 LINE 56: 28 TO 32 LINE 57: 32 TO 29 LINE 58: 29 TO 17 LINE 59: 20 TO 19 LINE 60: 19 TO 35 LINE 61: 35 TO 34 LINE 62: 34 TO 26 LINE 63: 26 TO 25 LINE 64: 25 TO 31 LINE 65: 31 TO 30 LINE 66: 30 TO 20 LINE 67: 37 TO 38 LINE 68: 38 TO 39 LINE 69: 39 TO 40 LINE 70: 40 TO 37 LINE 71: 41 TO 42 LINE 72: 42 TO 43 LINE 73: 43 TO 44 LINE 74: 44 TO 41 LINE 75: 37 TO 41 LINE 76: 38 TO 42 LINE 77: 39 TO 43 LINE 78: 40 TO 44 LINE 79: 45 TO 46 LINE 80: 46 TO 47 LINE 81: 47 TO 48 LINE 82: 48 TO 45 LINE 83: 49 TO 50 LINE 84: 50 TO 51 LINE 85: 51 TO 52 LINE 86: 52 TO 49 LINE 87: 45 TO 49 LINE 88: 46 TO 50 LINE 89: 47 TO 51 LINE 90: 48 TO 52 LINE 91: 53 TO 54 LINE 92: 54 TO 55 LINE 93: 55 TO 56 LINE 94: 56 TO 53 LINE 95: 57 TO 58 LINE 96: 58 TO 59 LINE 97: 59 TO 60 LINE 98: 60 TO 57 LINE 99: 53 TO 57 LINE 100: 54 TO 58 LINE 101: 55 TO 59 LINE 102: 56 TO 60 LINE 103: 61 TO 62 LINE 104: 62 TO 63 LINE 105: 63 TO 64 LINE 106: 64 TO 61 LINE 107: 65 TO 66 LINE 108: 66 TO 67 LINE 109: 67 TO 68 LINE 110: 68 TO 65 LINE 111: 61 TO 65 LINE 112: 62 TO 66 LINE 113: 63 TO 67 LINE 114: 64 TO 68 LINE 115: 69 TO 70 LINE 116: 70 TO 71 LINE 117: 71 TO 72 LINE 118: 72 TO 69 LINE 119: 73 TO 74 LINE 120: 74 TO 75 LINE 121: 75 TO 76 LINE 122: 76 TO 73 LINE 123: 69 TO 73 LINE 124: 70 TO 74 LINE 125: 71 TO 75 LINE 126: 72 TO 76 LINE 127: 77 TO 78 LINE 128: 78 TO 79 LINE 129: 79 TO 80 LINE 130: 80 TO 77 LINE 131: 81 TO 82 LINE 132: 82 TO 83 LINE 133: 83 TO 84 LINE 134: 84 TO 81 LINE 135: 77 TO 81 LINE 136: 78 TO 82 LINE 137: 79 TO 83 LINE 138: 80 TO 84
TIE FIGHTER VIEW DATA: OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 100,173,50 0,0,0 6
Interestingly, a few days after receiving the TIE fighter, I got a letter from Jason Leigh, of Kowloon, Hong Kong. He sent in — you guessed it — a 3-D X-Wing fighter, the spacecraft used by the rebel forces in the Star Wars films!
Here’s the X-Wing data:
POINTS:94 POINT 1: 0 26 11 POINT 2: 0 22 11 POINT 3: 7 21 12 POINT 4: 7 27 12 POINT 5: 7 26 11 POINT 6: 7 22 11 POINT 7: 37 28 13 POINT 8: 37 32 13 POINT 9: 40 32 13 POINT 10: 40 43 12 POINT 11: 40 44 12 POINT 12: 22 44 11 POINT 13: 22 46 11 POINT 14: 40 46 12 POINT 15: 40 47 12 POINT 16: 46 47 12 POINT 17: 46 43 12 POINT 18: 50 32 13 POINT 19: 55 31 11 POINT 20: 55 32 12 POINT 21: 60 32 12 POINT 22: 60 28 12 POINT 23: 55 28 12 POINT 24: 55 29 11 POINT 25: 50 28 13 POINT 26: 50 20 13 POINT 27: 55 19 11 POINT 28: 55 20 12 POINT 29: 60 20 12 POINT 30: 60 16 12 POINT 31: 55 16 12 POINT 32: 55 17 11 POINT 33: 50 16 13 POINT 34: 46 5 12 POINT 35: 46 1 12 POINT 36: 40 1 12 POINT 37: 40 2 12 POINT 38: 22 2 11 POINT 39: 22 4 11 POINT 40: 40 4 12 POINT 41: 40 5 12 POINT 42: 40 16 13 POINT 43: 37 16 13 POINT 44: 37 20 13 POINT 45: 24 23 12 POINT 46: 24 25 12 POINT 47: 33 26 15 POINT 48: 33 22 15 POINT 49: 36 25 13 POINT 50: 36 23 13 POINT 51: 0 26 9 POINT 52: 0 22 9 POINT 53: 7 21 8 POINT 54: 7 27 8 POINT 55: 7 26 9 POINT 56: 7 22 9 POINT 57: 37 28 6 POINT 58: 37 32 6 POINT 59: 40 43 8 POINT 60: 40 44 8 POINT 61: 22 44 9 POINT 62: 22 46 9 POINT 63: 40 46 8 POINT 64: 40 47 8 POINT 65: 46 47 8 POINT 66: 46 43 8 POINT 67: 50 32 6 POINT 68: 55 31 9 POINT 69: 55 32 8 POINT 70: 60 32 8 POINT 71: 60 28 8 POINT 72: 55 28 8 POINT 73: 55 29 9 POINT 74: 50 28 6 POINT 75: 50 20 6 POINT 76: 55 19 9 POINT 77: 55 20 8 POINT 78: 60 20 8 POINT 79: 60 16 8 POINT 80: 55 16 8 POINT 81: 55 17 9 POINT 82: 50 16 6 POINT 83: 46 5 8 POINT 84: 46 1 8 POINT 85: 40 1 8 POINT 86: 40 2 8 POINT 87: 22 2 9 POINT 88: 22 4 9 POINT 89: 40 4 8 POINT 90: 40 5 8 POINT 91: 37 16 6 POINT 92: 37 20 6 POINT 93: 33 26 13 POINT 94: 33 22 13 LINES:161 LINE 1: 1 TO 51 LINE 2: 2 TO 52 LINE 3: 3 TO 53 LINE 4: 4 TO 54 LINE 5: 5 TO 55 LINE 6: 6 TO 56 LINE 7: 7 TO 57 LINE 8: 8 TO 58 LINE 9: 9 TO 10 LINE 10: 10 TO 59 LINE 11: 11 TO 60 LINE 12: 12 TO 61 LINE 13: 13 TO 62 LINE 14: 14 TO 63 LINE 15: 15 TO 64 LINE 16: 16 TO 65 LINE 17: 17 TO 66 LINE 18: 18 TO 67 LINE 19: 19 TO 68 LINE 20: 20 TO 69 LINE 21: 21 TO 70 LINE 22: 22 TO 71 LINE 23: 23 TO 72 LINE 24: 24 TO 73 LINE 25: 25 TO 74 LINE 26: 26 TO 75 LINE 27: 27 TO 76 LINE 28: 28 TO 77 LINE 29: 29 TO 78 LINE 30: 30 TO 79 LINE 31: 31 TO 80 LINE 32: 32 TO 81 LINE 33: 33 TO 82 LINE 34: 34 TO 83 LINE 35: 35 TO 84 LINE 36: 36 TO 85 LINE 37: 37 TO 86 LINE 38: 38 TO 87 LINE 39: 39 TO 88 LINE 40: 40 TO 89 LINE 41: 41 TO 90 LINE 42: 42 TO 41 LINE 43: 43 TO 91 LINE 44: 44 TO 92 LINE 45: 10 TO 17 LINE 46: 17 TO 18 LINE 47: 33 TO 34 LINE 48: 34 TO 41 LINE 49: 12 TO 13 LINE 50: 13 TO 14 LINE 51: 14 TO 11 LINE 52: 11 TO 12 LINE 53: 61 TO 62 LINE 54: 62 TO 63 LINE 55: 63 TO 60 LINE 56: 60 TO 61 LINE 57: 10 TO 15 LINE 58: 15 TO 16 LINE 59: 16 TO 17 LINE 60: 17 TO 10 LINE 61: 59 TO 64 LINE 62: 64 TO 65 LINE 63: 65 TO 66 LINE 64: 66 TO 59 LINE 65: 38 TO 39 LINE 66: 39 TO 40 LINE 67: 40 TO 37 LINE 68: 37 TO 38 LINE 69: 87 TO 88 LINE 70: 88 TO 89 LINE 71: 89 TO 86 LINE 72: 86 TO 87 LINE 73: 41 TO 34 LINE 74: 34 TO 35 LINE 75: 35 TO 36 LINE 76: 36 TO 41 LINE 77: 90 TO 83 LINE 78: 83 TO 84 LINE 79: 84 TO 85 LINE 80: 85 TO 90 LINE 81: 46 TO 45 LINE 82: 46 TO 47 LINE 83: 47 TO 49 LINE 84: 49 TO 50 LINE 85: 50 TO 48 LINE 86: 48 TO 45 LINE 87: 45 TO 94 LINE 88: 94 TO 50 LINE 89: 46 TO 93 LINE 90: 93 TO 49 LINE 91: 47 TO 48 LINE 92: 47 TO 93 LINE 93: 48 TO 94 LINE 94: 1 TO 2 LINE 95: 2 TO 3 LINE 96: 3 TO 4 LINE 97: 4 TO 1 LINE 98: 51 TO 52 LINE 99: 52 TO 53 LINE 100: 53 TO 54 LINE 101: 54 TO 51 LINE 102: 5 TO 6 LINE 103: 6 TO 44 LINE 104: 44 TO 26 LINE 105: 26 TO 25 LINE 106: 25 TO 7 LINE 107: 7 TO 5 LINE 108: 55 TO 56 LINE 109: 56 TO 92 LINE 110: 92 TO 75 LINE 111: 75 TO 74 LINE 112: 74 TO 57 LINE 113: 57 TO 55 LINE 114: 25 TO 18 LINE 115: 18 TO 8 LINE 116: 8 TO 7 LINE 117: 7 TO 25 LINE 118: 74 TO 67 LINE 119: 67 TO 58 LINE 120: 58 TO 57 LINE 121: 57 TO 74 LINE 122: 44 TO 43 LINE 123: 43 TO 33 LINE 124: 33 TO 26 LINE 125: 26 TO 44 LINE 126: 92 TO 91 LINE 127: 82 TO 75 LINE 128: 75 TO 92 LINE 129: 18 TO 19 LINE 130: 19 TO 20 LINE 131: 20 TO 21 LINE 132: 21 TO 22 LINE 133: 22 TO 23 LINE 134: 23 TO 24 LINE 135: 24 TO 25 LINE 136: 25 TO 18 LINE 137: 67 TO 68 LINE 138: 68 TO 69 LINE 139: 69 TO 70 LINE 140: 70 TO 71 LINE 141: 71 TO 72 LINE 142: 72 TO 73 LINE 143: 73 TO 74 LINE 144: 74 TO 67 LINE 145: 26 TO 33 LINE 146: 33 TO 32 LINE 147: 32 TO 31 LINE 148: 31 TO 30 LINE 149: 30 TO 29 LINE 150: 29 TO 28 LINE 151: 28 TO 27 LINE 152: 27 TO 26 LINE 153: 75 TO 82 LINE 154: 82 TO 81 LINE 155: 81 TO 80 LINE 156: 80 TO 79 LINE 157: 79 TO 78 LINE 158: 78 TO 77 LINE 159: 77 TO 76 LINE 160: 76 TO 75 LINE 161: 91 TO 82
X-WING VIEW DATA: OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 0,0,100 30,25,5 .7Now you can stage your own space battles using Solid States and your Atari computer!
Our last object this time out is an Atari 800 computer, generated by Robert Groves, of Columbus, Ohio. This graphic has a great deal of detail, and I cringe just thinking of all the time Robert must have spent getting it right.
Here’s the data for the Atari 800:
POINTS:112 POINT 1: 4 3 1.5 POINT 2: 4 -3 0 POINT 3: -4 -3 0 POINT 4: -4 3 1.5 POINT 5: -3 3 1.5 POINT 6: -3 0 1.5 POINT 7: -3.6 -0.5 0.9 POINT 8: -3.8 -2.8 0.3 POINT 9: 3.8 -2.8 0.3 POINT 10: 3.6 -0.5 0.9 POINT 11: 3 0 1.5 POINT 12: 3 3 1.5 POINT 13: 2.8 3 1.5 POINT 14: 2.8 1 1.5 POINT 15: 2.8 0 1.5 POINT 16: -2.8 0 1.5 POINT 17: -2.8 1 1.5 POINT 18: -2.8 3 1.5 POINT 19: -2.8 -0.5 0.9 POINT 20: -0.6 -0.5 0.9 POINT 21: 0.6 -0.5 0.9 POINT 22: 2.8 -0.5 0.9 POINT 23: 0.6 -0.4 1 POINT 24: -0.6 -0.4 1 POINT 25: 0.6 -0.4 0.8 POINT 26: -0.6 -0.4 0.8 POINT 27: 0.6 -0.6 0.8 POINT 28: -0.6 -0.6 0.8 POINT 29: -3 -0.8 1 POINT 30: 2 -0.8 1 POINT 31: 2.7 -0.8 1 POINT 32: 3.2 -0.8 1 POINT 33: -3 -1 1 POINT 34: 2 -1 1 POINT 35: 2.7 -1 1 POINT 36: 3.2 -1 1 POINT 37: -3 -1.1 0.9 POINT 38: 2 -1.1 0.9 POINT 39: 2.7 -1.1 0.9 POINT 40: 3.2 -1.1 0.9 POINT 41: -3 -1.3 0.9 POINT 42: 2 -1.3 0.9 POINT 43: 2.7 -1.3 0.9 POINT 44: 3.2 -1.3 0.9 POINT 45: -2.8 -1.4 0.8 POINT 46: 1.8 -1.4 0.8 POINT 47: 2.7 -1.4 0.8 POINT 48: 3.2 -1.4 0.8 POINT 49: 3.2 -1.6 0.8 POINT 50: 2.7 -1.6 0.8 POINT 51: 1.8 -1.6 0.8 POINT 52: -2.8 -1.6 0.8 POINT 53: -2.8 -1.7 0.7 POINT 54: 1.8 -1.7 0.7 POINT 55: 2.7 -1.7 0.7 POINT 56: 3.2 -1.7 0.7 POINT 57: 3.2 -1.9 0.7 POINT 58: 2.7 -1.9 0.7 POINT 59: 1.8 -1.9 0.7 POINT 60: -2.8 -1.9 0.7 POINT 61: -2.4 -2 0.6 POINT 62: 1.4 -2 0.6 POINT 63: 2.7 -2 0.5 POINT 64: 3.2 -2 0.5 POINT 65: 3.2 -2.2 0.5 POINT 66: 2.7 -2.2 0.5 POINT 67: 1.4 -2.2 0.6 POINT 68: -2.4 -2.2 0.6 POINT 69: 0 0 0 POINT 70: 4 -0.8 0 POINT 71: 4 -0.8 0.2 POINT 72: 4 2.7 0.2 POINT 73: 4 2.7 0 POINT 74: 3.9 2.7 -0.2 POINT 75: 3.9 -0.8 -0.2 POINT 76: 4 3 0 POINT 77: 3.9 3 -0.3 POINT 78: 3.9 3 -0.7 POINT 79: 3.6 -0.4 -0.7 POINT 80: 3.2 -2 -0.7 POINT 81: 3.6 -2.5 -0.3 POINT 82: 3.9 -2.8 -0.3 POINT 83: 3.9 -0.4 -0.3 POINT 84: 2.3 -0.4 -0.7 POINT 85: 2.3 -0.4 -0.3 POINT 86: 2.3 3 -0.7 POINT 87: 1.7 -2.7 -0.7 POINT 88: -1.7 -2.7 -0.7 POINT 89: -3.2 -2 -0.7 POINT 90: -3.6 -2.5 -0.3 POINT 91: -2 -2.8 -0.3 POINT 92: 2 -2.8 -0.3 POINT 93: 2 -2.7 -0.1 POINT 94: -2 -2.7 -0.1 POINT 95: -1.7 -2.15 -0.7 POINT 96: 1.7 -2.15 -0.7 POINT 97: 1.7 -2.5 -0.3 POINT 98: -1.7 -2.5 -0.3 POINT 99: -3.9 -2.8 -0.3 POINT 100: -2 -2.7 -0.3 POINT 101: -2 -2.7 -0.1 POINT 102: 2 -2.7 -0.1 POINT 103: 2 -2.7 -0.3 POINT 104: 2.3 3 -0.3 POINT 105: -3.9 3 -0.3 POINT 106: -4 3 0 POINT 107: -2.3 3 -0.3 POINT 108: -2.3 3 -0.7 POINT 109: -2.3 -0.4 -0.7 POINT 110: -2.3 -0.4 -0.3 POINT 111: -3.6 -0.4 -0.7 POINT 112: -3.9 -0.4 -0.3 LINES:122 LINE 1: 1 TO 2 LINE 2: 2 TO 3 LINE 3: 3 TO 4 LINE 4: 4 TO 1 LINE 5: 5 TO 6 LINE 6: 6 TO 7 LINE 7: 7 TO 8 LINE 8: 8 TO 9 LINE 9: 9 TO 10 LINE 10: 10 TO 11 LINE 11: 11 TO 12 LINE 12: 6 TO 6 LINE 13: 6 TO 11 LINE 14: 7 TO 10 LINE 15: 13 TO 15 LINE 16: 16 TO 18 LINE 17: 14 TO 17 LINE 18: 19 TO 20 LINE 19: 21 TO 22 LINE 20: 23 TO 25 LINE 21: 25 TO 27 LINE 22: 80 TO 89 LINE 23: 24 TO 26 LINE 24: 26 TO 28 LINE 25: 27 TO 28 LINE 26: 24 TO 23 LINE 27: 29 TO 30 LINE 28: 31 TO 32 LINE 29: 31 TO 35 LINE 30: 35 TO 36 LINE 31: 36 TO 32 LINE 32: 30 TO 34 LINE 33: 33 TO 34 LINE 34: 33 TO 29 LINE 35: 37 TO 38 LINE 36: 38 TO 42 LINE 37: 42 TO 41 LINE 38: 41 TO 37 LINE 39: 39 TO 40 LINE 40: 40 TO 44 LINE 41: 44 TO 43 LINE 42: 43 TO 39 LINE 43: 45 TO 46 LINE 44: 47 TO 48 LINE 45: 48 TO 49 LINE 46: 49 TO 50 LINE 47: 50 TO 47 LINE 48: 46 TO 51 LINE 49: 51 TO 52 LINE 50: 52 TO 45 LINE 51: 53 TO 54 LINE 52: 55 TO 56 LINE 53: 56 TO 57 LINE 54: 57 TO 58 LINE 55: 58 TO 55 LINE 56: 59 TO 54 LINE 57: 59 TO 60 LINE 58: 60 TO 53 LINE 59: 61 TO 62 LINE 60: 63 TO 64 LINE 61: 64 TO 65 LINE 62: 65 TO 66 LINE 63: 66 TO 63 LINE 64: 62 TO 67 LINE 65: 67 TO 68 LINE 66: 68 TO 61 LINE 67: 73 TO 76 LINE 68: 71 TO 72 LINE 69: 72 TO 74 LINE 70: 74 TO 75 LINE 71: 75 TO 71 LINE 72: 77 TO 82 LINE 73: 3 TO 8 LINE 74: 84 TO 86 LINE 75: 80 TO 81 LINE 76: 79 TO 83 LINE 77: 84 TO 85 LINE 78: 85 TO 83 LINE 79: 84 TO 79 LINE 80: 79 TO 80 LINE 81: 85 TO 104 LINE 82: 82 TO 92 LINE 83: 96 TO 97 LINE 84: 97 TO 81 LINE 85: 97 TO 92 LINE 86: 92 TO 87 LINE 87: 92 TO 93 LINE 88: 93 TO 94 LINE 89: 94 TO 91 LINE 90: 91 TO 88 LINE 91: 88 TO 87 LINE 92: 88 TO 95 LINE 93: 95 TO 98 LINE 94: 98 TO 91 LINE 95: 91 TO 99 LINE 96: 90 TO 89 LINE 97: 90 TO 98 LINE 98: 87 TO 96 LINE 99: 3 TO 106 LINE 100: 106 TO 105 LINE 101: 107 TO 108 LINE 102: 2 TO 82 LINE 103: 108 TO 109 LINE 104: 109 TO 110 LINE 105: 110 TO 112 LINE 106: 112 TO 111 LINE 107: 111 TO 109 LINE 108: 111 TO 89 LINE 109: 99 TO 105 LINE 110: 77 TO 76 LINE 111: 104 TO 86 LINE 112: 86 TO 108 LINE 113: 107 TO 108 LINE 114: 77 TO 105 LINE 115: 76 TO 1 LINE 116: 106 TO 4 LINE 117: 107 TO 110 LINE 118: 101 TO 102 LINE 119: 103 TO 102 LINE 120: 3 TO 99 LINE 121: 9 TO 2 LINE 122: 70 TO 2
800 VIEW DATA: OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- -12,-12,12 0,0,0 1 800 TOP VIEW DATA: OBSERVER LOC. LOOKED AT ZOOM ------------- --------- ---- 0,0,1500 0,0,0 100
Well, that just about does it for 3-D images this month. We received several others, some of which were just too large to print. If you’ve got a 3-D object you’d like to send, try to keep it under 250 points and lines total.
Vinette DePhillipe and Ted Talay, of Hampton, Virginia, submitted this short program modification which traps errors in the initial data entry process. This eliminates the annoyance of having to re-enter a whole object’s data when an entry error is made.
270 FOR I=1 TO PS:? "POINT ";I 272 TRAP 272: INPUT Q1,Q2,Q3 274 X(I)=Q1:Y(I)=Q2:Z(I)=Q3:NEXT I 310 FOR I=1 TO L5:? :? "LINE ";I 312 ? "FROM POINT";:TRAP 312:INPUT Q1:LN(I,0)=Q1 314 ? " TO POINT";:TRAP 314:INPUT Q1: LN(I,1)=Q1 316 NEXT I
Here’s a quick modification I wrote to give Solid States users with the 1020 Plotter larger plots. It turns the output sideways, giving 6.25 X 3.75 inch plots. No special action is needed.
210 TRAP 190:CL0SE #3:OPEN #3,8,0,"P":? #3;EG$;"*H*I*M0,−820*I":PC=0 860 IF O$="Y" THEN ? #3;"M0,0*D480,0*D 480,800*D0,800*D0,0" 1000 ? #3;"M";(191−Y1)*2.5;",";(319−X1 )*2.5;"*D";(191−YW)*2.5;",";(319−XW)*2 .5:PC=PC+1 1020 IF PC>0 THEN ? #3;"H*M0,−820*I":P C=0
I’ve received quite a few letters from readers wanting hard-copy output on their Epson, Gemini 10X and C.Itoh printers. You asked for it, and you’ve got it!
Here’s the code for Epson-compatible printers (such as Gemini 10X):
1045 IF PEEK(53279)=3 THEN GOSUB 3000:GOTO 1840 3000 REM *** EPSON GRAPHICS DUMP *** 3010 SCREEN=PEEK(88)+PEEK(89)*256:TRAP 3040:CLOSE #1:OPEN #1,8,0,"P:":? #1;" ^A";CHR$(8) 3020 FOR I=SCREEN TO SCREEN+39:? #1;"^ K";CHR$(192);CHR$(0); 3030 FOR J=I+7640 TO I STEP −40:PUT #1 ,PEEK(J):NEXT J:? #1:NEXT I:CLOSE #1 3040 RETURN
And here’s the code for C.Itoh printers:
1045 IF PEEK(53279)=3 THEN GOSUB 3000:GOTO 1040 3000 REM *** C.ITOH GRAPHICS DUMP *** 3010 SCREEN=PEEK(88)+PEEK(89)*256:TRAP 3040:CLOSE #1:OPEN #1,8,0,"P:":? #1;" ^T16" 3020 FOR I=SCREEN+39 TO SCREEN STEP −1 :? #1;"^S0192"; 3030 FOR J=I TO 1+7640 STEP 40:PUT #1, PEEK(J):NEXT J:? #1:NEXT I:CLOSE #1 3040 RETURN
After Solid States has completed the picture on the screen, you’ll hear a short tone. Pressing OPTION will print the screen on your printer (the process takes about 2.5 minutes). It’s as easy as that! If you don’t want to print the screen, pressing START will return you to the coordinate entry point, just like the original version of the program.
If your printer isn’t ready, the program will go back and wait for the START or OPTION keys again. Simply ready your printer and press OPTION to print the screen.
Remember, your printer must be equipped with graphics ability in order for the screen-print function to work.
As long as I receive your 3-D object data and suggestions for modifications, we’ll be running Solid States updates like this indefinitely.
One thing I’d like to do is equip Solid States with hidden-line removal, so the drawings won’t be cluttered with lines that should be invisible. If you know of a good hidden-line removal algorithm, please let me know. I’m checking my resources, but, so far, I haven’t found anything specific on the process. If you want to see your name in lights (well, at least, in the pages of ANALOG), send me anything you can find!
I’m also working on converting Solid States to a 100% machine language program for much faster operation. I’m going to wait until I find a hidden-line algorithm before I do this, though.
Keep those 3-D objects coming! Send them to:
If you don’t have the Solid States program, ANALOG issue 16 is still available as a back issue. See the ad elsewhere in this issue.