forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Полезные функции (http://forum.boolean.name/forumdisplay.php?f=17)
-   -   Scan Line 2D (http://forum.boolean.name/showthread.php?t=18171)

polopok 09.05.2013 12:03

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


impersonalis 18.05.2013 18:53

Ответ: Scan Line 2D
 
C'est génial que vous avez partagé avec nous !

Arles 18.05.2013 20:59

Ответ: Scan Line 2D
 
Il me semble que vous êtes un développeur et que ce jeu aussi!

Arton 19.05.2013 05:50

Ответ: Scan Line 2D
 
Код очень тормознутый и поэтому бесполезный.


Часовой пояс GMT +4, время: 22:32.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot