Avatar billede montago Praktikant
08. juni 2006 - 23:50 Der er 9 kommentarer og
1 løsning

Fuldstendig Elastisk Stød (impuls bevarelse)

okay, har siddet og nørklet med det her problem i snart 1 uge :(

jeg er igang med at simulere 3 billiard kugler... se selv :
http://www.mdk-photo.com/Javascript/Vector

problemet er at udgangs vektorene skal regnes rigtigt ud.

jeg har søgt og søgt efter en fysisk formel og/eller algoritme som jeg kan bruge, Men det eneste jeg kan finde er en standard Fysik-formel : [v1+v2 = u1+u2] som siger mig nada

Dét jeg har brug for er en algoritme, eller en dirkte løsning

jeg kan læse stort set alle programerings sprog, så hvis din implementation er i et andet sprog gør det ikke noget.

udgangspunktet :
v1=[velocity_x , velocity_y]
v2=[velocity_x , velocity_y]

'massen = 1' (implementationen / algoritmen må gerne være med masse angivelse, men uden er okay)

pfh. TAK
Avatar billede bertelbrander Novice
09. juni 2006 - 23:50 #1
Jeg har ikke løsningen (endnu), men som jeg ser det:

Når to kugler af samme størrelse, samme vægt og med uendelig høj hårdhed støder sammen kan man tegne en vector der går mellem de to cirklers centrum.
Vinkelret på denne vector, halvejs mellem de to centre, kan man så tegne en linie. For hver af de to kugler må det se ud somom de støder ind i en væg på denne plads. Og det ser ud somom du godt kan finde ud af udgangs punkt når kuglerne støder ind i en væg.

Jeg prøver lige om jeg kan rette scriptet, men jeg er ikke Java ekspert.
Avatar billede montago Praktikant
09. juni 2006 - 23:54 #2
hvis du kan lave en løsning i et andet sprog, er du velkommen, jeg kan læse alt :)
Avatar billede bertelbrander Novice
09. juni 2006 - 23:55 #3
Jeg tror jeg kan læse nok java til at få det til at spille.
Avatar billede bertelbrander Novice
11. juni 2006 - 00:06 #4
Jeg er foreløbigt kommet frem til:

http://home20.inet.tele.dk/midgaard/kugler.html

Jeg føler mig dog stadig ikke sikker på at det helt rigtigt.
Avatar billede montago Praktikant
11. juni 2006 - 00:19 #5
Det ser sku godt ud !!... jeg havde samme idet, om at vinklen skulle tages i betragtning...

har dog fundet en artikkel (som gemmer sig bag et login, på http://www.gamasutra.com/features/20020118/vandenhuevel_01.htm)
lidt udvalgt kode (herudover er der en virkelig gennemført collision detection algoritme --- dog er 'dist<100' okay)

// First, find the normalized vector n from the center of
// circle1 to the center of circle2
Vector n = circle1.center - circle2.center;
// normalize = (x/magnitude),(y/magnitude) --> bliver til enheds vektor
n.normalize();
// Find the length of the component of each of the movement
// vectors along n.
// a1 = v1 . n
// a2 = v2 . n
float a1 = v1.dot(n); //< Prik produkt
float a2 = v2.dot(n);

// Using the optimized version,
// optimizedP =  2(a1 - a2)
//              -----------
//                m1 + m2
float optimizedP = (2.0 * (a1 - a2)) / (circle1.mass + circle2.mass);

// Calculate v1', the new movement vector of circle1
// v1' = v1 - optimizedP * m2 * n
Vector v1' = v1 - optimizedP * circle2.mass * n;

// Calculate v1', the new movement vector of circle1
// v2' = v2 + optimizedP * m1 * n
Vector v2' = v2 + optimizedP * circle1.mass * n;

circle1.setMovementVector(v1');
circle2.setMovementVector(v2');
Avatar billede montago Praktikant
11. juni 2006 - 00:21 #6
jeg poster lige end PDF udgave af indholdet på hjemmesiden
Avatar billede montago Praktikant
11. juni 2006 - 00:22 #7
Avatar billede montago Praktikant
11. juni 2006 - 01:53 #8
Sådan... nu er metoden implementeret...

http://www.mdk-photo.com/Javascript/Vector

Vægt og Radius virker også næsten... nogle gange fanger de hinanden... dog skulle dette problem være løs med brug af Collision detection algorimten (udkommenteret)

smid et svar bertel...
Avatar billede bertelbrander Novice
11. juni 2006 - 13:14 #9
Jeg har vist ikke bedraget til løsningen og jeg samler ikke på point.
Avatar billede montago Praktikant
11. juni 2006 - 13:17 #10
så nupper jeg dem selv :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester