All pastes #743908 Raw Edit

atomimalli

public text v1 · immutable
·published 2007-10-20 21:58 UTC
rendered paste body
SCREEN 400,300,0,2
ClsColor 28,98,130
Cls
SetWindow "loading"
hmap=LoadImage("heightmap.bmp")
texmap=LoadImage("Terrain texture1.bmp")
Dim map(512,512,2)
Lock Image(hmap)
For x=0 To 511
For y=0 To 511
map(x,y,1)=GetPixel2(x,y,Image(hmap))/70000
Next y
SetWindow "loading"+Left("...",(x Mod 100)/ 30)
Next x
Lock Image(texmap)
For x=0 To 511
For y=0 To 511
map(x,y,2)=GetPixel2(x,y,Image(texmap))
Next y
SetWindow "loading"+Left("...",(x Mod 100)/ 30)
Next x
'Unlock  'putpixel ei tykkää näistä
For x=1 To 510
For y=1 To 510
map(x,y,0)=map(x,y,1)-Min( Min(map(x-1,y,1),map(x+1,y,1)),Min(   Min(map(x+1,y+1,1),Min(map(x-1,y+1,1),map(x,y+1,1)))   ,Min(map(x+1,y-1,1),Min(map(x-1,y-1,1),map(x,y-1,1)))))
Next y
SetWindow "processing..."
Next x


kulma=-50
aika=Timer()
Repeat
_fps#=1000.0/(Timer()-aika)
aika=Timer()
kulma-5
Lock SCREEN()
For x=0 To 511 Step 6
For y=0 To 511 Step 6
Color 0,0,map(x,y,2)
For i=0 To Abs(map(x,y,0))+1 Step 6
d#=Distance(255,255,x,y)
k#=WrapAngle(ATan((y-250)/Float(x-250.5))+kulma)
If x>250 Then k-180
x2=Sin(k)*d
y2=Cos(k)*d

'dot3d(y2,-(map(x,y,1)-i)-50,x2-200)
    xx#=y2:yy#=-(map(x,y,1)-i)-50:zz#=x2-200
    If zz>0 Then Exit   'epäilyttävä rivi, mutta saattaa olla superoptimaatio
    p_s# = (1/zz#)*100
    sx = xx# * p_s# + 200
    sy =-yy# * p_s# + 150
    s=-(p_s*2.5)*3
    If (sx+s)<399 And (sx-s)>0 And (sy+s)<299 And (sy-s)>0 Then
    For bx=-s To s
        For by=-s To s
        PutPixel2 sx+bx,sy+by,map(x,y,2),SCREEN()
        Next by
    Next bx
    EndIf
Next i
Next y
SetWindow int(x/5.12)+"% fps:"+_fps+" drawing"+Left("...",(x Mod 30)/ 8)
Next x
Unlock
DrawScreen
Forever
SetWindow "ready"
WaitKey

Function Dot3D( x#, y#, z# )
   
    If z# > 0 Then Return 0
    If z# = 0 Then z# = 0.01
   
    p_s# = (1/z#)*100
   
    sx = x# * p_s# + 200
    sy =-y# * p_s# + 150
   
    'Dot sx,sy
    s=-(p_s*2.5)
    s2=-(p_s*2.5)/2
    Box sx-s2,sy-s2,s,s
    
   
End Function