Fix NaN in FGAILocalTraffic::FlyTrafficPattern
This commit is contained in:
parent
d2c7179cd0
commit
de7a6b5e01
1 changed files with 2 additions and 17 deletions
|
@ -1146,24 +1146,8 @@ void FGAILocalTraffic::FlyTrafficPattern(double dt) {
|
||||||
double axx = gxx - wxx; // Plane in-air velocity x component
|
double axx = gxx - wxx; // Plane in-air velocity x component
|
||||||
double ayy = gyy - wyy; // Plane in-air velocity y component
|
double ayy = gyy - wyy; // Plane in-air velocity y component
|
||||||
// Now we want the angle between gxx and axx (which is the crab)
|
// Now we want the angle between gxx and axx (which is the crab)
|
||||||
double maga = sqrt(axx*axx + ayy*ayy);
|
crab = atan2(ayy - gyy, axx - gxx) * DCL_RADIANS_TO_DEGREES;
|
||||||
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
|
|
||||||
//cout << "crab = " << crab << '\n';
|
//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
|
} else { // on the ground - crab dosen't apply
|
||||||
crab = 0.0;
|
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';
|
//cout << "X " << orthopos.x() << " Y " << orthopos.y() << " SLOPE " << slope << " elev " << _pos.elev() * SG_METER_TO_FEET << '\n';
|
||||||
|
|
||||||
_hdg = track + crab;
|
_hdg = track + crab;
|
||||||
|
dclBoundHeading(_hdg);
|
||||||
dist = vel * 0.514444 * dt;
|
dist = vel * 0.514444 * dt;
|
||||||
_pos = dclUpdatePosition(_pos, track, slope, dist);
|
_pos = dclUpdatePosition(_pos, track, slope, dist);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue