[alg] stuiteren

Pagina: 1
Acties:

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Hoe kan ik het stuiteren van een bal simuleren (in delphi).
Ik heb al het volgende:
1. De bal valt
2. De bal verliest iets energie
3. De bal kaatst terug
4. De bal bereikt z'n hoogste punt
5. Als het hoogste punt > 0 is, dan ga naar 1
6. Stop

Dat met het vallen dat lukt me wel:
hoogte(begin) is x1
hoogte(eind) is x0
en die x wordt gegeven door 0,5 * 9,81 * t^2

Ik weet ook wel, dat de hoogte-energie (mgh) wordt omgezet in kinetische energie, en dat mgh = 0,5 * m * v^2.
Daarmee kan je de snelheid op de grond bepalen.

Tot nu toe weet ik dus hoe ik bij de grond kom. Maar hoe kom ik terug naar m'n hoogste punt?????

Het lijkt me dat die kinetische energie weer wordt omgezet in hoogte-energie, maar wat is de formule voor de hoogte op een bepaald punt? En hoe kan ik de elasticiteit van de bal instellen?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

je weet dat onder een schuine hoek geldt dat de hoek van uitval gelijk is aan de hoek van inval :)
voor de rest zou ik het ook ff niet weten :)

Doet iets met Cloud (MS/IBM)


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Nou bedoel ik eerst nog maar eens recht naar beneden vallen. Sorry dat ik dat er niet bij heb gezet, nu alsnog. Het gaat mij in de eerste plaats alleen om die stuiterbeweging.

  • ThePriest
  • Registratie: Mei 2000
  • Laatst online: 30-01-2024

ThePriest

the one, the only

...te lang geleden dit, maar elasticiteit zal te maken hebben met startsnelheid van bal vanaf de grond (dus elasticiteit is omgekeerde snelheid waarmee bal grond raakt + variabel getal die elasticiteit aangeeft).

  • intoxicated
  • Registratie: Januari 2001
  • Niet online

intoxicated

Haaaai :w | ALT-S

Op zondag 10 februari 2002 15:07 schreef dev-null het volgende:
Het lijkt me dat die kinetische energie weer wordt omgezet in hoogte-energie, maar wat is de formule voor de hoogte op een bepaald punt? En hoe kan ik de elasticiteit van de bal instellen?
Je weet dus wat de hoogte is, waarvan de bal in het begin viel. En je weet, dat in een wrijvingsloze situatie Etotaal = m*g*h + .5*m*v2 = Ek max = Eh max. Dus als je weer omhoog stuitert, neemt de hoogte-energie lineair toe en neemt de kinetische energie lineair af (dus Eh max - Eh = Ek) en daarmee kun je doodeenvoudig de huidige snelheid berekenen.

De hoogte op een bepaald moment is natuurlijk te berekenen met v(0)*t+.5*-9.8*t2.

Elasticiteit zou je gewoon als een percentage kunnen instellen.

"Anyone who does not agree with me is mentally sick, and should be shot I'm afraid to say."
- Pastor Richards @ VCPR


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Ja dat snap ik, dan kan ik dus de snelheid berekenen, en hoe volgt daaruit de positie? Is dat makkelijk om te schrijven?

  • intoxicated
  • Registratie: Januari 2001
  • Niet online

intoxicated

Haaaai :w | ALT-S

Op zondag 10 februari 2002 15:20 schreef dev-null het volgende:
Ja dat snap ik, dan kan ik dus de snelheid berekenen, en hoe volgt daaruit de positie? Is dat makkelijk om te schrijven?
Stel:
- De beweging omhoog heeft een positieve waarde.
- Er is geen wrijving.
- t(0) het moment dat het balletje stuitert.
- v(0) is de snelheid die het balletje beneden heeft wanneer het zich omhoog beweegt.

Dan is de hoogte van het balletje:
v(0)*t + .5*a*t2

Een voorbeeldje:
Een balletje met een massa van 1.0 kg viel van 5.0 meter hoog. We willen weten, hoe hoog het balletje na 1.5 seconde (geteld vanaf het loslaten) is.

Uitwerking:
Eh max = m * g * h = 1.0 * 9.81 * 5.0 = 49.05J
Eh max = Ek max, dus:
49.05 = .5 * 1.0 * v2, daaruit volgt:
98.1 = v2
9.9 ms-1 = vmax ( = v(0) )

We willen eerst weten, hoe lang het vallen duurde.
5.0 + .5 * -9.81 * t2 = 0
.5 * -9.81 * t2 = -5
-9.81 * t2 = -10
t2 = 1.02 s
t = 1.01 s

De t die relevant is voor de omhooggaande beweging is dus 1.5 - 1.01 = 0.49 s , dus:
9.9 * 0.49 + .5 * -9.81 * 0.492 = 3.68 meter.

En nou hoop ik, dat ik nergens een foutje heb gemaakt. :)

"Anyone who does not agree with me is mentally sick, and should be shot I'm afraid to say."
- Pastor Richards @ VCPR


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
OK tnx dude! Ik ga het vanmiddag ff uitwerken, en als ik het progje klaar heb zal ik de source ff posten.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 10 februari 2002 15:37 schreef intoxicated het volgende:
Een balletje met een massa van 1.0 kg viel van 5.0 meter hoog. We willen weten, hoe hoog het balletje na 1.5 seconde (geteld vanaf het loslaten) is.
Daar heb je helemaal het gewicht niet voor nodig :+

Versnelling (grafitatie constante) en beginsnelheid is voldoende ;)

[edit]
Maar voor de stuitering misschien wel :)

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 28-08 16:22
Als je nu het pad van het balletje voorstelt als een vector.
Dan is het vrij eenvoudig om per tijdsinterval de nieuwe positie van het object te bepalen.
Een vector heeft altijd een richting en een grootte.
Die grootte is dan je snelheid. (ik zou dus reals gebruiken, anders krijg je vreemde effecten ;) )
Verder is een vector dus makkelijk te gebruiken om de plaats te bepalen (ongeacht de dimensie)
Met botsingen kun je om te beginnen gewoon rechte objecten gebruiken, zoals een muur, dan hoef je maar één component van de vector te inverteren en eventueel alle componenten te vermenigvuldigen met een wrijvingsconstante (0< w <= 1) (bij w=0 staat de bal meteen stil na een botsing en bij w=1 heb je geen verlies. Bij w >1 is het niet meer volgens de wet van behoud van energie >:) )
Als je later wat complexere botsingen wilt implementeren (bijv. 2 ballen die tegen elkaar botsen) zul je je LIneaire algebra er weer bij moeten halen (in- en uitproducten, matrix-vermenigvuldigingen etc.)

Verder kun je er een gravitatie component aan hangen (y- of z-component van de vector wordt per tijdsstap iets kleiner gemaakt)
Alleen zou ik wel even wat aandacht besteden aan de randdetectie (dus niet testen op if z=0 then z_vector := -z_vector * w ; wanneer z een real is, of wanneer z_vector zeer klein is.)

succes d'r mee.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)

Pagina: 1