Detect zero length fuselage in YASim/Airplane.cpp. Also, initialized _failureMsg member in the constructor and added another check for failure.
This commit is contained in:
parent
41752bab57
commit
54691c0086
1 changed files with 10 additions and 0 deletions
|
@ -51,6 +51,8 @@ Airplane::Airplane()
|
||||||
_liftRatio = 1;
|
_liftRatio = 1;
|
||||||
_cruiseAoA = 0;
|
_cruiseAoA = 0;
|
||||||
_tailIncidence = 0;
|
_tailIncidence = 0;
|
||||||
|
|
||||||
|
_failureMsg = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Airplane::~Airplane()
|
Airplane::~Airplane()
|
||||||
|
@ -507,6 +509,10 @@ float Airplane::compileFuselage(Fuselage* f)
|
||||||
float fwd[3];
|
float fwd[3];
|
||||||
Math::sub3(f->front, f->back, fwd);
|
Math::sub3(f->front, f->back, fwd);
|
||||||
float len = Math::mag3(fwd);
|
float len = Math::mag3(fwd);
|
||||||
|
if (len == 0) {
|
||||||
|
_failureMsg = "Zero length fuselage";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
float wid = f->width;
|
float wid = f->width;
|
||||||
int segs = (int)Math::ceil(len/wid);
|
int segs = (int)Math::ceil(len/wid);
|
||||||
float segWgt = len*wid/segs;
|
float segWgt = len*wid/segs;
|
||||||
|
@ -688,6 +694,10 @@ void Airplane::compile()
|
||||||
_model.setGroundEffect(gepos, gespan, 0.15f);
|
_model.setGroundEffect(gepos, gespan, 0.15f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// solve function below resets failure message
|
||||||
|
// so check if we have any problems and abort here
|
||||||
|
if (_failureMsg) return;
|
||||||
|
|
||||||
solveGear();
|
solveGear();
|
||||||
if(_wing && _tail) solve();
|
if(_wing && _tail) solve();
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Reference in a new issue