View previous topic :: View next topic |
Author |
Message |
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Fri Jan 19, 2007 4:30 pm Post subject: Kaa pielikt "berzi" "aatruma" vektoram? |
|
Berze domats kaa anglju FRICTION
Veektors aatrums VELOCITY
(ja kaads nesaprot kontekstu)
ideja ka man ir particle effekts un partiklim ir ik pa noteiktu laika vieniibu jaazaudee dalja savas energinas "berzes/pretestiibas" rezultaataa
lietojot kodu:
Code: |
if (velocity.X > 0)
velocity.X -= friction * (float)elapsed;
else if (velocity.X < 0)
velocity.X += friction * (float)elapsed;
else
{
velocity.X = 0;
}
if (velocity.Y > 0)
velocity.Y -= friction * (float)elapsed;
else if (velocity.Y < 0)
velocity.Y += friction * (float)elapsed;
else
{
velocity.Y = 0;
}
|
kur elapsed - laiks
partiklji izvietojas taadaa kaa uz gala nolikta kavadraata formaa nevis pa rinki - partikli pievelkas x un y asij...
kaada ir pareiza matemaatiksaa operaacija kas ir jaaveic lai ieguutu "pareizu" effektu? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jan 19, 2007 5:24 pm Post subject: |
|
Parasti vides berzes vektors darbojas pretēji ātruma vektoram. Piemēram gaisa pretestību bieži modelē kā F = - k * v, kur k=kautkāds koeficients (pozitīvs). Vai arī mazus objektus, kas kustas lēnā ātrumā pa kādu šķidrumu.
Tātad vienkāršākajā gadījumā: new_v = old_v + elapsed_time * (-k * old_v). Kur old_v=vecais ātruma vektors, k=kautkāds regulējams koeficients (sākumā ņem ļoti maziņu, un palielini to, ja gribi lielāku vides pretestību), elapsed_time=laika solis kopš iepriekšējās simulācijas.
Last edited by bubu on Fri Jan 19, 2007 11:22 pm; edited 1 time in total |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Fri Jan 19, 2007 10:58 pm Post subject: |
|
Paldies, viss stradaa pareizi
Code: | velocity += (float)elapsed * (-friction * velocity); |
|
|
Back to top |
|
|
|