Search in sources :

Example 6 with Engine

use of com.chrisali.javaflightsim.simulation.propulsion.Engine in project j6dof-flight-sim by chris-ali.

the class Aircraft method toString.

/**
 *  Outputs the stability derivatives, mass properties, and wing geometry of an aircraft
 * @see java.lang.Object#toString()
 */
public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("======================\n");
    sb.append(this.name).append(" Aircraft Parameters:\n");
    sb.append("======================\n\n");
    sb.append("Engines\n\n");
    for (Engine engine : engines) sb.append(engine.toString()).append("\n");
    sb.append("\\nStability Derivatives\n\n");
    for (StabilityDerivatives stabDer : stabDerivs.keySet()) sb.append(stabDer.toString()).append(": ").append(stabDerivs.get(stabDer)).append("\n");
    sb.append("\nWing Geometry\n\n");
    for (WingGeometry wingGeo : wingGeometry.keySet()) sb.append(wingGeo.toString()).append(": ").append(wingGeometry.get(wingGeo)).append("\n");
    sb.append("\nMass Properties\n\n");
    for (MassProperties massProp : massProps.keySet()) sb.append(massProp.toString()).append(": ").append(massProps.get(massProp)).append("\n");
    sb.append("\nGround Reaction\n\n");
    for (GroundReaction gndReact : groundReaction.keySet()) sb.append(gndReact.toString()).append(": ").append(groundReaction.get(gndReact)).append("\n");
    return sb.toString();
}
Also used : Engine(com.chrisali.javaflightsim.simulation.propulsion.Engine)

Example 7 with Engine

use of com.chrisali.javaflightsim.simulation.propulsion.Engine in project j6dof-flight-sim by chris-ali.

the class ReadWriteJsonTest method WriteThenReadJsonAircraftTest.

@Test
public void WriteThenReadJsonAircraftTest() {
    String aircraftName = "TwinNavion";
    Aircraft aircraft = FileUtilities.readAircraftConfiguration(aircraftName);
    String assertion = "Property to serialize should not be null";
    assertNotNull(assertion, aircraft);
    assertEquals("Names should be equal", aircraftName, aircraft.getName());
    assertNotNull(assertion, aircraft.getMassProps());
    assertNotNull(assertion, aircraft.getWingGeometry());
    assertNotNull(assertion, aircraft.getStabDerivs());
    assertNotNull(assertion, aircraft.getGroundReaction());
    assertNotNull(assertion, aircraft.getEngines());
    for (Engine engine : aircraft.getEngines()) {
        assertNotNull(assertion, engine);
    }
    aircraft.save();
    Aircraft readAircraft = FileUtilities.readAircraftConfiguration(aircraftName);
    assertion = "Deserialized property should not be null";
    assertNotNull(assertion, readAircraft);
    assertEquals("Names should be equal", aircraftName, readAircraft.getName());
    assertNotNull(assertion, readAircraft.getMassProps());
    assertNotNull(assertion, readAircraft.getWingGeometry());
    assertNotNull(assertion, readAircraft.getStabDerivs());
    assertNotNull(assertion, readAircraft.getGroundReaction());
    assertNotNull(assertion, readAircraft.getEngines());
    for (Engine engine : readAircraft.getEngines()) {
        assertNotNull(assertion, engine);
    }
}
Also used : Aircraft(com.chrisali.javaflightsim.simulation.aircraft.Aircraft) Engine(com.chrisali.javaflightsim.simulation.propulsion.Engine) Test(org.junit.Test)

Example 8 with Engine

use of com.chrisali.javaflightsim.simulation.propulsion.Engine in project j6dof-flight-sim by chris-ali.

the class SoundCollection method setRPM.

/**
 * Uses sound blending with cosine and linear functions with volume and pitch properties, respectively
 * to mesh together engine sounds as a function of RPM
 */
public void setRPM() {
    float gainLow, pitchLow, gainMed, pitchMed, gainHi, pitchHi, gainMax, pitchMax;
    double RPM;
    int engineNumber;
    Set<Engine> engineList = aircraft.getEngines();
    for (Engine engine : engineList) {
        engineNumber = engine.getEngineNumber();
        SoundEvent engLow = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_LOW");
        SoundEvent engMed = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_MED");
        SoundEvent engHigh = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_HIGH");
        SoundEvent engMax = Enum.valueOf(SoundEvent.class, "ENGINE_" + engineNumber + "_MAX");
        SoundCategory rpmEnum = Enum.valueOf(SoundCategory.class, "RPM_" + engineNumber);
        RPM = soundValues.get(rpmEnum);
        gainLow = (float) ((RPM > 300 && RPM < 1800) ? Math.cos((RPM - 600) / 500) : 0);
        pitchLow = (float) ((RPM > 300 && RPM < 1800) ? ((1.5 - 0.75) * (RPM - 300)) / (1800 - 300) + 0.75 : 0);
        soundSources.get(engLow).setVolume(gainLow *= engineVolume);
        soundSources.get(engLow).setPitch(pitchLow);
        gainMed = (float) ((RPM > 600 && RPM < 2000) ? Math.cos((RPM - 1500) / 400) : 0);
        pitchMed = (float) ((RPM > 600 && RPM < 2000) ? ((1.5 - 0.75) * (RPM - 600)) / (2000 - 600) + 0.75 : 0);
        soundSources.get(engMed).setVolume(gainMed *= engineVolume);
        soundSources.get(engMed).setPitch(pitchMed);
        gainHi = (float) ((RPM > 1500 && RPM < 2500) ? Math.cos((RPM - 2000) / 300) : 0);
        pitchHi = (float) ((RPM > 1500 && RPM < 2500) ? ((1.5 - 0.75) * (RPM - 1500)) / (2500 - 1500) + 0.75 : 0);
        soundSources.get(engHigh).setVolume(gainHi *= engineVolume);
        soundSources.get(engHigh).setPitch(pitchHi);
        gainMax = (float) ((RPM > 1900 && RPM < 3000) ? Math.cos((RPM - 2600) / 400) * 2 : 0);
        pitchMax = (float) ((RPM > 1900 && RPM < 3000) ? ((1.25 - 0.95) * (RPM - 1900)) / (3000 - 1900) + 0.95 : 0);
        soundSources.get(engMax).setVolume(gainMax *= engineVolume);
        soundSources.get(engMax).setPitch(pitchMax);
    }
}
Also used : Engine(com.chrisali.javaflightsim.simulation.propulsion.Engine)

Aggregations

Engine (com.chrisali.javaflightsim.simulation.propulsion.Engine)8 Aircraft (com.chrisali.javaflightsim.simulation.aircraft.Aircraft)2 Vector3D (org.apache.commons.math3.geometry.euclidean.threed.Vector3D)2 Aerodynamics (com.chrisali.javaflightsim.simulation.aircraft.Aerodynamics)1 EnumMap (java.util.EnumMap)1 Test (org.junit.Test)1