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

  1. Rem Cosine Surface 
  2. Screen Open 1,640,256,8,Hires
  3. Wind Open 1,10,10,80,25
  4. PCOL=5
  5. Cls 0
  6. Rem Upper & Lower Limits for Hidden Line Routine 
  7. Dim YTOPLINE(640),YBASELINE(640)
  8. For I=1 To 639 : YTOPLINE(I)=255 : Next I
  9. Rem Center Lines for X & Y Axis  
  10. XAXIS=320 : YAXIS=127
  11. RHO#=30 : D#=750
  12. THETA#=5.7 : S1#=Sin(THETA#) : C1#=Cos(THETA#)
  13. PHI#=1.1 : S2#=Sin(PHI#) : C2#=Cos(PHI#)
  14.  Def Fn Z#(X#)=0.2*Exp(Sin(X#*Y#))
  15. Rem point generating loop
  16. For X#=8 To -12 Step -0.2
  17.   FL=0
  18.   For Y#=-12 To 12 Step 0.1
  19.      Z#= Fn Z#(X#)
  20.       Gosub PLTER
  21.    Next Y#
  22. Next X#
  23. End 
  24. PLTER:
  25. XE#=(-X#*S1#+Y#*C1#)
  26. YE#=(-X#*C1#*C2#-Y#*S1#*C2#+Z#*S2#)
  27. ZE#=(-X#*S2#*C1#-Y#*S2#*S1#-Z#*C2#+RHO#)
  28. SX=Int(D#*(XE#/ZE#)+XAXIS)
  29. SY=Int(-D#*(YE#/ZE#)+YAXIS)
  30. If FL=0
  31.    FL=1
  32.    Goto DROPOUT
  33. End If 
  34. DX=OLDX-SX
  35. If DX=0 Then DX=1
  36. SL=(OLDY-SY)/DX
  37. YP=OLDY
  38. For XP=Int(OLDX)+1 To SX
  39.    FG=1
  40.    YP=YP+SL
  41.    If(XP<0) or(XP>630) Then FG=0 : Goto LOP
  42.    If(YP<0) or(YP>250) Then FG=0
  43.    If YP<=YTOPLINE(XP)
  44.       YTOPLINE(XP)=YP
  45.       If FG<>0
  46.          Plot XP,YP
  47.       End If 
  48.       If YP=>YBASELINE(XP)
  49.          YBASELINE(XP)=YP
  50.          If FG=0
  51.             Goto LOP
  52.          End If 
  53.          Plot XP,YP
  54.          Goto LOP
  55.       Else 
  56.          Goto LOP
  57.       End If 
  58.    End If 
  59.    If YP>=YBASELINE(XP)
  60.       YBASELINE(XP)=YP
  61.       If FG=0
  62.          Goto LOP
  63.       End If 
  64.       Plot XP,YP
  65.       Goto LOP
  66.    End If 
  67.    LOP:
  68. Next XP
  69. DROPOUT:
  70. OLDX=SX : OLDY=SY : Return