Miten saan pyöritettyä 3d-maailmaa (kameraa) pysty/vaakasuunnassa niin, että voin kääntää kameran taaksepäin ja nähdä särmiöiden loittonevan kamerasta?
Code: Select all
SCREEN 1000,700
Type vector
Field x1
Field y1
Field z1
Field x2
Field y2
Field z2
Field cR
Field cG
Field cB
EndType
Function newVector(x1,y1,z1,x2,y2,z2,cR=255,cG=255,cB=255)
v.vector = New(vector)
v\x1=x1
v\y1=y1
v\z1=z1
v\x2=x2
v\y2=y2
v\z2=z2
v\cR=cR
v\cG=cG
v\cB=cB
EndFunction
camaX#=90.0
camaY#=0.0
sw=ScreenWidth()
sh=ScreenHeight()
sw2=ScreenWidth()/2
sh2=ScreenHeight()/2
For z=0 To 20
For y=-1000 To 1000 Step 300
For x=-1000 To 1000 Step 300
cR=Rand(0,255)
cRR=Rand(0,cR)
cG=cRR*0.7
cB=cRR*0.7
rn=Rnd(0,0.2)
newVector(x,y,z+rn,x+50,y,z+rn,cR,cG,cB)
newVector(x+50,y+50,z+rn,x+50,y,z+rn,cR,cG,cB)
newVector(x,y+50,z+rn,x+50,y+50,z+rn,cR,cG,cB)
newVector(x,y,z+rn,x,y+50,z+rn,cR,cG,cB)
newVector(x,y,z+0.5+rn,x+50,y,z+0.5+rn,cR,cG,cB)
newVector(x+50,y+50,z+0.5+rn,x+50,y,z+0.5+rn,cR,cG,cB)
newVector(x,y+50,z+0.5+rn,x+50,y+50,z+0.5+rn,cR,cG,cB)
newVector(x,y,z+0.5+rn,x,y+50,z+0.5+rn,cR,cG,cB)
newVector(x,y,z+rn,x,y,z+0.5+rn,cR,cG,cB)
newVector(x+50,y+50,z+rn,x+50,y+50,z+0.5+rn,cR,cG,cB)
newVector(x,y+50,z+rn,x,y+50,z+0.5+rn,cR,cG,cB)
newVector(x+50,y,z+rn,x+50,y,z+0.5+rn,cR,cG,cB)
Next x
Next y
Next z
camZ#=2.0
camX#=0
camY#=0
Repeat
camZ=camZ+(KeyDown(cbkeyW)-KeyDown(cbkeyS))*0.01
camZ=camZ+0.5
camaX=(camaX+((KeyDown(cbkeyRight)-KeyDown(cbkeyLeft))*1.5))
camaY=(camaY+((KeyDown(cbkeyUP)-KeyDown(cbkeyDOWN))*1.1))
camX=camX+(KeyDown(cbkeyD)-KeyDown(cbkeyA))*20
camY=camY+(KeyDown(cbkeyW)-KeyDown(cbkeyS))*-Sin(camaY)*200
For v.vector = Each vector
If (v\z1-camZ) > 0 And (v\z2-camZ) > 0 Then
x1=sw2*Cos(camaX)*4 + ((v\x1-camX)/(v\z1-camZ))+sw2
y1=sh2*Sin(camaY)*4 + ((v\y1-camY)/(v\z1-camZ))+sh2
x2=sw2*Cos(camaX)*4 + ((v\x2-camX)/(v\z2-camZ))+sw2
y2=sh2*Sin(camaY)*4 + ((v\y2-camY)/(v\z2-camZ))+sh2
intcol=v\cB+(v\cG Shr 8) + (v\cR shr 16)
Color v\cR,v\cG,v\cB
Line x1,y1,x2,y2
ElseIf (camZ-v\z1) < 20 Then
newVector(v\x1,v\y1,v\z1+20,v\x2,v\y2,v\z2+20,v\cR,v\cG,v\cB)
Delete v
EndIf
Next v
Color 255,255,255
Text 0,0,"camaX="+camaX
Text 0,20,"camaY="+camaY
Text 0,40,"camZ="+camZ
Text 0,60,"camX="+camX
Text 0,80,"camY="+camY
//SetWindow ""+FPS()
DrawScreen
Forever