Model that simulates friction on a hinge (i.e. rotational friction) by reducing the angular velocity during the integration step. More...
Public Member Functions | |
| RotationalFrictionModel () | |
| Create a friction model object and initialie the type to 'None'. | |
| RotationalFrictionModel (RotationalFrictionType f) | |
| Create a friction model object and initialie to the given type with some default parameters. | |
| void | SetNone () |
| Set the None friction type. | |
| void | SetLinear (double linearFrictionCoefficient) |
| Set the Linear friction type. | |
| void | SetStribeck (double stribeckStaticFriction, double stribeckFrictionScale) |
| Set the Stribeck friction type. | |
| double | ApplyFriction (double omega) |
| Apply friction to a rotational element by changing the rotational speed. | |
Properties | |
| double | LinearFrictionCoefficient [get] |
| Gets the linear friction coefficient for the linear friction model. | |
| double | StribeckStaticFriction [get] |
| Gets the static friction coefficient for the Stribeck friction model. | |
| double | StribeckFrictionScale [get] |
| Gets the scale coefficient for the Stribeck friction model. | |
Model that simulates friction on a hinge (i.e. rotational friction) by reducing the angular velocity during the integration step.
Definition at line 38 of file FrictionModel.cs.
| NewGamePhysics.Physics.RotationalFrictionModel.RotationalFrictionModel | ( | ) |
Create a friction model object and initialie the type to 'None'.
Definition at line 92 of file FrictionModel.cs.
| NewGamePhysics.Physics.RotationalFrictionModel.RotationalFrictionModel | ( | RotationalFrictionType | f | ) |
Create a friction model object and initialie to the given type with some default parameters.
Definition at line 101 of file FrictionModel.cs.
00102 { 00103 this.frictionType = f; 00104 switch (f) 00105 { 00106 case RotationalFrictionType.Linear: 00107 this.linearFrictionCoefficient = 0.0005; 00108 break; 00109 case RotationalFrictionType.Stribeck: 00110 this.stribeckStaticFriction = 0.0001; 00111 this.stribeckFrictionScale = 0.0002; 00112 break; 00113 } 00114 }
| double NewGamePhysics.Physics.RotationalFrictionModel.ApplyFriction | ( | double | omega | ) |
Apply friction to a rotational element by changing the rotational speed.
| omega | Angular velocity without friction applied. |
Definition at line 150 of file FrictionModel.cs.
00151 { 00152 // Friction difference 00153 double deltaOmega = 0.0; 00154 double o = Math.Abs(omega); 00155 00156 // Adjust by type 00157 switch (this.frictionType) 00158 { 00159 case RotationalFrictionType.None: 00160 // No friction 00161 deltaOmega = 0.0; 00162 break; 00163 case RotationalFrictionType.Linear: 00164 // Linear friction 00165 deltaOmega = linearFrictionCoefficient * o; 00166 break; 00167 case RotationalFrictionType.Stribeck: 00168 // Stribeck friction 00169 if (o < stribeckStaticFriction) 00170 { 00171 // Hinge stuck 00172 return 0.0; 00173 } 00174 else 00175 { 00176 // Calculate friction as curve 00177 deltaOmega = stribeckFrictionScale * (o - Math.Exp(-Math.Pow((o / 0.025), 0.3)) + Math.Pow(2.0 * o, (1 - 0.3))); 00178 } 00179 break; 00180 } 00181 00182 // Handle discontinuity around zero 00183 if (omega > 0.0) 00184 { 00185 omega -= deltaOmega; 00186 if (omega < 0.0) 00187 { 00188 omega = 0.0; 00189 } 00190 } 00191 else 00192 { 00193 omega += deltaOmega; 00194 if (omega > 0.0) 00195 { 00196 omega = 0.0; 00197 } 00198 } 00199 00200 return omega; 00201 }
| void NewGamePhysics.Physics.RotationalFrictionModel.SetLinear | ( | double | linearFrictionCoefficient | ) |
Set the Linear friction type.
Definition at line 127 of file FrictionModel.cs.
| void NewGamePhysics.Physics.RotationalFrictionModel.SetNone | ( | ) |
Set the None friction type.
Definition at line 119 of file FrictionModel.cs.
| void NewGamePhysics.Physics.RotationalFrictionModel.SetStribeck | ( | double | stribeckStaticFriction, | |
| double | stribeckFrictionScale | |||
| ) |
Set the Stribeck friction type.
| stribeckStaticFriction | The Stribeck static friction coefficient. | |
| stribeckFrictionScale | The Stribeck friction scale. |
Definition at line 138 of file FrictionModel.cs.
double NewGamePhysics.Physics.RotationalFrictionModel.LinearFrictionCoefficient [get] |
Gets the linear friction coefficient for the linear friction model.
Definition at line 66 of file FrictionModel.cs.
double NewGamePhysics.Physics.RotationalFrictionModel.StribeckFrictionScale [get] |
Gets the scale coefficient for the Stribeck friction model.
Definition at line 84 of file FrictionModel.cs.
double NewGamePhysics.Physics.RotationalFrictionModel.StribeckStaticFriction [get] |
Gets the static friction coefficient for the Stribeck friction model.
Definition at line 75 of file FrictionModel.cs.
1.6.2