home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1997-10-13 | 1.4 KB | 89 lines |
- ' Shaded Spheres!
-
- Screen Open 0,320,200,32,Lowres
- Curs Off
- Flash Off
- Cls 0
-
- For K=0 To 15
- Colour K,K*(1+16+256)
- Next
-
- KD=0.5*256
- KS=0.5*256
- SPECINDEX=2
- XCENTRE=160
- YCENTRE=100
- RADIUS=40
- Timer=0
- Gosub SHADESPHERE
- T=Timer
- Pen 15
- Print T
- '534
- '522
- '515
- '504
- '458
- '456
- '453
- End
-
- SHADESPHERE:
-
- ILIGHT=140
- K#=70.0
- IAKA=0.2*256
- HX#=0.325058
- HY#=0.325058
- HZ#=0.888074
- DX=110
- DY=110
- DZ=110
- LX#=0.57735
- LY#=0.57735
- LZ#=0.57735
-
- RSQUARE=RADIUS^2
- AMBIENTTERM=IAKA
- For Y=-RADIUS To RADIUS
- YSQUARE=Y^2
- For X=-RADIUS To RADIUS
- XSQUARE=X^2
- If XSQUARE+YSQUARE<RSQUARE
- ZSQUARE=RSQUARE-XSQUARE-YSQUARE
- Z=Sqr(ZSQUARE)
- DENOM#=Sqr(XSQUARE+YSQUARE+ZSQUARE)
- XN#=X/DENOM#
- YN#=Y/DENOM#
- ZN#=Z/DENOM#
- Gosub CALCULATELNANDNNH
- If LDOTN#<=0
- IG=AMBIENTTERM
- IRB=0
- Else
- DISTFACTOR#=ILIGHT/DIST#
- DIFFUSETERM=DISTFACTOR#*KD*LDOTN#
- SPECULARTERM=DISTFACTOR#*KS*NNH#
- IG=AMBIENTTERM+DIFFUSETERM+SPECULARTERM
- IRB=SPECULARTERM
- End If
- 'C=Min(15,IG/16)
- C=IG/16
- Extension_12_036E XCENTRE+X,YCENTRE+Y,C
- End If
- Next
- Next
- Return
-
- CALCULATELNANDNNH:
- LDOTN#=(XN#*LX#+YN#*LY#+ZN#*LZ#)
- If LDOTN#<0
- LDOTN#=0
- Else
- DIST#=Sqr((DX-X)^2+(DY-Y)^2+(DZ-Z)^2)+K#
- NH#=HX#*XN#+HY#*YN#+HZ#*ZN#
- 'NNH#=Exp(SPECINDEX*Ln(NH#))
- NNH#=NH#^SPECINDEX
- End If
- Return