예제 #1
0
파일: Controls.cpp 프로젝트: airware/jsbsim
Controls::Controls(Aeromatic *p) :
    System(p, true),
    _ctype(0)
{
    _description.push_back("Aircraft control");

    Param *controls = new Param("Control system", 0, _ctype);
    _inputs.push_back(controls);

    _control[0] = new CableControls(p);
    controls->add_option(_control[0]->get_description());

    _control[1] = new YawDamper(p);
    controls->add_option(_control[1]->get_description());

    _control[2] = new FlyByWire(p);
//  controls->add_option(_control[2]->get_description());
}
예제 #2
0
파일: Aircraft.cpp 프로젝트: AEgisTG/jsbsim
Aeromatic::Aeromatic() : Aircraft(),
    _atype(LIGHT),
    _system_files(true),
    _metric(0),
    _stall_speed(0),
    _stall_weight(0),
    _max_weight(10000.0f),
    _empty_weight(0),
    _length(40.0f),
    _payload(10000.0f),
    _user_wing_data(-2),
    _no_engines(0),
    _wing_mounted_engines(false)
{
    _inertia[0] = _inertia[1] = _inertia[2] = 0.0;
    _payload = _max_weight;
    _stall_weight = _max_weight;

    _wing.span = 40.0f;
    // Historically speaking most aircraft are modern since the
    // number of aircraft types has exploded since the late sixties.
    if (_atype == LIGHT) {
        _wing.Ktf = 0.87f; // for NACA-6
    } else {
        _wing.Ktf = 0.95f; // for supercritical
    }
    _htail.flap_ratio = 0.27f;	// elevator
    _vtail.flap_ratio = 0.25f;	// rudder

    /* general information */
    _general.push_back(new Param("Use dedicates System files?", "Select no to keep all systems in the aircraft configuration file", _system_files));
    Param* units = new Param("Select a system of measurement", "The options affects all units for length, surface area, speed and thrust/power", _metric);
    _general.push_back(units);
    units->add_option("English (feet, pounds)");
    units->add_option("Metric (meters, kilograms)");

    /* performance, weight and balance */
    _weight_balance.push_back(new Param("Stall speed VS1 (clean, no flaps)", "The stall speed at maximum takeoff weight", _stall_speed, _metric, SPEED));
    _weight_balance.push_back(new Param("Maximum takeoff weight", 0, _max_weight, _metric, WEIGHT));
    _weight_balance.push_back(new Param("Empty weight", _estimate, _empty_weight, _metric, WEIGHT));
    _weight_balance.push_back(new Param("Inertia Ixx", _estimate, _inertia[X], _metric, INERTIA));
    _weight_balance.push_back(new Param("Inertia Iyy", _estimate, _inertia[Y], _metric, INERTIA));
    _weight_balance.push_back(new Param("Inertia Izz", _estimate, _inertia[Z], _metric, INERTIA));

    /* geometry */
    _geometry.push_back(new Param("Length", 0, _length, _metric, LENGTH));
    Param* wingshape = new Param("Select a wing shape", "Wing shapes determaine the lift and drag of the aircraft", _wing.shape);
    _geometry.push_back(wingshape);
    wingshape->add_option("Straight");
    wingshape->add_option("Elliptical");
    wingshape->add_option("Delta");
//  wingshape->add_option("Variable sweep");

    _geometry.push_back(new Param("Wing span", 0, _wing.span, _metric, LENGTH));
    _geometry.push_back(new Param("Wing area", _estimate, _wing.area, _metric, AREA));
    _geometry.push_back(new Param("Wing aspect ratio", _estimate, _wing.aspect));
    _geometry.push_back(new Param("Wing taper ratio", _estimate, _wing.taper));
    _geometry.push_back(new Param("Wing chord", _estimate, _wing.chord, _metric, LENGTH));
    _geometry.push_back(new Param("Wing incidence", _estimate, _wing.incidence));
    _geometry.push_back(new Param("Wing dihedral", _estimate, _wing.dihedral));
    _geometry.push_back(new Param("Wing sweep (quarter chord)", _estimate, _wing.sweep));
    _geometry.push_back(new Param("Htail area", _estimate, _htail.area, _metric, AREA));
    _geometry.push_back(new Param("Htail arm", _estimate, _htail.arm, _metric, LENGTH));
    _geometry.push_back(new Param("Vtail area", _estimate, _vtail.area, _metric, AREA));
    _geometry.push_back(new Param("Vtail arm", _estimate, _vtail.arm, _metric, LENGTH));

    Param *param = new Param("Type of aircraft", "Select closest aerodynamic type", _atype);
    _general.push_back(param);

    _aircraft[0] = new Light(this);
    param->add_option(_aircraft[0]->get_description());
    _aircraft[1] = new Performance(this);
    param->add_option(_aircraft[1]->get_description());
    _aircraft[2] = new Fighter(this);
    param->add_option(_aircraft[2]->get_description());
    _aircraft[3] = new JetTransport(this);
    param->add_option(_aircraft[3]->get_description());
    _aircraft[4] = new PropTransport(this);
    param->add_option(_aircraft[4]->get_description());

    Aircraft::_aircraft = this;

    _CLalpha[0] = _CLalpha[1] = _CLalpha[2] = 0.0f;
    _CLmax[0] = _CLmax[1] = _CLmax[2] = 0.0f;
    _CL0 = 0.0f; _CLde = 0.0f; _CLq = 0.0f; _CLadot = 0.0f;
    _CD0 = 0.0f; _CDde = 0.0f; _CDbeta = 0.0f;
    _Kdi = 0.0f; _Mcrit = 0.0f;
    _CYbeta = 0.0f; _CYr = 0.0f; _CYp = 0.0f; _CYdr = 0.0f;
    _Clbeta = 0.0f; _Clp = 0.0f; _Clr = 0.0f; _Clda = 0.0f; _Cldr = 0.0f;
    _Cmalpha = 0.0f; _Cmde = 0.0f; _Cmq = 0.0f; _Cmadot = 0.0f;
    _Cnbeta = 0.0f; _Cnr = 0.0f; _Cnp = 0.0f; _Cndr = 0.0f; _Cnda = 0.0f;
}