本文整理汇总了C++中jsbsim::FGPropulsion::GetEngine方法的典型用法代码示例。如果您正苦于以下问题:C++ FGPropulsion::GetEngine方法的具体用法?C++ FGPropulsion::GetEngine怎么用?C++ FGPropulsion::GetEngine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类jsbsim::FGPropulsion
的用法示例。
在下文中一共展示了FGPropulsion::GetEngine方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getEngPLA
int JSBSimModel::getEngPLA(LCreal* const pla, const int max) const
{
if (fdmex == 0) return 0;
JSBSim::FGPropulsion* Propulsion = fdmex->GetPropulsion();
if (Propulsion == 0) return 0;
JSBSim::FGFCS* FCS = fdmex->GetFCS();
if (FCS == 0) return 0;
// return throttle PLA (percent)
if (pla == 0 || max <= 0) {
return 0;
}
int num = getNumberOfEngines();
if (max < num) {
num = max;
}
for (int i = 0; i < num; i++) {
JSBSim::FGEngine* eng = Propulsion->GetEngine(i);
double t = FCS->GetThrottlePos(i);
double tmin = eng->GetThrottleMin();
double tmax = eng->GetThrottleMax();
double throttle = (t - tmin) / (tmax - tmin) * 100.0;
pla[i] = (LCreal)throttle;
}
return num;
}
示例2: getEngRPM
int JSBSimModel::getEngRPM(LCreal* const rpm, const int max) const
{
if (fdmex == 0) return 0;
JSBSim::FGPropulsion* Propulsion = fdmex->GetPropulsion();
if (Propulsion == 0) return 0;
if (rpm == 0 || max <= 0) {
return 0;
}
int num = getNumberOfEngines();
if (max < num) {
num = max;
}
for (int i = 0; i < num; i++) {
JSBSim::FGEngine* eng = Propulsion->GetEngine(i);
switch (eng->GetType()) {
case JSBSim::FGEngine::etPiston:
{
JSBSim::FGPiston* eng1 = (JSBSim::FGPiston *) eng;
rpm[i] = (LCreal)eng1->getRPM();
}
break;
case JSBSim::FGEngine::etElectric:
{
JSBSim::FGElectric* eng1 = (JSBSim::FGElectric *) eng;
rpm[i] = (LCreal)eng1->getRPM();
}
break;
case JSBSim::FGEngine::etTurbine:
{
JSBSim::FGTurbine* eng1 = (JSBSim::FGTurbine *) eng;
rpm[i] = (LCreal)eng1->GetN2();
}
break;
case JSBSim::FGEngine::etTurboprop:
{
JSBSim::FGTurboProp* eng1 = (JSBSim::FGTurboProp *) eng;
rpm[i] = (LCreal)eng1->GetN1();
}
break;
case JSBSim::FGEngine::etRocket:
rpm[i] = 0.0;
break;
default:
break;
}
}
return num;
}
示例3: getEngOilPressure
int JSBSimModel::getEngOilPressure(LCreal* const oil, const int max) const
{
if (fdmex == 0) return 0;
JSBSim::FGPropulsion* Propulsion = fdmex->GetPropulsion();
if (Propulsion == 0) return 0;
// return Engine Oil Pressure
if (oil == 0 || max <= 0) {
return 0;
}
int num = getNumberOfEngines();
if (max < num) {
num = max;
}
for (int i = 0; i < num; i++) {
JSBSim::FGEngine* eng = Propulsion->GetEngine(i);
switch (eng->GetType()) {
case JSBSim::FGEngine::etPiston:
{
JSBSim::FGPiston* eng1 = (JSBSim::FGPiston *) eng;
oil[i] = (LCreal)eng1->getOilPressure_psi();
}
break;
case JSBSim::FGEngine::etTurbine:
{
JSBSim::FGTurbine* eng1 = (JSBSim::FGTurbine *) eng;
oil[i] = (LCreal)eng1->getOilPressure_psi();
}
break;
case JSBSim::FGEngine::etTurboprop:
{
JSBSim::FGTurboProp* eng1 = (JSBSim::FGTurboProp *) eng;
oil[i] = (LCreal)eng1->getOilPressure_psi();
}
break;
case JSBSim::FGEngine::etRocket:
case JSBSim::FGEngine::etElectric:
oil[i] = 0.0;
break;
default:
break;
}
}
return num;
}
示例4: getEngThrust
int JSBSimModel::getEngThrust(LCreal* const fn, const int max) const
{
if (fdmex == 0) return 0;
JSBSim::FGPropulsion* Propulsion = fdmex->GetPropulsion();
if (Propulsion == 0) return 0;
if (fn == 0 || max <= 0) {
return 0;
}
int num = getNumberOfEngines();
if (max < num) {
num = max;
}
for (int i = 0; i < num; i++) {
JSBSim::FGThruster* thruster = Propulsion->GetEngine(i)->GetThruster();
fn[i] = (LCreal)thruster->GetThrust();
}
return num;
}
示例5: getEngFuelFlow
int JSBSimModel::getEngFuelFlow(LCreal* const ff, const int max) const
{
if (fdmex == 0) return 0;
JSBSim::FGPropulsion* Propulsion = fdmex->GetPropulsion();
if (Propulsion == 0) return 0;
// Return fuel flow rate lbs/hour
if (ff == 0 || max <= 0) {
return 0;
}
int num = getNumberOfEngines();
if (max < num) {
num = max;
}
for (int i = 0; i < num; i++) {
JSBSim::FGEngine* eng = Propulsion->GetEngine(i);
ff[i] = (LCreal)eng->getFuelFlow_pph();
}
return num;
}
示例6: getEngNozzle
int JSBSimModel::getEngNozzle(LCreal* const pla, const int max) const
{
if (fdmex == 0) return 0;
JSBSim::FGPropulsion* Propulsion = fdmex->GetPropulsion();
if (Propulsion == 0) return 0;
// return nozzle position (percentage)
if (pla == 0 || max <= 0) {
return 0;
}
int num = getNumberOfEngines();
if (max < num) {
num = max;
}
for (int i = 0; i < num; i++) {
JSBSim::FGEngine* eng = Propulsion->GetEngine(i);
switch (eng->GetType()) {
case JSBSim::FGEngine::etTurbine:
{
JSBSim::FGTurbine* eng1 = (JSBSim::FGTurbine *) eng;
pla[i] = (LCreal)(eng1->GetNozzle() * 100.0);
}
break;
case JSBSim::FGEngine::etTurboprop:
{
JSBSim::FGTurboProp* eng1 = (JSBSim::FGTurboProp *) eng;
pla[i] = (LCreal)(eng1->GetNozzle() * 100.0);
}
break;
case JSBSim::FGEngine::etPiston:
case JSBSim::FGEngine::etRocket:
case JSBSim::FGEngine::etElectric:
pla[i] = 0.0;
break;
default:
break;
}
}
return num;
}
示例7: reset
//------------------------------------------------------------------------------
// reset() --
//------------------------------------------------------------------------------
void JSBSimModel::reset()
{
BaseClass::reset();
pitchTrimPos = (LCreal)0.0;
pitchTrimRate = (LCreal)0.1;
pitchTrimSw = (LCreal)0.0;
rollTrimPos = (LCreal)0.0;
rollTrimRate = (LCreal)0.1;
rollTrimSw = (LCreal)0.0;
// Get our Player (must have one!)
Simulation::Player* p = static_cast<Simulation::Player*>( findContainerByType(typeid(Simulation::Player)) );
if (p == 0) return;
// must have strings set
if (rootDir == 0 || model == 0) return;
// Must also have the JSBSim object
if (fdmex == 0) {
// must have a JSBSim property manager
if (propMgr == 0) {
propMgr = new JSBSim::FGPropertyManager();
}
fdmex = new JSBSim::FGFDMExec(propMgr);
std::string RootDir(rootDir->getString());
fdmex->SetAircraftPath(RootDir + "aircraft");
fdmex->SetEnginePath(RootDir + "engine");
fdmex->SetSystemsPath(RootDir + "systems"); // JSBSim-1.0 or after only
fdmex->LoadModel(model->getString());
JSBSim::FGPropertyManager* propMgr = fdmex->GetPropertyManager();
if (propMgr != 0) {
hasHeadingHold = propMgr->HasNode("ap/heading_hold") && propMgr->HasNode("ap/heading_setpoint");
hasVelocityHold = propMgr->HasNode("ap/airspeed_hold") && propMgr->HasNode("ap/airspeed_setpoint");
hasAltitudeHold = propMgr->HasNode("ap/altitude_hold") && propMgr->HasNode("ap/altitude_setpoint");
#if 0
// CGB this isn't working for some reason. I set the values directly in "dynamics" for now.
if (hasHeadingHold) {
propMgr->Tie("ap/heading_hold", this, &JSBSimModel::isHeadingHoldOn);
propMgr->Tie("ap/heading_setpoint", this, &JSBSimModel::getCommandedHeadingD);
}
if (hasVelocityHold) {
propMgr->Tie("ap/airspeed_hold", this, &JSBSimModel::isVelocityHoldOn);
propMgr->Tie("ap/airspeed_setpoint", this, &JSBSimModel::getCommandedVelocityKts);
}
if (hasAltitudeHold) {
propMgr->Tie("ap/altitude_hold", this, &JSBSimModel::isAltitudeHoldOn);
propMgr->Tie("ap/altitude_setpoint", this, &JSBSimModel::getCommandedAltitude * Basic::Distance::M2FT);
}
#endif
}
}
#if 0
// CGB TBD
reset = 0;
freeze = 0;
#endif
JSBSim::FGInitialCondition* fgic = fdmex->GetIC();
if (fgic == 0) return;
fgic->SetAltitudeASLFtIC(Basic::Distance::M2FT * p->getAltitude());
#if 0
fgic->SetTrueHeadingDegIC(Basic::Angle::R2DCC * p->getHeading());
fgic->SetRollAngleDegIC(Basic::Angle::R2DCC * p->getRoll());
fgic->SetPitchAngleDegIC(Basic::Angle::R2DCC * p->getPitch());
#else
fgic->SetPsiDegIC(Basic::Angle::R2DCC * p->getHeading());
fgic->SetPhiDegIC(Basic::Angle::R2DCC * p->getRoll());
fgic->SetThetaDegIC(Basic::Angle::R2DCC * p->getPitch());
#endif
fgic->SetVtrueKtsIC(Basic::Distance::M2NM * p->getTotalVelocity() * 3600.0f);
fgic->SetLatitudeDegIC(p->getInitLatitude());
fgic->SetLongitudeDegIC(p->getInitLongitude());
JSBSim::FGPropulsion* Propulsion = fdmex->GetPropulsion();
JSBSim::FGFCS* FCS = fdmex->GetFCS();
if (Propulsion != 0 && FCS != 0) {
Propulsion->SetMagnetos(3);
for (unsigned int i=0; i < Propulsion->GetNumEngines(); i++) {
FCS->SetMixtureCmd(i, 1.0);
FCS->SetThrottleCmd(i, 1.0);
FCS->SetPropAdvanceCmd(i, 1.0);
FCS->SetMixturePos(i, 1.0);
FCS->SetThrottlePos(i, 1.0);
FCS->SetPropAdvance(i, 1.0);
JSBSim::FGEngine* eng = Propulsion->GetEngine(i);
eng->SetRunning(true);
JSBSim::FGThruster* thruster = eng->GetThruster();
thruster->SetRPM(1000.0);
}
Propulsion->SetFuelFreeze(p->isFuelFrozen());
Propulsion->InitRunning(-1); // -1 refers to "All Engines"
Propulsion->GetSteadyState();
//.........这里部分代码省略.........