home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / maksiu / kurs-ma / 3d_przyklad1.amos / 3d_przyklad1.amosSourceCode
AMOS Source Code  |  1998-01-25  |  1KB  |  75 lines

  1. Screen Open 0,320,256,2,Lowres
  2. Curs Off : Palette $0,$FFF
  3. Cls 0 : Flash Off : Ink 1,0
  4. Paper 0 : Cls 0
  5. Dim _COS#(360),_SIN#(360)
  6. Dim X(8),Y(8),Z(8)
  7. Dim X1(8),Y1(8),Z1(8)
  8. Dim X2(8),Y2(8)
  9. Degree 
  10. For I=0 To 360
  11.  
  12.    _SIN#(I)=Sin(I)
  13.    _COS#(I)=Cos(I)
  14.  
  15. Next I
  16. Restore DANE
  17. For A=1 To 8
  18.    Read X(A),Y(A),Z(A)
  19. Next A
  20. Double Buffer 
  21. Autoback 0
  22. ZE=0 : ZO=-1000
  23. T=0
  24. D#=0.01
  25. S#=1.0
  26. Do 
  27.  
  28.    For V=1 To 8
  29.  
  30.       X1(V)=_COS#(T)*X(V)-_SIN#(T)*Z(V)
  31.       Y1(V)=Y(V)
  32.       Z1(V)=_SIN#(T)*X(V)+_COS#(T)*Z(V)
  33.  
  34.       X1(V)=X1(V)
  35.       Y1(V)=_COS#(T)*Y1(V)-_SIN#(T)*Z1(V)
  36.       Z1(V)=_SIN#(T)*Y1(V)+_COS#(T)*Z1(V)
  37.  
  38.       X1(V)=X1(V)*S#
  39.       Y1(V)=Y1(V)*S#
  40.       Z1(V)=Z1(V)*S#
  41.  
  42.       X2(V)=(X1(V)*(ZE-ZO))/(Z1(V)-ZO)+160
  43.       Y2(V)=(Y1(V)*(ZE-ZO))/(Z1(V)-ZO)+128
  44.  
  45.    Next V
  46.  
  47.    Cls 
  48.  
  49.    Polyline X2(1),Y2(1) To X2(2),Y2(2) To X2(3),Y2(3) To X2(4),Y2(4) To X2(1),Y2(1)
  50.    Polyline X2(5),Y2(5) To X2(6),Y2(6) To X2(7),Y2(7) To X2(8),Y2(8) To X2(5),Y2(5)
  51.  
  52.    Draw X2(1),Y2(1) To X2(5),Y2(5)
  53.    Draw X2(2),Y2(2) To X2(6),Y2(6)
  54.    Draw X2(3),Y2(3) To X2(7),Y2(7)
  55.    Draw X2(4),Y2(4) To X2(8),Y2(8)
  56.  
  57.    Wait Vbl 
  58.  
  59.    Screen Swap 
  60.  
  61.    Add T,5
  62.    If T=360 Then T=0
  63.  
  64.    If S#>2.1 or S#<0.3 Then D#=-D#
  65.    S#=S#+D#
  66. Loop 
  67. DANE:
  68. Data -30,30,-30
  69. Data 30,30,-30
  70. Data 30,-30,-30
  71. Data -30,-30,-30
  72. Data -30,30,30
  73. Data 30,30,30
  74. Data 30,-30,30
  75. Data -30,-30,30