home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / various / cosine.amos / cosine.amosSourceCode
AMOS Source Code  |  1993-01-08  |  2KB  |  104 lines

  1. Rem Cosine Surface 
  2. Screen Open 1,640,256,8,Hires
  3. Wind Open 1,10,10,64,25
  4. PCOL=5
  5. Cls 0
  6. Rem
  7. Rem Upper & Lower Limits for Hidden Line Routine 
  8. Rem The 255 within I for-next loop = Screen Height - 1 
  9. Rem          and not some magic HEX value.   
  10. Rem
  11. Dim YTOPLINE(640),YBASELINE(640)
  12. For I=1 To 639 : YTOPLINE(I)=255 : Next I
  13. Rem Center Lines for X & Y Axis  
  14. XAXIS=320 : YAXIS=127
  15. Rem
  16. Rem   RHO   = Distance from Viewer to 0,0,0
  17. Rem   THETA = Angle between Viewer & X Axis (Horizontal) 
  18. Rem   PHI   = Angle between Viewer & Z Axis (Vertical) 
  19. Rem   D     = Distance between Viewer & Display Window 
  20. Rem
  21. RHO#=80.0 : D#=750.0
  22. THETA#=0.4 : S1#=Sin(THETA#) : C1#=Cos(THETA#)
  23. PHI#=1.25 : S2#=Sin(PHI#) : C2#=Cos(PHI#)
  24. Def Fn Z#(X#)=Cos(0.06*(X#*X#+Y#*Y#))
  25. Rem point generating loop
  26. For X#=22.0 To -55.0 Step -0.2
  27.    FL=0
  28.    For Y#=-40.0 To 19.0 Step 0.2
  29.       Z#= Fn Z#(X#)
  30.       Gosub PLTER
  31.    Next Y#
  32. Next X#
  33. End 
  34. Rem    End of Program. 
  35. Rem
  36. PLTER:
  37. XE#=(-X#*S1#+Y#*C1#)
  38. YE#=(-X#*C1#*C2#-Y#*S1#*C2#+Z#*S2#)
  39. ZE#=(-X#*S2#*C1#-Y#*S2#*S1#-Z#*C2#+RHO#)
  40. SX=Int(D#*(XE#/ZE#)+XAXIS)
  41. SY=Int(-D#*(YE#/ZE#)+YAXIS)
  42. If FL=0
  43.    FL=1
  44.    F=0
  45. Else 
  46.    DX=OLDX-SX
  47.    If DX=0
  48.       DX=1
  49.    End If 
  50.    SL=(OLDY-SY)/DX
  51.    YP=OLDY
  52.    For XP=Int(OLDX)+1 To SX
  53.       FG=1
  54.       YP=YP+SL
  55.       If(XP<0) or(XP>630)
  56.          FG=0
  57.          F=0
  58.          Goto LOP
  59.       End If 
  60.       If(YP<0) or(YP>250)
  61.          FG=0
  62.          F=0
  63.       End If 
  64.       If YP<=YTOPLINE(XP)
  65.          YTOPLINE(XP)=YP
  66.          If FG<>0
  67.             If F=0
  68.                Plot XP,YP,PCOL
  69.                F=1
  70.             End If 
  71.             Plot XP,YP
  72.          End If 
  73.          If YP=>YBASELINE(XP)
  74.             YBASELINE(XP)=YP
  75.             If FG=0
  76.                Goto LOP
  77.             End If 
  78.             If F=0
  79.                F=1
  80.                Plot XP,YP,PCOL
  81.             End If 
  82.             Plot XP,YP
  83.             Goto LOP
  84.          Else 
  85.             Goto LOP
  86.          End If 
  87.       End If 
  88.       If YP>=YBASELINE(XP)
  89.          YBASELINE(XP)=YP
  90.          If FG=0
  91.             Goto LOP
  92.          End If 
  93.          If F=0
  94.             Plot XP,YP,PCOL
  95.             F=1
  96.          End If 
  97.          Plot XP,YP
  98.          Goto LOP
  99.       End If 
  100.       F=0
  101.       LOP:
  102.    Next XP
  103. End If 
  104. OLDX=SX : OLDY=SY : Return