Example EFH Jump Design

The following page describes how to construct a typical equivalent fall height ski jump using the skijumpdesign API. Make sure to install the library first.

Approach

Start by creating a 20 meter length of an approach surface (also called the in-run) which is flat and has a downward slope angle of 20 degrees. The resulting surface can be visualized with the FlatSurface.plot() method.

from skijumpdesign import FlatSurface

approach_ang = -np.deg2rad(20)  # radians
approach_len = 20.0  # meters

approach = FlatSurface(approach_ang, approach_len)

approach.plot()

(Source code, png, hires.png, pdf)

_images/build-jump-1.png

Now that a surface has been created a skier can be created. The skier can “ski” along the approach surface using the slide_on() method which generates a skiing simulation trajectory.

from skijumpdesign import Skier

skier = Skier()

approach_traj = skier.slide_on(approach)

approach_traj.plot_time_series()

(Source code)

Takeoff

The takeoff ramp is constructed with a clothoid-circle-clothoid-flat surface to transition from the approach to the desired takeoff angle, in this case 15 degrees.

from skijumpdesign import TakeoffSurface

takeoff_entry_speed = skier.end_speed_on(approach)

takeoff_ang = np.deg2rad(15)

takeoff = TakeoffSurface(skier, approach_ang, takeoff_ang,
                         takeoff_entry_speed, init_pos=approach.end)

ax = approach.plot()
takeoff.plot(ax=ax)

(Source code, png, hires.png, pdf)

_images/build-jump-3.png

The trajectory of the skier on the takeoff can be examined also.

takeoff_traj = skier.slide_on(takeoff, takeoff_entry_speed)

takeoff_traj.plot_time_series()

(Source code)

Flight

Once the skier leaves the takeoff ramp they will be in flight. The Skier.fly_to() method can be used to simulate the flight trajectory.

takeoff_vel = skier.end_vel_on(takeoff, init_speed=takeoff_entry_speed)

flight = skier.fly_to(approach, init_pos=takeoff.end,
                      init_vel=takeoff_vel)

flight.plot_time_series()

(Source code)

The flight trajectory can be plotted alongside the surfaces.

ax = approach.plot()
ax = takeoff.plot(ax=ax)
flight.plot(ax=ax)

(Source code, png, hires.png, pdf)

_images/build-jump-6.png

Landing Transition

The next step is to determine a landing transition curve.

from skijumpdesign import LandingTransitionSurface

fall_height = 0.5

landing_trans = LandingTransitionSurface(approach,
    flight, fall_height, skier.tolerable_landing_acc)

ax = approach.plot()
ax = takeoff.plot(ax=ax)
ax = flight.plot(ax=ax)
landing_trans.plot(ax=ax)

(Source code, png, hires.png, pdf)

_images/build-jump-7.png

Landing

Finally, the equivalent fall height landing surface can be generated to accommodate all takeoff speeds below the maximum takeoff speed above.

from skijumpdesign import LandingSurface

slope = FlatSurface(approach_ang, np.sqrt(landing_trans.end[0]**2 +
                                          landing_trans.end[1]**2) + 1.0)


landing = LandingSurface(skier, takeoff.end, takeoff_ang,
                         landing_trans.start, fall_height,
                         surf=slope)

ax = approach.plot()
ax = takeoff.plot(ax=ax)
ax = flight.plot(ax=ax)
ax = landing_trans.plot(ax=ax)
landing.plot(ax=ax)

(Source code, png, hires.png, pdf)

_images/build-jump-8.png

Entire Jump

There is a convenience function for plotting the jump:

from skijumpdesign import plot_jump

plot_jump(slope, approach, takeoff, landing, landing_trans, flight)

(Source code, png, hires.png, pdf)

_images/build-jump-9.png