3d in liberty basic

Status
Niet open voor verdere reacties.

blua tigro

Gebruiker
Lid geworden
21 apr 2009
Berichten
48
ik vond dit voorbeeld op internet
Code:
nomainwin
WindowWidth=500
WindowHeight=500
open "Filled Polygon" for graphics_nsb_nf as #1
#1 "trapclose [quit]"
#1 "down; fill cyan"

x2=200:x1=5
y=80

#1 "color yellow; size 1"

while x1 < x2
    y=y-1
    x1=x1+2
    x2=x2-1
    #1 "line ";x1;" ";y;" ";x2;" ";y
wend

    #1 "flush"
wait

[quit] close #1:end
dat werkt
ik maakte r dit van
Code:
nomainwin
WindowWidth = DisplayWidth
WindowHeight = DisplayHeight
open "Filled Polygon" for graphics_nsb_nf as #m
#m "trapclose [quit]"
#m "down"
#m "fill black"
#m "up"
call triangle 10,10 , 100,10 , 45,100 , hexdec( "ffff" )
#m "flush"
wait
sub triangle x1,y1 , x2,y2 , x3,y3 , kl
  r = int( kl and 255 )
  g = int( int( kl / 256 ) and 255 )
  b = int( int( kl / 256 / 256 ) and 255 )
  #m "color " ; r ; " " ; g ; " " ; b
  #m "size 1"
  #m "down"
  #m "line " ; x1 ; " " ; y1 ; " " ; x2 ; " " ; y2
  #m "line " ; x2 ; " " ; y2 ; " " ; x3 ; " " ; y3
  #m "line " ; x3 ; " " ; y3 ; " " ; x1 ; " " ; y1
  #m "up"
end sub
[quit]
  close #m
  end
dat werkt niet . waarom ?
en dan had ik zelf dit verzonnen
Code:
dim mv( 64 , 5 ) , sk( 64 , 2 ) , cam( 6 )
global nummer , pi
pi = atn( 1 ) * 4
WindowWidth = DisplayWidth
WindowHeight = DisplayHeight
global zwart , rood , groen , geel
global blauw , magenta , cyaan , wit
global roze , oranje , grijs , paars
zwart = 0 : rood = 255
groen   = hexdec( "00ff00" )
geel    = hexdec( "00ffff" )
blauw   = hexdec( "ff0000" )
magenta = hexdec( "ff00ff" )
cyaan   = hexdec( "ffff00" )
wit     = hexdec( "ffffff" )
roze    = hexdec( "7f7fff" )
oranje  = hexdec( "007fff" )
grijs   = hexdec( "7f7f7f" )
paars   = hexdec( "7f007f" )
global wereld , lijf , beenl , beenr
global kniel , klier , staart
global arml , armr , ell , elr , handl , handr
global duiml , duimr , vingerl , vingerr , frame
wereld = 0 : lijf = 1
arml = 2 : armr = 3 : ell = 4 : elr = 5
handl = 6 : handr = 7
duiml = 8 : duimr = 9
vingerl = 10 : vingerr = 11
beenl = 15 : beenr = 20
kniel = 25 : knier = 30
staart = 35


nomainwin
timer 40 , [timer_tick]
open "lines" for graphics as #m
print #m , "trapclose [quit]"
wait
[timer_tick]
   print #m , "cls"
   frame = frame + 5
   call camara 0,0,0 , 0,0,0 , 1
   call link lijf , 0 , 0 , 0 _
   , frame , 0 , 0 , wereld
   call kubus 0,0,0 , 100,100,100 , 5 , zwart
   print #m , "flush"
wait

''3d engine spul
''hier onder niet aanzitten
''tenzij je weet wat je doet !!
''================================================
sub link no , x , y , z , xz , yz , xy , p
  if no < 1 or no > 64 then exit sub
  if p < 0 or no > 64 then exit sub
  if n = p then exit sub
  call rotate x , y , mv( p , 5 )
  call rotate y , z , mv( p , 4 )
  call rotate x , z , mv( p , 3 )
  mv( no , 0 ) = x + mv( p , 0 )
  mv( no , 1 ) = y + mv( p , 1 )
  mv( no , 2 ) = z + mv( p , 2 )
  mv( no , 3 ) = xz + mv( p , 3 )
  mv( no , 4 ) = yz + mv( p , 4 )
  mv( no , 5 ) = xy + mv( p , 5 )
  nummer = no
end sub
sub child no , x , y , z , lim , p
  if lim < 1 or lim > 64 then exit sub
  call link no , x , y , z _
  , sk( lim , 1 ) _
  , sk( lim , 0 ) _
  , sk( lim , 2 ) , p
