-- In this example, we have a person jumping a rope. (You could -- improve the look of the person, if you want!) -- Because our objects are 2D, and we want things to look like -- they are 3D, we need to change the order of drawing to make -- it look like the rope goes behind the person. -- We do that by using the sign of (cos model.time) to tell us when -- to draw the person in front or behind the rope, and using (sin model.time) -- to move the rope up and down by changing the pull point of a curve. -- Uncomment the curveHelper function to see the pull point. -- You can see why this works by looking at the wave tab of the ShapeCreator. myShapes model = [ if cos model.time < 0 then person else group [] , curve (42,0) [Pull (0,-46 * sin model.time) (-42,0) ] |> outlined (solid 1) (rgb 250 150 0) -- |> curveHelper , if cos model.time >= 0 then person else group [] ] -- Maybe you can make a better person! person = group [ circle 10 |> filled red ] type Msg = Tick Float GetKeyState update msg model = case msg of Tick t _ -> { model | time = t } init = { time = 0 }