dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

bum bum sadursme

 
dev.gamez.lv Forum Index -> Matemātika un fizika
View previous topic :: View next topic  
Author Message
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: 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 Smile
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: 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
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Feb 20, 2010 12:56 am    Post subject:

Jā, tagad sanāk pareizi.
Back to top
View user's profile Send e-mail
kkeemmss



Joined: 04 Jan 2007
Posts: 232
Location: Riga

PostPosted: 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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Matemātika un fizika All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
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