09.05.2013, 12:03
|
#1
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Scan Line 2D
Сделал для сканирования массива точек (а ля камера вида )
Dim f(900,900) :Dim h(900,900)
Graphics 800,600,32,2
SetBuffer BackBuffer()
CamFOV# = 60.0 / 2.0 ; Angle de vue de la camera (default = 90)
ViewLine = 300 ; Taille de la ligne des plans
x=200 :y=200
For b= 200 To 400 Step 5
For a= 200 To 400 Step 5
f(a,b)=Rand(0,1)
; h(a,b)=Rand(0,1)
Next
Next
While Not KeyHit(1)
mx# = MouseX()
my# = MouseY()
If KeyDown(205) Then x=x+1
If KeyDown(203) Then x=x-1
If KeyDown(208) Then y=y+1
If KeyDown(200) Then y=y-1
If MouseDown(1) Then x=mx : y=my
Cls
For b= 200 To 400 Step 5
For a= 200 To 400 Step 5
LockBuffer BackBuffer()
If f(a,b)=1 Then WritePixel a,b,$666666,BackBuffer()
UnlockBuffer BackBuffer()
Next
Next
CamFOV# =(180+ATan2(x-mx,y-my))
Oval x-3,y-3,6,6,1
For angle#= 30 To -30 Step -.1
p=20
While p<200
p=p+1
p1x# = x+p*Sin(CamFOV-angle#)
p1y# = y+p*Cos(CamFOV-angle#)
h1=0
LockBuffer BackBuffer()
WritePixel p1x,p1y,$0000ff,BackBuffer()
If f(p1x,p1y)=1
WritePixel p1x,p1y,$00ff00,BackBuffer()
WritePixel 300+ p1x,300 ,$00ff00,BackBuffer() ; (y-h(p1x,p1y))
h1=1
EndIf
UnlockBuffer BackBuffer()
If h1=1 Then Exit
Wend
Next
Flip
Wend
End
__________________
Мой проект здесь
|
(Offline)
|
|