View previous topic :: View next topic |
Author |
Message |
WhiteFalcon
Joined: 16 May 2010 Posts: 102 Location: Rīga
|
Posted: Sun Oct 17, 2010 1:23 pm Post subject: Ātrum kārbas simulēšana |
|
Sveiki.Vēlos pajautāt vai kāds nevar izpalīdzēt vai vismaz idejas padot ātrumkārbas simulēšanai.Sēdēju ~ 2h un visādi meiģināju simulēt bet nesanāk. Meiģināju
ar switch
Code: |
switch(RobaID)
{
case 0: AutoAtrums = -2; break;//AtpakalGaita
case 1: AutoAtrums = 0; break;//Neitralais
case 2: AutoAtrums = +1; break;//1Robs
case 3: AutoAtrums = +0.6f; break;//2Robs
case 4: AutoAtrums = +0.3f; break;//3Robs
case 5: AutoAtrums = +0.1f; break;//4Robs
case 6: AutoAtrums = +0.01f; break;//5Robs
case 7: AutoAtrums = +0.001f; break;//6Robs
case 8: AutoAtrums = +0; break;//Max
} |
Modeļa ātrumu nosaka ThrustForce
meiģināju salikt pa atrumiem
Code: | if (ThrustForce >= 39)//2
{
RobsSP = 3;
}
if (ThrustForce >= 69)//3
{
RobsSP = 4;
}
if (ThrustForce >= 99)//4
{
RobsSP = 5;
}
if (ThrustForce >= 149)//5
{
RobsSP = 6;
}
if (ThrustForce >= 220)//6
{
RobsSP = 7;
}
if (RobsSP == 0)
{
RobaID = 0;
ThrustForce += AutoAtrums;
}
if (RobsSP == 1)//Neitrals
{
RobaID = 1;
ThrustForce += AutoAtrums;
}
if (RobsSP == 2)
{
RobaID = 2;
ThrustForce += AutoAtrums;
}
if (RobsSP == 3)
{
RobaID = 3;
ThrustForce += AutoAtrums;
}
if (RobsSP == 4)
{
RobaID = 4;
ThrustForce += AutoAtrums;
}
if (RobsSP == 5)
{
RobaID = 5;
ThrustForce += AutoAtrums;
}
if (RobsSP == 6)
{
RobaID = 6;
ThrustForce += AutoAtrums;
}
if (RobsSP == 7)
{
RobaID = 7;
ThrustForce += AutoAtrums;
} |
Itkā atrums pieaug bet atlaīžot gāzi izmantoju līdzigu principu bet ātrums un "Robi" nepārsledzas..
+ attelojot ātrumu rādas komati. Vai nav kāds veids kā var noapalot?
piem ja ir 132.645784 uz 132?
varbūt ir kādi citi veidi |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
|
Back to top |
|
|
WhiteFalcon
Joined: 16 May 2010 Posts: 102 Location: Rīga
|
Posted: Sun Oct 17, 2010 8:27 pm Post subject: |
|
emu šitos skatijies nevienu vie reizi + neizprotu un nezinu ka pielietot dažas no tam formulām
šeit ja pareizi sastadiju fomulu tad atrums 1 "robā" sanāk kkur 35km/h
Code: | V = 88f * RobaGKID * 3.42f * 0.7f / 6.0f; |
bet ka lai automatize ? |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Sun Oct 17, 2010 11:32 pm Post subject: |
|
Es neredzu, kur tu ņem vērā cik tālu nospiests gāzes pedālis. Un ātrumu pa taisno no motora nekad nerēķina. Parasti rēķina spēku, pēc tam ar fizikas formulām (ņemot vērā svaru, berzi utt.) aprēķina ātrumu. _________________ long time; /* know C */ |
|
Back to top |
|
|
WhiteFalcon
Joined: 16 May 2010 Posts: 102 Location: Rīga
|
Posted: Mon Oct 18, 2010 12:25 am Post subject: |
|
par kādu pedaļa nospiešanu iet runa ?
formulu ņēmu no šejienes
Quote: | Fdrive = u * Tengine * xg * xd * n / Rw
where
u is a unit vector which reflects the car's orientation,
Tengine is the torque of the engine at a given rpm,
xg is the gear ratio,
xd is the differential ratio,
n is transmission efficiency and
Rw is wheel radius. |
priekš xg izmantoju switch principu katram ātrumam sava vērtība. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Mon Oct 18, 2010 1:15 am Post subject: |
|
Ar šo formulu tu aprēķini dzinēja spēku. Lai tiktu līdz ātrumam, tev nāksies izmantot vēl virkni ar formulām (tas, ko es rakstīju iepriekš).
Pedāļa nospiešana = cik % ir nospiests gāzes pedālis. BMW gadījumā tas parasti ir 100%. _________________ long time; /* know C */ |
|
Back to top |
|
|
WhiteFalcon
Joined: 16 May 2010 Posts: 102 Location: Rīga
|
Posted: Tue Oct 19, 2010 1:17 pm Post subject: |
|
Kāds vismaz varētu nosaukt pāris no formulām ?
1 būtu berze. kas vēl ?
ja tas ko es aprēķiāju sanak dziēja spēks tad kā lai aprēķia ātrumu ?
Iegūtie spēki:
1Robs: 35,112
2Robs:70,224
3Robs:105,336
4Robs:140,448
5Robs:175,56
6Robs:210,672 |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Tue Oct 19, 2010 2:42 pm Post subject: |
|
Nu tev tak 2. postā atbildēja: http://regedit.i365.pl/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html
Tur ir visas tev vajadzīgās formulas, ja vēlies ko tādu izveidot, tad nāksies pašam lasīt.
Ja tiešām to nevari, varu tev pāris formulas izvilkt:
Ftraction = u * Engineforce
Fdrag = - Cdrag * v * |v|
Frr = - Crr * v
Flong = Ftraction + Fdrag + Frr
a = F / M
v = v + dt * a
Lūdzu! _________________ long time; /* know C */ |
|
Back to top |
|
|
WhiteFalcon
Joined: 16 May 2010 Posts: 102 Location: Rīga
|
Posted: Tue Oct 19, 2010 9:07 pm Post subject: |
|
Liels paldies elvman
man jau ir daļa no šīm formulām... bet formulās nav tas ko sākumā jautāju... man ar pretestībām,berzēm untt nebūtu problēmas bet mani intresē tas kāds auto ātrums attiecībā pēc "robu"
tik pat mierīgi es varētu uzlikt komandu Atrums++;
Man tur nevajag kodu virknes kas apreiķina precizitati lidz 0,1. Vajag vienkāršu formulu 1 vai 2 pārējās es pats samemeklētu.
Ja intresē tad izmantoju šīs formulas
Code: | force = Direction * thrustAmount * ThrustForce;
acceleration = force / Mass;
Velocity += acceleration * elapsed;
Velocity *= DragFactor;
Position += Velocity * elapsed; |
viss notiek objekts pārvietojas.. bet ar vienu noteiktu ātrumu. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Wed Oct 20, 2010 12:06 am Post subject: |
|
Kāpēc tu ātrumu reizini ar dragFactor? Laikam neesi skatījies formulas.
Īsti nevaru atrast vietu, kāpēc tev mašīna ceļo vienā ātrumā. Tai vajadzētu vai nu stāvēt uz vietas (ja elapsed == 0) vai arī pastāvīgi paātrināties līdz bezgalībai.
Bet kopumā kods atšķirībā no pirmā izskatās jau tuvāk tam, ko tu gribi. _________________ long time; /* know C */ |
|
Back to top |
|
|
WhiteFalcon
Joined: 16 May 2010 Posts: 102 Location: Rīga
|
Posted: Wed Oct 20, 2010 8:33 am Post subject: |
|
tas formulas ko iedevu jau man pastav kopš laika kad uzdevu jautajumu
public const float DragFactor = 0.98f;
ja neizmantoju viņu auto nav savācams vienkārši slīd nepartraukti
par elapsed izmantoju
Code: | float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; |
|
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Wed Oct 20, 2010 3:33 pm Post subject: |
|
Nu pag vecīt, tu nevari vienkārši ņemt maģisku konstanti un reizināt ar ātrumu. Tā tev tur nekad nekas nestrādās kā vajag. Ej secīgi pēc formulām un viss buš kā vajag. Tad, kad jau esi ieguvis ātrumu tad viss, tas arī ir fināla ātrums ar ko tu ceļo. Nevajag to vairs ne ar ko reizināt. _________________ long time; /* know C */ |
|
Back to top |
|
|
|