Elm logo
elm
examples

elm-visualization

/

examples

/

Petals

Edit on Ellie

Petals

Based on the arrangement of petals in a sunflower. Demonstrates the initial layout of Force.entity.

module Petals exposing (main)


import Color exposing (Color)
import Force
import Scale
import Scale.Color
import TypedSvg exposing (circle, svg)
import TypedSvg.Attributes exposing (fill, viewBox)
import TypedSvg.Attributes.InPx exposing (cx, cy, r)
import TypedSvg.Core exposing (Svg)
import TypedSvg.Types exposing (Paint(..))


color : Int -> Color
color =
    Scale.convert (Scale.sequential Scale.Color.viridisInterpolator ( 0, 360 )) << toFloat


makePetal : Int -> Svg msg
makePetal i =
    let
        { x, y } =
            Force.entity i ()

        angle =
            modBy 360 (floor (toFloat i * (3 - sqrt 5) * pi * 180 - sqrt (toFloat i) * 4))
    in
    circle [ cx x, cy y, r 5, fill <| Paint <| color angle ] []


view : List Int -> Svg msg
view model =
    svg [ viewBox -1000 -500 2000 2000 ] <|
        List.map makePetal model


main : Svg msg
main =
    view <| List.range 1 10000