i'm looking the code and I have a question about the wheel contact..
how is managed?
here: (wheel.cpp)
- Code: Select all
wheel->zRoad = Zroad = RtTrackHeightL(&(wheel->trkPos));
you calcolate the distance from the road (always vertically, not by the normal of the car, is right?)
and here: (wheel.cpp)
- Code: Select all
RtTrackSurfaceNormalL(&(wheel->trkPos), &normal);
you calculate the normal, always? also if for example the car is jumping and is 1, 2 meters over the road?
and here: (car.cpp)
- Code: Select all
RtTrackSurfaceNormalL(&(car->trkPos), &car_normal);
car->normal = car_normal; // Use precalculated values
// Get normal N_q in local coordinate system
QuatInverseRotate(car_normal, car->posQuat, rel_car_normal);
// Increment the upside down timer. This can be used later to
// remove cars that have been upside down for too long.
if (rel_car_normal.z > 0) {
the normal of the car is calculated from the cog point and doesn't depend by the distance of the car to the road, and usually (if is on the road or also over the road, like jumps) the car_normal.z is > 0.. right
thanks in advance and congrats for the code.. is very interesting!
