home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-07-10 | 1.3 KB | 55 lines |
- 10 ' 3d hidden line plot routine by Jim Reider, Atlanta, Ga.
- 20 PI=3.14159
- 30 X1=0:Y1=0
- 40 BS=0.01
- 50 B1=1-2*LOG(1)/(LOG(1)-LOG(BS))
- 60 B2=2/(LOG(1)-LOG(BS))
- 70 INPUT"WHICH FUNCTION (0 OR 1)";A
- 80 INPUT"RANGE (Default=2) ";K : IF K=0 THEN K=2
- 90 INPUT"GRID (Default=16) ";G : IF G=0 THEN G=16
- 100 INPUT"RESOL (Default=2) ";R : IF R=0 THEN R=2
- 110 X2=K*PI
- 120 Y2=K*PI
- 130 R2=2*R : M1=G*R2 : Q1=M1-R : Q2=M1+R : GR=G*R
- 140 DIM H(M1)
- 150 FOR I=0 TO M1 : H(I)=0 : NEXT I
- 160 K1=300/M1
- 170 K2=96
- 180 K3=96/(SQR(3)*M1)
- 190 K4=48/SQR(3)
- 200 PRINT CHR$(12) : SCREEN 2
- 210 GOSUB 220 : GOTO 540
- 220 FOR V1=-Q1 TO Q1 STEP R2
- 230 S1=-SGN(V1)
- 240 HM=Q2-ABS(V1)
- 250 H=-HM
- 260 V=V1+R*S1
- 270 F=0
- 280 RC=R
- 290 X=X1+(V+H)*X2/M1 : Y=Y1+(V-H)*Y2/M1
- 300 IF A<>0 THEN 360
- 310 Z=1
- 320 IF X<>0 THEN Z=SIN(X)/X
- 330 IF Y<>0 THEN Z=Z*SIN(Y)/Y
- 340 Z=ABS(Z)
- 350 GOTO 400
- 360 RR=SQR(X*X+Y*Y)
- 370 IF RR=0 THEN Z=1 : GOTO 420
- 380 IF RR>X2 THEN Z=-1 : GOTO 420
- 390 Z=ABS(SIN(RR)/RR)
- 400 IF Z<BS THEN Z=-1 : GOTO 420
- 410 Z=B1+B2*LOG(Z)
- 420 Z1=K2+INT(V*K3+Z*K4+0.5)
- 430 Q=GR+H/2 : IF Z1<H(Q) THEN 480
- 440 H(Q)=Z1
- 450 Z1=200-Z1
- 460 IF F THEN LINE -(320+INT(H*K1+0.5),Z1) ELSE PSET (320+INT(H*K1+0.5),Z1):F=NOT(F)
- 470 GOTO 490
- 480 F=0
- 490 IF H=HM THEN 520
- 500 V=V-2*S1 : H=H+2 : RC=RC-1 : IF RC>0 THEN 290
- 510 S1=-S1 : GOTO 280
- 520 NEXT V1
- 530 RETURN
- 540 END
-