end sub
sub spot byref x , byref y , byref z
  call rotate x , y , mv( mummer , 5 )
  call rotate y , z , mv( nummer , 4 )
  call rotate x , z , mv( mummer , 3 )
  x = ( x + mv( nummer , 0 ) - cam( 0 ) ) * cam( 6 )
  y = ( y + mv( nummer , 1 ) - cam( 1 ) ) * cam( 6 )
  z = ( z + mv( nummer , 2 ) - cam( 2 ) ) * cam( 6 )
  call rotate x , z , -cam( 3 )
  call rotate y , z , -cam( 4 )
  call rotate x , y , -cam( 5 )
end sub
sub camara x , y , z , xz , yz , xy , zoom
  cam( 0 ) = x
  cam( 1 ) = y
  cam( 2 ) = z
  cam( 3 ) = xz
  cam( 4 ) = yz
  cam( 5 ) = xy
  cam( 6 ) = zoom
end sub
sub angle no , ax , deg
  if no < 1 or no > 64 then exit sub
  if ax < 0 or ax > 2 then exit sub
  sk( no , ax ) = deg
end sub
sub rotate byref k , byref l , deg
  s = sin( rad( deg ) )
  c = cos( rad( deg ) )
  kh = k * c - l * s
  lh = k * s + l * c
  k = kh
  l = lh
end sub
function rad( x )
  rad = x * pi / 180
end function
''=================================================
''einde 3d engine spul


''graphics
sub kubus mx , my , mz , dx , dy , dz , dik , kl
  call lijn mx - dx , my - dy , mz - dz _
     , mx + dx , my - dy , mz - dz , dik , kl
  call lijn mx - dx , my + dy , mz - dz _
     , mx + dx , my + dy , mz - dz , dik , kl
  call lijn mx - dx , my - dy , mz + dz _
     , mx + dx , my - dy , mz + dz , dik , kl
  call lijn mx - dx , my + dy , mz + dz _
     , mx + dx , my + dy , mz + dz , dik , kl
  call lijn mx - dx , my - dy , mz - dz _
     , mx - dx , my + dy , mz - dz , dik , kl
  call lijn mx + dx , my - dy , mz - dz _
     , mx + dx , my + dy , mz - dz , dik , kl
  call lijn mx - dx , my - dy , mz + dz _
     , mx - dx , my + dy , mz + dz , dik , kl
  call lijn mx + dx , my - dy , mz + dz _
     , mx + dx , my + dy , mz + dz , dik , kl
  call lijn mx - dx , my - dy , mz - dz _
     , mx - dx , my - dy , mz + dz , dik , kl
  call lijn mx + dx , my - dy , mz - dz _
     , mx + dx , my - dy , mz + dz , dik , kl
  call lijn mx - dx , my + dy , mz - dz _
     , mx - dx , my + dy , mz + dz , dik , kl
  call lijn mx + dx , my + dy , mz - dz _
     , mx + dx , my + dy , mz + dz , dik , kl
end sub
sub lijn x1 , y1 , z1 , x2 , y2 , z2 , dik , kl
   r = int( kl and 255 )
   g = int( kl / 256 ) and 255
   b = int( kl / 256 / 256 ) and 255
   dx = WindowWidth
   dy = WindowHeight
   call spot x1 , y1 , z1
   call spot x2 , y2 , z2
   ax = dx / 2 + x1 / ( z1 + 1000 ) * 1000
   ay = dy / 2 - y1 / ( z1 + 1000 ) * 1000
   bx = dx / 2 + x2 / ( z2 + 1000 ) * 1000
   by = dy / 2 - y2 / ( z2 + 1000 ) * 1000
   print #m , "size "; dik
   print #m , "color "; r ;" "; g ;" "; b
   print #m , "down"
   print #m , "line "; ax ;" "; ay ;" "; bx ;" "; by
   print #m , "up"
end sub
sub bol x , y , z , d , dik , kl
  call spot x , y , z
  d = d * cam( 6 )
  r = int( kl and 255 )
  g = int( kl / 256 ) and 255
  b = int( kl / 256 / 256 ) and 255
  print #m , "color "; r ;" "; g ;" "; b
  d = d / ( z + 1000 ) * 1000
  dx = WindowWidth
  dy = WindowHeight
  x = dx / 2 + x / ( z + 1000 ) * 1000
  y = dy / 2 - y / ( z + 1000 ) * 1000
  print #m , "go "; x ;" "; y
  print #m , "down"
  print #m , "circle "; d
  print #m , "up"
end sub
[quit]
   close #m
end
doel : n draiende kubus
kubus lukt , draien niet
in qb4.5 vb5 en vb2008
werken deze algoritmes wel
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan