Autor Wątek:  Tarcie  (Przeczytany 3476 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2611
Tarcie
« dnia: 15 Maja 2015, 18:49:26 »
Tarcie toczne ponoć nie jest liczone poprawnie. Obecnie to wygląda następująco:
function T_MoverParameters.Adhesive(staticfriction:real): real;
begin
    if SlippingWheels=false then
     begin
        if SandDose then
           Adhesive:=(Max0R(staticfriction*(100.0+Vel)/((50.0+Vel)*11.0),0.048))*(11.0-2.0*random)
        else
           Adhesive:=(staticfriction*(100.0+Vel)/((50.0+Vel)*10))*(11.0-2.0*random);
     end
  else
     begin
        if SandDose then
           Adhesive:=(0.048)*(11-2*random)
        else
           Adhesive:=(staticfriction*0.02)*(11-2*random);
     end;
end;
Poślizg przy hamowaniu:
if (NBpA*UnitBrakeForce>TotalMassxg*Adhesive(RunningTrack.friction)/NAxles) and (Abs(V)>0.001) then
   {poslizg}
   begin
{     Fb:=Adhesive(Track.friction)*Mass*g;  }
     SlippingWheels:=true;
   end;
Poślizg przy jeździe:
if Max0R(Abs(FTrain),Fb)>TotalMassxg*Adhesive(RunningTrack.friction) then    {poslizg}
     SlippingWheels:=true;
    if SlippingWheels then
     begin
  {     TrainForce:=TrainForce-Fb; }
       nrot:=ComputeRotatingWheel((FTrain-Fb*Sign(V)-Fstand)/NAxles-Sign(nrot*Pi*WheelDiameter-V)*Adhesive(RunningTrack.friction)*TotalMass,dt,nrot);
       FTrain:=sign(FTrain)*TotalMassxg*Adhesive(RunningTrack.friction);
       Fb:=Min0R(Fb,TotalMassxg*Adhesive(RunningTrack.friction));
     end;
Tych randomizatorów Abu zbytnio nie rozumiem. Dalej wygląda ok. Funkcji liczącej tarcie statyczne nie mogę znaleźć.
Mój kanał youtube

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Odp: Tarcie
« Odpowiedź #1 dnia: 15 Maja 2015, 20:38:41 »
chodzi Ci o zmienną staticfriction?
if (NBpA*UnitBrakeForce>TotalMassxg*Adhesive(RunningTrack.friction)/NAxles) and (Abs(V)>0.001) thenAdhesive wywołuje funkcję z pierwszej części gdzie parametrem jest staticfricton a jako dana podawane jest tarcie pobrane z toru.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline youBy

  • Deweloper
  • Wiadomości: 6166
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 871
Odp: Tarcie
« Odpowiedź #2 dnia: 16 Maja 2015, 12:14:38 »
Sprawa jest nieco głębsza. Oczywiście możemy na którymkolwiek poziomie powiększyć wyliczoną wartość, tylko warto byłoby mieć świadomość, co się za tym kryje. Jeden problem jest taki, że znane mi wzory pochodzą z czasów, kiedy część pojazdów sama sobie moczyła szyny. Przyjmowane wartości współczynnika przyczepności przy ruszaniu wtedy osiągała 0,3 i dość gwałtownie spadała wraz ze wzrostem prędkości. Obecnie normą w pojazdach jest uzyskiwanie i wykorzysywanie współczynnika przyczepności na poziomie 0,35 w dobrych warunkach. Kolejna kwestia to zaszyta w naszej implementacji część losowa, która de facto (ze względu na szybką zmienność – co iterację fizyki) będzie nam obniżać otrzymywaną przyczepność o 10%. Jeszcze inna kwestia to logika binarna, która zmienia u nas skokowo wartość przyczepności przy poślizgu. Obecnie wiadomo, że współczynnik przyczepności podczas poślizgu maleje w sposób płynny (a nawet ma drugie lokalne maksimum). Jeszcze inna rzecz to kwestia doboru wzoru do rodzaju drogi/pojazdu. Dobre tory, złe tory, tramwajowe tory, szyny oblodzone/wilgotne na moście czy przy jeziorze, droga betonowa, droga asfaltowa itd. Dziś mamy jeden wzór do wszystkiego, ale to chyba tak nie działa… ;)
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.