Beispiel #1
0
    def step1(self):
        self.text = """\
    <h3><center>Command Lists</center></h3>
    <p>Demos the use of command lists to perform complicated oribtal manouvers.</p>

    <p>Available commands are (one per line):</p>
    <ul>
        <li>wait(t) - waits for <em>t<em> seconds</li>
        <li>at(t) - waits until time <em>t<em></li>
        <li>prograde() - returns <em>prograde<em> unit vector</li>
        <li>retrograde() - returns <em>retrograde<em> unit vector</li>
        <li>normal() - returns <em>orbit-normal<em> unit vector</li>
        <li>antinormal() - returns <em>orbit-antinormal<em> unit vector</li>
        <li>dv(dv) - applies <em>dv<em> change of velocity</li>
    </ul>
    <p>An example command list:</p>
    <pre>
    wait(10)  # wait 10 seconds
    dv(prograde() * 100)  # prograde burn, 100 m/s
    at(100)  # wait until time=100 seconds
    dv(prograde() * 200)  # prograde burn, 200 m/s
    </pre>
"""
        self.sim.__init__(0)
        self.sim.bodies = [Body.generate_circular_equatorial_orbit(1.0E7),
                           Body.generate_circular_equatorial_orbit(1.0E6, (0.0, 1.0, 1.0, 1.0))]

        self.sim.bodies[0].pos_viz_mode = Body.POSITION_VISUALISATIONS['rv']
        self.sim.bodies[1].pos_viz_mode = Body.POSITION_VISUALISATIONS['rv']

        self.reset_sim()
        self.viz_window.switch_view_north(12.0)
Beispiel #2
0
    def step1(self):
        self.text = """\
    <h3><center>Hohman Transfers</center></h3>
    <p>Hohman transfer orbits are used to transfer between two circular orbits in the same plane.</p>

    <p>Let's start with a circular orbit at altitude of 1,000 km above Earth, and a target orbit that is also circular
    at an altitude of 10,000 km. Both orbits are equatorial.</p>
"""
        self.sim.__init__(0)
        self.sim.bodies = [Body.generate_circular_equatorial_orbit(1.0E6, (0.0, 1.0, 1.0, 1.0)),
                           Body.generate_circular_equatorial_orbit(1.0E7)]

        self.reset_sim()
        self.viz_window.switch_view_north(12.0)
Beispiel #3
0
    def __init__(self, num_random_objs):
        self.bodies = []
        self.selected_body = None

        if num_random_objs > 0:
            self.selected_body = 0
            self.bodies.append(Body.generate_circular_equatorial_orbit(6.0E5, (0.0, 1.0, 1.0, 1.0)))
            self.bodies.append(Body.generate_circular_equatorial_orbit(1.2E6))
            for x in xrange(num_random_objs - 2):
                self.bodies.append(Body.generate_random_orbit())

        self.pos_viz_mode = Body.POSITION_VISUALISATIONS['symbol']
        self.orbit_viz_mode = Body.ORBIT_VISUALISATIONS['all']

        self.set_defaults()