|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
kkeemmss
Joined: 04 Jan 2007 Posts: 232 Location: Riga
|
Posted: Fri Feb 19, 2010 10:58 am Post subject: bum bum sadursme |
|
Doma ir par nelielu spēlīti, lai rakstītu kaut kādu fiziku būs jāsaprot pamati.
Piemērs mums ir divas bumbas uz x ass, abām izmērs, masa un elastība ir vienāda.
B1.speed = 10
*) B2.speed = -10
*) B2.speed = -2
*) B2.speed = 0
*) B2.speed = -6
Kāds būs abu bumvu ātrums pēc sadursmes ?
Ja elastība būtu savādāka, vai katrai bumbai atšķirīga, vai tas mainītu gala rezultātu?
Vairāk tā kā interesētu nevis atbilde uz šo konkreto piemeru, bet formula pēc kuras to izreikināt.
ā un otrs gadijums B1 ar dažādiem ātrumiem ietriecas, elastības ziņā, dažādās sienās, kāds būs b1 ātrums pēc sadursmes.
Paldies. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Feb 19, 2010 11:16 am Post subject: |
|
Jāzin divi likumi - enerģijas nezūdamības un impulsa nezūdamības:
Code: | sum(mv*v/2)=const
sum(mv) = const |
Tā kā masa vienāda, tad ignorējam to aprēķinos (jo tā visur noīsinās). Ja dažāda, tad jāliek gan.
Dots - v1,v2=ātrumi pirms sadursmes (zināmi). v1',v2'=ātrumi pēc (nezinām).
Pēc enerģinas nezūdamības:
v1*v1/2 + v2*v2/2 = v1`*v1`/2 + v2`*v2`/2
Pēc impulsa nezūdamības:
v1+v2=v1'+v2'
Viens veids kā risināt ir - no pēdējās formulas izsaki v2' un ieliec pirmajā formulā. No tās tad dabūsi v1'. Pēc tam šo ieliec otrajā un dabūsi v2'.
Otrs vienkāršāks - maini atskaites sistēmu. Par to pieņem pirmo bumbu, jo tad pirmās ātrumus būs 0 - būs vieglāk rēķināt. Attiecīgi otrās bumbas ātrums būs v2-v1.
Reku sīkāk: http://en.wikipedia.org/wiki/Elastic_collision
Ja elastības dažādas, tad kinētiskā enerģija sadursmē zūd (beigu enerģija jāreizina ar koeficientu). Vienk pareizini labo pusi ar kautādu koeficientu k. Aprēķini paliek tādi paši. Ja k=1 tad sadursme ir pilnīgi elastīga (iepriekšējais gadījums). Ja k=0, tad sadursme ir pilnīgi neelastīga (bumbas salīp kopā). Reku te sīkāk: http://en.wikipedia.org/wiki/Inelastic_collision
kkeemmss wrote: | un elastība ir vienāda. |
Sadursmēs parasti nerunā par elastību ķermeņiem vai vielām. Elastību pieņem sadursmei un tā ir atkarīga no abiem ķermeņiem (to vielas īpašībām). Angliski to sauc par coefficient of restitution. Neatceros kā to latviski sauc, vai par to pašu elastību vai nē.
Ā un vēl, ja bumbiņas var vēl griezties, tad jāņem vērā arī to rotācija un rotācijas enerģijas nezūdamības likums (angular kinetic energy) un rotācijas momenta nezūdamības likums:
Code: | sum(0.5*I*omega^2)=const
sum(I*omega)=const | Kur I ir inerces moments, un omega - rotācijas ātrums. |
|
Back to top |
|
|
kkeemmss
Joined: 04 Jan 2007 Posts: 232 Location: Riga
|
Posted: Fri Feb 19, 2010 9:59 pm Post subject: |
|
Uja uja niknas formulas, bet nu labi.
pagaidām kāmēr masas ir vienāds un abas bumbas ir pilnigi elastīgas itkā sanāk baigi vienkārši.
nezinu varbūt es tur kaut ko pa savan ne tā dariju, bet pie 100% elastīgas sadursmes man sanāk ka
f = b1.sped - b2.sped // tipa trieciens
b1.sped -= f
b2.sped +=f
bet kā ar to elastību būs, ja bumbai ar cietu neelastīgu sienu atsitās ar 1/2 enerģijas, tad kāds koeficents būs jālieto ja sasitās 2 bumbas? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Feb 19, 2010 10:43 pm Post subject: |
|
Jā, tas ir pareizi. Citiem vārdiem uzrakstot to vienkāršāk:
Code: | b1.new_speed = b2.speed
b2.new_speed = b1.speed |
T.i. ātrumi apmainās vietām.
Tas koeficients nozīmē cik daudz pazūd ātrums sadursmes brīdī. Ja pazūd 50%, tad koeficients ir 1/2. Ja domā par enerģijām, tad pie pieņēmuma, ka masa ir vienāda abām bumbām, tad koeficients = kvadrātsakne no enerģijas attiecības.
Formulā vienkārši atstāj vispārīgi k. Un izrēķini ar to. Tad atbildē tev būs formula, kura darbosies jebkurai sadursmei, gan pilnīgi elastīgai, gan neelastīgai, gan arī visam kam pa vidu (attiecigi k=1, k=0 vai arī 0<k<1). |
|
Back to top |
|
|
kkeemmss
Joined: 04 Jan 2007 Posts: 232 Location: Riga
|
Posted: Fri Feb 19, 2010 11:17 pm Post subject: |
|
Nē šoreiz es domāju nevis kur to koeficentu piereizināt, bet cik liels man tas koefivents jālieto.
Tas pats piemērs, ja bumba atsitas pret cietu sienu, un zaudē pusi ātruma, tātad koeficents itka butu 0.5
Bet ja satriecas divas bumbas, tad kāds koeficents jālieto apreikinos..
-----------------------------------------------
f = b1.sped - b2.sped // tipa trieciens
b1.sped -= f *k
b2.sped +=f *k
šitādā formulā 1 būtu 100% elastīgs, bet 0.5 jau būtu pilnigi plastisks,
Tad ja es gribu vidēju elastību tad laikam k = 0.75
--------------------------------------------
un laikam pats atbildeju uz savu jautajumu |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Feb 19, 2010 11:55 pm Post subject: |
|
Nē, tās formulas tev nav pareizas.
Neelastīgai sadursmei man tās sanāk šādas:
Code: | b1.new_speed = ((1+k)*b2.speed + (1-k)*b1.speed) / 2
b2.new_speed = ((1+k)*b1.speed + (1-k)*b2.speed) / 2 |
Ja ieliksi k=1, tad sanāks tieši tas kas iepriekš (ātrumi apmainās vietām).
Ja ieliksi k=0, tad jāsanāk, ka bumbas salīp kopā (to ātrumi būs vienādi). Tavā gadījumā ātrumi būs 0, tas nav pareizi. Manām formulām sanāk, ka abu bumbu jaunie ātrumi būs puse no abu veco ātrumu summas, kas izklausās diezgan loģiski, ne? |
|
Back to top |
|
|
kkeemmss
Joined: 04 Jan 2007 Posts: 232 Location: Riga
|
Posted: Sat Feb 20, 2010 12:46 am Post subject: |
|
labi ja k=1 nozīmē elastīgs un k =0 nozīmē plastisks, tad es savu formulu mazliet varu izmainit
f = b1.sped - b2.sped // tipa trieciens
b1.sped -= f *(0.5+k/2)
b2.sped +=f *(0.5+k/2)
nu itkā liekas ka tagad rezultāts iznāk pareizs. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Feb 20, 2010 12:56 am Post subject: |
|
Jā, tagad sanāk pareizi. |
|
Back to top |
|
|
kkeemmss
Joined: 04 Jan 2007 Posts: 232 Location: Riga
|
Posted: Sat Feb 20, 2010 1:03 am Post subject: |
|
nu dad drīz varēšu kerties pie vektoru saskaitisanas 2d plaknē, bet vēl pirms tam ir jasaprot tas, ka tur sanāk ja katrai bumbai elastība ir savādāka, vai tai sadursmē es erikinu vidēlo elastību, vai kā ssavādāk. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Sat Feb 20, 2010 3:10 am Post subject: |
|
Rēķini tā, kā izskatās labāk. Pat daži fizikas library'i atļauj lietotājam nomainīt elastības rēķināšanas formulu. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Feb 20, 2010 12:30 pm Post subject: |
|
kkeemmss wrote: | nu dad drīz varēšu kerties pie vektoru saskaitisanas 2d plaknē, bet vēl pirms tam ir jasaprot tas, ka tur sanāk ja katrai bumbai elastība ir savādāka, vai tai sadursmē es erikinu vidēlo elastību, vai kā ssavādāk. |
Kas ir bumbas elastība? Elastība piemīt sadursmei starp diviem ķermeņiem, nevis katram atsevišķi. Tāpat kā berzes koeficients nepiemīt katram ķermenim vai vielai atsevišķi. Tas piemīt tikai diviem ķermeņiem/vielām saskaroties. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|