A fordító rendelkezik egy fizikai szimulációs modullal, amely korlátozott mértékben képes a valós sebességeket, mozgásokat szimulálni egy tetszőleges gravitációs térben. Jelenleg a gömb, a téglatest, és a henger geometriák használhatók a szimulációhoz.
Első lépésként be kell állítani a gravitációs vektort, vagyis merre zuhanjanak a testek.
A példában lefelé irányuló 2 egység erősségű a gravitáció.
A fizika.start utasítás kapcsolja be a szimulációt. Amint lefordítod a kódot, a testek azonnal lefelé zuhannak, és meg sem állnak a végtelenig.
gravitáció(0, -2, 0)
fizika.start
hely(0,10,0)
tégla(2)
hely(-5,10,0)
gömb(1)
hely(5,10,0)
henger(1,1,2)
Minden test kaphat sebesség, és perdület értéket az induláskor. Ehhez a testeknek egyéni nevet kell adni, majd a test.sebesség, vagy a test.perdület utasításban hivatkozni rájuk.
A példában a téglatest a T1, a gömb a T2, és a henger a T3 nevet kapta. A henger sebességet, és perdületet is kap induláskor.
gravitáció(0, -2, 0)
fizika.start
hely(0,10,0)
tégla(2) DEF T1
hely(-5,10,0)
gömb(1) DEF T2
hely(5,10,0)
henger(1,1,2) DEF T3
test.sebesség(T2,2,0,0)
test.perdület(T1,0,3,0)
test.sebesség(T3,-1,0,0)
test.perdület(T3,0,3,0)
Zéró gravitáció is használható. Ebben az esetben a perdületekkel, és a sebesség vektorokkal kell mozgatnunk a testeket.
gravitáció(0, 0, 0)
fizika.start
hely(-10,0,0)
tégla(2,2,2) DEF T1
hely(10,0,0)
tégla(2,2,2) DEF T2
test.perdület(T1,3,3,0)
test.perdület(T2,3,3,0)
test.sebesség(T1,1,0,0)
test.sebesség(T2,-2,0,0)
Ciklussal generált gömböket helyeztem el a -10,10 tartományba, és mindegyik kapott egy egyéni delta mozgási vektort. Az ütközések miatt szépen szétszóródnak a térben.
color(#ffb200)
gravitáció(0, 0, 0)
fizika.start
for(n,1,100)
x=rand(-100,100)/10
y=rand(-100,100)/10
z=rand(-100,100)/10
hely(x,y,z)
gömb(1) DEF G[n]
dx=rand(-5,5)/10
dy=rand(-5,5)/10
dz=rand(-5,5)/10
test.sebesség(G[n],dx,dy,dz)
next(n)
Az utolsó példában már nem véletlen a sebesség vektor, hanem a test (x,y,z) koordinátáinak -1 szeres értéke lesz. Így minden test az origó felé indul, és minél távolabb van, annál gyorsabban. Egy kis tömörülés után lepattannak egymásról, és elindulnak kifelé. A látvány kedvéért minden gömb véletlen RGB színkódot kapott.
color(#ffb200)
gravitáció(0, 0, 0)
fizika.start
for(n,1,100)
x=rand(-100,100)/10
y=rand(-100,100)/10
z=rand(-100,100)/10
hely(x,y,z)
r=rand(0,100)
g=rand(0,100)
b=rand(0,100)
rgb(r,g,b)
gömb(1) DEF G[n]
dx=-x
dy=-y
dz=-z
test.sebesség(G[n],dx,dy,dz)
next(n)