Тема: Scan Line 2D
Показать сообщение отдельно
Старый 09.05.2013, 12:03   #1
polopok
ПроЭктировщик
 
Регистрация: 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)
 
Ответить с цитированием