A szimulációban a testek egymással ütköznek, és új sebesség vektorokat kapnak. Időnként szükség lehet olyan testekre, mint például egy padló, aminek a mozgását tilthatjuk. Ütközhetnek hozzá a mozgó testek, de nem mozdul el a helyéről. A kódban a test.mozgás(ki) utasítást kell beírnunk, és az alatta lévő kódban megadott testek nem fognak elmozdulni. A gravitáció y irányban lefelé hat, és 20 db véltelenül elhelyezett gömb zuhan a fix padlóra.

color(#ffb200)
gravitáció(0, -10, 0)
fizika.start

for(n,1,20)
x=rand(-100,100)/10
y=rand(50,100)/10
z=rand(-100,100)/10
hely(x,y,z)
gömb(1) DEF G[n]
next(n)

test.mozgás(ki)

color(#342a6b)
hely(0,0,0)
tégla(20,0.1,20)

camera(KAM1, 9.03, 14.69, 25.7, 0.03, 0.82, 0.1)

DOBOZ

A továbbiakban szükségünk lesz egy dobozra, ami nem mozog, és visszapattan róla minden test. Az alábbi kódot minden példa végére kell majd másolnod! Ebbe a dobozba potyogtatjuk bele a testeket.

//-----------------------------------------
// DOBOZ

test.mozgás(ki)

//-----------------------------
// PADLÓ
color(#333333)
texture(matematika/p_fekete.gif,10,10)
hely(0,0,0)
tégla(24,0.1,24)


//-----------------------------
// FALAK
texture(matematika/p_fekete.gif,10,5)

hely(0,2.5,-12)
tégla(24,5,0.1)

hely(0,2.5,12)
tégla(24,5,0.1)

hely(12,2.5,0)
tégla(0.1,5,24)

hely(-12,2.5,0)
tégla(0.1,5,24)


camera(START, 12.48, 20.6, 33.87, -0.55, 0.21, 0.19)
camera(TOP, 0.97, 41.09, 6.99, -0.55, 0.21, 0.19)
camera(IN, 5.83, 7.45, 12.31, 0.06, 0.09, -0.24)

RUGALMASSÁG

Az ütközést befolyásolja a test rugalmassága. Ezt a test kódja előtt kell beállítani. Valóságos szimuláció esetén 0..1 közötti szám legyen. A példában minden gömb más rugalmasságot kapott. A hátul lévő gömb minden ütközéskor egyre magasabbra ugrik, mert a rugalmassága 1-nél nagyobb. Ne feledjük, hogy a padlónak, vagyis a doboznak is van rugalmassága!

color(#ffffff)
gravitáció(0, -10, 0)

fizika.start

hely(-8, 10, 5)
test.rugalmasság(0.3)
gömb(2) DEF G1

hely( 0, 10, 5)
test.rugalmasság(0.5)
gömb(2) DEF G2

hely( 8, 10, 5)
test.rugalmasság(0.7)
gömb(2) DEF G3

hely( 0, 10, -5)
test.rugalmasság(2)
gömb(2) DEF G4

//-------------------------
// EZ A DOBOZ RUGALMASSÁGA
test.rugalmasság(0.5)

//------------------------
// Másold ide a DOBOZ kódját!

A két gömb (G1,G2) egymással ellentétes sebességgel zuhan a padlóra, és mivel elég nagy a rugalmasságuk, sokáig pattognak.

 

color(#ffffff)

gravitáció(0, -10, 0)
fizika.start

test.rugalmasság(0.8)

hely(-8, 10, 0)
gömb(2) DEF G1

hely( 8, 10, 0)
gömb(2) DEF G2

test.sebesség(G1, 5, 0, 0)
test.sebesség(G2,-5, 0, 0)


//-------------------------
// EZ A DOBOZ RUGALMASSÁGA
test.rugalmasság(0.5)


//------------------------
// Másold ide a DOBOZ kódját!