1
0
Fork 0

Fix NaN in FGAILocalTraffic::FlyTrafficPattern

This commit is contained in:
Csaba Halasz 2009-10-25 15:09:35 +01:00 committed by Tim Moore
parent d2c7179cd0
commit de7a6b5e01

View file

@ -1146,24 +1146,8 @@ void FGAILocalTraffic::FlyTrafficPattern(double dt) {
double axx = gxx - wxx; // Plane in-air velocity x component
double ayy = gyy - wyy; // Plane in-air velocity y component
// Now we want the angle between gxx and axx (which is the crab)
double maga = sqrt(axx*axx + ayy*ayy);
double magg = sqrt(gxx*gxx + gyy*gyy);
crab = acos((axx*gxx + ayy*gyy) / (maga * magg));
// At this point this works except we're getting the modulus of the angle
crab = atan2(ayy - gyy, axx - gxx) * DCL_RADIANS_TO_DEGREES;
//cout << "crab = " << crab << '\n';
// Make sure both headings are in the 0->360 circle in order to get sane differences
dclBoundHeading(wind_from);
dclBoundHeading(track);
if(track > wind_from) {
if((track - wind_from) <= 180) {
crab *= -1.0;
}
} else {
if((wind_from - track) >= 180) {
crab *= -1.0;
}
}
} else { // on the ground - crab dosen't apply
crab = 0.0;
}
@ -1171,6 +1155,7 @@ void FGAILocalTraffic::FlyTrafficPattern(double dt) {
//cout << "X " << orthopos.x() << " Y " << orthopos.y() << " SLOPE " << slope << " elev " << _pos.elev() * SG_METER_TO_FEET << '\n';
_hdg = track + crab;
dclBoundHeading(_hdg);
dist = vel * 0.514444 * dt;
_pos = dclUpdatePosition(_pos, track, slope, dist);
}