00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _SIMFCT_H_
00021 #define _SIMFCT_H_
00022
00023 #include <math.h>
00024 #include <stdio.h>
00025 #include <string.h>
00026 #ifdef WIN32
00027 #include <float.h>
00028 #define isnan _isnan
00029 #endif
00030
00031 #include <tgf.h>
00032 #include <track.h>
00033 #include <car.h>
00034 #include <raceman.h>
00035 #include <simu.h>
00036 #include "carstruct.h"
00037 #include <robottools.h>
00038
00039 extern void SimConfig(tCarElt *carElt);
00040 extern void SimReConfig(tCarElt *carElt);
00041 extern void SimUpdate(tSituation*, double deltaTime, int telemetry);
00042 extern void SimInit(int nbcars);
00043 extern void SimShutdown(void);
00044
00045 extern void SimAxleConfig(tCar *car, int index);
00046 extern void SimAxleUpdate(tCar *car, int index);
00047
00048 extern void SimCarConfig(tCar *car);
00049 extern void SimCarUpdate(tCar *car, tSituation*);
00050 extern void SimCarUpdate2(tCar *car, tSituation*);
00051
00052 extern void SimSuspCheckIn(tSuspension *susp);
00053 extern void SimSuspUpdate(tSuspension *susp);
00054 extern void SimSuspConfig(void *hdle, char *section, tSuspension *susp, tdble F0, tdble X0);
00055
00056 extern void SimWheelConfig(tCar *car, int index);
00057 extern void SimWheelUpdateRide(tCar *car, int index);
00058 extern void SimWheelUpdateForce(tCar *car, int index);
00059 extern void SimWheelUpdateRotation(tCar *car);
00060 extern void SimUpdateFreeWheels(tCar *car, int axlenb);
00061
00062
00063 extern void SimSteerConfig(tCar *car);
00064 extern void SimSteerUpdate(tCar *car);
00065
00066 extern void SimBrakeConfig(void *hdle, char *section, tBrake *brake);
00067 extern void SimBrakeUpdate(tCar *car, tWheel *wheel, tBrake *brake);
00068 extern void SimBrakeSystemConfig(tCar *car);
00069 extern void SimBrakeSystemUpdate(tCar *car);
00070
00071 extern void SimAeroConfig(tCar *car);
00072 extern void SimAeroUpdate(tCar *car, tSituation *s);
00073 extern void SimWingConfig(tCar *car, int index);
00074 extern void SimWingUpdate(tCar *car, int index, tSituation *s);
00075
00076 extern void SimCarUpdateWheelPos(tCar *car);
00077
00078 extern void SimTransmissionConfig(tCar *car);
00079 extern void SimTransmissionUpdate(tCar *car);
00080 extern void SimGearboxUpdate(tCar *car);
00081
00082 extern void SimDifferentialConfig(void *hdle, char *section, tDifferential *differential);
00083 extern void SimDifferentialUpdate(tCar *car, tDifferential *differential, int first);
00084
00085 extern void SimEngineConfig(tCar *car);
00086 extern void SimEngineUpdateTq(tCar *car);
00087 extern tdble SimEngineUpdateRpm(tCar *car, tdble axleRpm);
00088 extern void SimEngineShutdown(tCar *car);
00089
00090 extern void SimCarCollideZ(tCar *car);
00091 extern void SimCarCollideXYScene(tCar *car);
00092 extern void SimCarCollideCars(tSituation*);
00093 extern void SimCarCollideConfig(tCar *car);
00094 extern void SimCarCollideShutdown(int nbcars);
00095 extern void SimCarCollideInit(void);
00096
00097 extern void NaiveRotate (t3Dd v, t3Dd u, t3Dd* v0);
00098 extern void NaiveInverseRotate (t3Dd v, t3Dd u, t3Dd* v0);
00099
00100 extern tdble PartialFlowRectangle(tdble theta, tdble psi);
00101 extern tdble PartialFlowSmooth(tdble theta, tdble psi);
00102 extern tdble PartialFlowSphere(tdble theta, tdble psi);
00103
00104 extern tdble SimDeltaTime;
00105 extern int SimTelemetry;
00106 extern tCar *SimCarTable;
00107 extern t3Dd vectStart[];
00108 extern t3Dd vectEnd[];
00109
00110 extern tdble simDammageFactor[];
00111 extern tdble simSkidFactor[];
00112
00113 #define SIM_VECT_COLL 12
00114 #define SIM_VECT_SPD 13
00115 #define SIM_VECT_ACCEL 14
00116 #define SIM_WHEEL_SPD 16
00117 #define SIM_WHEEL_ACCEL 20
00118
00119 #define SIM_Z_OFFSET 2.0
00120
00121 #endif
00122
00123
00124