blua tigro
Gebruiker
- Lid geworden
- 21 apr 2009
- Berichten
- 48
ik vond dit voorbeeld op internet
dat werkt
ik maakte r dit van
dat werkt niet . waarom ?
en dan had ik zelf dit verzonnen
doel : n draiende kubus
kubus lukt , draien niet
in qb4.5 vb5 en vb2008
werken deze algoritmes wel
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
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
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
kubus lukt , draien niet
in qb4.5 vb5 en vb2008
werken deze algoritmes wel
Laatst bewerkt: