home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / plot3d.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-07-10  |  1.3 KB  |  55 lines

  1. 10  ' 3d hidden line plot routine by Jim Reider, Atlanta, Ga.
  2. 20  PI=3.14159
  3. 30  X1=0:Y1=0
  4. 40  BS=0.01
  5. 50  B1=1-2*LOG(1)/(LOG(1)-LOG(BS))
  6. 60  B2=2/(LOG(1)-LOG(BS))
  7. 70  INPUT"WHICH FUNCTION (0 OR 1)";A
  8. 80  INPUT"RANGE (Default=2) ";K : IF K=0 THEN K=2
  9. 90  INPUT"GRID (Default=16) ";G : IF G=0 THEN G=16
  10. 100  INPUT"RESOL (Default=2) ";R : IF R=0 THEN R=2
  11. 110  X2=K*PI
  12. 120  Y2=K*PI
  13. 130  R2=2*R : M1=G*R2 : Q1=M1-R : Q2=M1+R : GR=G*R
  14. 140  DIM H(M1)
  15. 150  FOR I=0 TO M1 : H(I)=0 : NEXT I
  16. 160  K1=300/M1
  17. 170  K2=96
  18. 180  K3=96/(SQR(3)*M1)
  19. 190  K4=48/SQR(3)
  20. 200  PRINT CHR$(12) : SCREEN 2
  21. 210  GOSUB 220 : GOTO 540
  22. 220  FOR V1=-Q1 TO Q1 STEP R2
  23. 230  S1=-SGN(V1)
  24. 240  HM=Q2-ABS(V1)
  25. 250  H=-HM
  26. 260  V=V1+R*S1
  27. 270  F=0
  28. 280  RC=R
  29. 290  X=X1+(V+H)*X2/M1 : Y=Y1+(V-H)*Y2/M1
  30. 300  IF A<>0 THEN 360
  31. 310  Z=1
  32. 320  IF X<>0 THEN Z=SIN(X)/X
  33. 330  IF Y<>0 THEN Z=Z*SIN(Y)/Y
  34. 340  Z=ABS(Z)
  35. 350  GOTO 400
  36. 360  RR=SQR(X*X+Y*Y)
  37. 370  IF RR=0 THEN Z=1 : GOTO 420
  38. 380  IF RR>X2 THEN Z=-1 : GOTO 420
  39. 390  Z=ABS(SIN(RR)/RR)
  40. 400  IF Z<BS THEN Z=-1 : GOTO 420
  41. 410  Z=B1+B2*LOG(Z)
  42. 420  Z1=K2+INT(V*K3+Z*K4+0.5)
  43. 430  Q=GR+H/2 : IF Z1<H(Q) THEN 480
  44. 440  H(Q)=Z1
  45. 450  Z1=200-Z1
  46. 460  IF F THEN LINE -(320+INT(H*K1+0.5),Z1) ELSE PSET (320+INT(H*K1+0.5),Z1):F=NOT(F)
  47. 470  GOTO 490
  48. 480  F=0
  49. 490  IF H=HM THEN 520
  50. 500  V=V-2*S1 : H=H+2 : RC=RC-1 : IF RC>0 THEN 290
  51. 510  S1=-S1 : GOTO 280
  52. 520  NEXT V1
  53. 530  RETURN
  54. 540  END
  55.