[{"name":"Math.Vector2","comment":" A high performance linear algebra library using native Elm ADT.\n\n\n# Create\n\n@docs Vec, vec2\n\n\n# Get and Set\n\nThe set functions create a new copy of the vector, updating a single field.\n\n@docs getX, getY, setX, setY\n\n\n# Operations\n\n@docs add, sub, negate, scale, divBy, dot, mul, normalize, direction\n@docs length, lengthSquared, distance, distanceSquared\n\n\n# Transform\n\n@docs mapX, mapY, map\n@docs apply, lift2, lift3\n\n\n# Conversions\n\n@docs toRecord, fromRecord, fromTuple\n@docs toFloat, round, floor, ceiling, truncate\n\n","unions":[{"name":"Vec","comment":" Two dimensional vector type\n","args":["a"],"cases":[["Vec",["a","a"]]]}],"aliases":[],"values":[{"name":"add","comment":" Vector addition: a + b\n","type":"Math.Vector2.Vec number -> Math.Vector2.Vec number -> Math.Vector2.Vec number"},{"name":"apply","comment":" ","type":"Math.Vector2.Vec (a -> b) -> Math.Vector2.Vec a -> Math.Vector2.Vec b"},{"name":"ceiling","comment":" Ceiling function, rounding up.\n","type":"Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Int"},{"name":"direction","comment":" The normalized direction from b to a: (a - b) / |a - b|\n","type":"Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Float"},{"name":"distance","comment":" The distance between two vectors.\n","type":"Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Float -> Basics.Float"},{"name":"distanceSquared","comment":" The square of the distance between two vectors.\n","type":"Math.Vector2.Vec number -> Math.Vector2.Vec number -> number"},{"name":"divBy","comment":" Divide the vector by a scalar: v / s\n\nShorthand for `scale (1 / s)`\n\n","type":"Basics.Float -> Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Float"},{"name":"dot","comment":" The dot product of a and b\n","type":"Math.Vector2.Vec number -> Math.Vector2.Vec number -> number"},{"name":"floor","comment":" Floor function, rounding down.\n","type":"Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Int"},{"name":"fromRecord","comment":" Construct a vector from a record.\n","type":"{ x : a, y : a } -> Math.Vector2.Vec a"},{"name":"fromTuple","comment":" Construct a vector from a tuple.\n","type":"( a, a ) -> Math.Vector2.Vec a"},{"name":"getX","comment":" Extract the x component of a vector.\n","type":"Math.Vector2.Vec a -> a"},{"name":"getY","comment":" Extract the y component of a vector.\n","type":"Math.Vector2.Vec a -> a"},{"name":"length","comment":" The length of the given vector: |a|\n","type":"Math.Vector2.Vec Basics.Float -> Basics.Float"},{"name":"lengthSquared","comment":" The square of the length of the given vector: |a| \\* |a|\n","type":"Math.Vector2.Vec number -> number"},{"name":"lift2","comment":" Lift a binary function to vectors.\n\n    lift2 (+) (Vec 1 1) (Vec 2 2)\n    --> Vec 3 3 : Vec number\n\nKeep in mind that this comes at a cost of doing a step extra and if you need performance,\nyou might be better off deconstructing and applying the function manually.\n\n","type":"(a -> b -> c) -> Math.Vector2.Vec a -> Math.Vector2.Vec b -> Math.Vector2.Vec c"},{"name":"lift3","comment":" ","type":"(a -> b -> c -> d) -> Math.Vector2.Vec a -> Math.Vector2.Vec b -> Math.Vector2.Vec c -> Math.Vector2.Vec d"},{"name":"map","comment":" Map a fn to the x and y value\n","type":"(a -> b) -> Math.Vector2.Vec a -> Math.Vector2.Vec b"},{"name":"mapX","comment":" Map a fn to the x value\n","type":"(a -> a) -> Math.Vector2.Vec a -> Math.Vector2.Vec a"},{"name":"mapY","comment":" Map a fn to the y value\n","type":"(a -> a) -> Math.Vector2.Vec a -> Math.Vector2.Vec a"},{"name":"mul","comment":" Component-wise multiplication\n","type":"Math.Vector2.Vec number -> Math.Vector2.Vec number -> Math.Vector2.Vec number"},{"name":"negate","comment":" Vector negation: -a\n","type":"Math.Vector2.Vec number -> Math.Vector2.Vec number"},{"name":"normalize","comment":" A unit vector with the same direction as the given vector: a / |a|\n","type":"Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Float"},{"name":"round","comment":" Round the number components to the nearest integer.\n","type":"Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Int"},{"name":"scale","comment":" Multiply the vector by a scalar: s \\* v\n","type":"number -> Math.Vector2.Vec number -> Math.Vector2.Vec number"},{"name":"setX","comment":" Update the x component of a vector, returning a new vector.\n","type":"a -> Math.Vector2.Vec a -> Math.Vector2.Vec a"},{"name":"setY","comment":" Update the y component of a vector, returning a new vector.\n","type":"a -> Math.Vector2.Vec a -> Math.Vector2.Vec a"},{"name":"sub","comment":" Vector subtraction: a - b\n","type":"Math.Vector2.Vec number -> Math.Vector2.Vec number -> Math.Vector2.Vec number"},{"name":"toFloat","comment":" Convert an integer vector into a float vector.\n","type":"Math.Vector2.Vec Basics.Int -> Math.Vector2.Vec Basics.Float"},{"name":"toRecord","comment":" Convert a vector to a record.\n","type":"Math.Vector2.Vec a -> { x : a, y : a }"},{"name":"truncate","comment":" Truncate the number components, rounding towards zero.\n","type":"Math.Vector2.Vec Basics.Float -> Math.Vector2.Vec Basics.Int"},{"name":"vec2","comment":" Creates a new 2-element vector with the given values.\n","type":"a -> a -> Math.Vector2.Vec a"}],"binops":[]},{"name":"Math.Vector3","comment":" A high performance linear algebra library using native Elm ADT.\n\n\n# Create\n\n@docs Vec, vec3\n\n\n# Get and Set\n\nThe set functions create a new copy of the vector, updating a single field.\n\n@docs getX, getY, getZ, setX, setY, setZ\n\n\n# Operations\n\n@docs add, sub, negate, scale, divBy, dot, mul, normalize, direction\n@docs length, lengthSquared, distance, distanceSquared\n\n\n# Transform\n\n@docs mapX, mapY, mapZ, map\n@docs apply, lift2, lift3\n\n\n# Conversions\n\n@docs toRecord, fromRecord, fromTuple\n@docs toFloat, round, floor, ceiling, truncate\n\n","unions":[{"name":"Vec","comment":" Three dimensional vector type\n","args":["a"],"cases":[["Vec",["a","a","a"]]]}],"aliases":[],"values":[{"name":"add","comment":" Vector addition: a + b\n","type":"Math.Vector3.Vec number -> Math.Vector3.Vec number -> Math.Vector3.Vec number"},{"name":"apply","comment":" ","type":"Math.Vector3.Vec (a -> b) -> Math.Vector3.Vec a -> Math.Vector3.Vec b"},{"name":"ceiling","comment":" Ceiling function, rounding up.\n","type":"Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Int"},{"name":"direction","comment":" The normalized direction from b to a: (a - b) / |a - b|\n","type":"Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Float"},{"name":"distance","comment":" The distance between two vectors.\n","type":"Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Float -> Basics.Float"},{"name":"distanceSquared","comment":" The square of the distance between two vectors.\n","type":"Math.Vector3.Vec number -> Math.Vector3.Vec number -> number"},{"name":"divBy","comment":" Divide the vector by a scalar: s \\* v\n","type":"Basics.Float -> Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Float"},{"name":"dot","comment":" The dot product of a and b\n","type":"Math.Vector3.Vec number -> Math.Vector3.Vec number -> number"},{"name":"floor","comment":" Floor function, rounding down.\n","type":"Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Int"},{"name":"fromRecord","comment":" Construct a vector from a record.\n","type":"{ x : a, y : a, z : a } -> Math.Vector3.Vec a"},{"name":"fromTuple","comment":" Construct a vector from a tuple.\n","type":"( a, a, a ) -> Math.Vector3.Vec a"},{"name":"getX","comment":" Extract the x component of a vector.\n","type":"Math.Vector3.Vec a -> a"},{"name":"getY","comment":" Extract the y component of a vector.\n","type":"Math.Vector3.Vec a -> a"},{"name":"getZ","comment":" Extract the z component of a vector.\n","type":"Math.Vector3.Vec a -> a"},{"name":"length","comment":" The length of the given vector: |a|\n","type":"Math.Vector3.Vec Basics.Float -> Basics.Float"},{"name":"lengthSquared","comment":" The square of the length of the given vector: |a| \\* |a|\n","type":"Math.Vector3.Vec number -> number"},{"name":"lift2","comment":" Lift a binary function to vectors.\n\n    lift2 (+) (Vec 1 1 1) (Vec 2 2 2)\n    --> Vec 3 3 3 : Vec number\n\nKeep in mind that this comes at a cost of doing a step extra and if you need performance,\nyou might be better off deconstructing and applying the function manually.\n\n","type":"(a -> b -> c) -> Math.Vector3.Vec a -> Math.Vector3.Vec b -> Math.Vector3.Vec c"},{"name":"lift3","comment":" Lift a binary function to vectors.\n","type":"(a -> b -> c -> d) -> Math.Vector3.Vec a -> Math.Vector3.Vec b -> Math.Vector3.Vec c -> Math.Vector3.Vec d"},{"name":"map","comment":" Map a fn to the x and y value\n","type":"(a -> b) -> Math.Vector3.Vec a -> Math.Vector3.Vec b"},{"name":"mapX","comment":" Map a fn to the x value\n","type":"(a -> a) -> Math.Vector3.Vec a -> Math.Vector3.Vec a"},{"name":"mapY","comment":" Map a fn to the y value\n","type":"(a -> a) -> Math.Vector3.Vec a -> Math.Vector3.Vec a"},{"name":"mapZ","comment":" Map a fn to the z value\n","type":"(a -> a) -> Math.Vector3.Vec a -> Math.Vector3.Vec a"},{"name":"mul","comment":" Component-wise multiplication\n","type":"Math.Vector3.Vec number -> Math.Vector3.Vec number -> Math.Vector3.Vec number"},{"name":"negate","comment":" Vector negation: -a\n","type":"Math.Vector3.Vec number -> Math.Vector3.Vec number"},{"name":"normalize","comment":" A unit vector with the same direction as the given vector: a / |a|\n","type":"Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Float"},{"name":"round","comment":" Round the number components to the nearest integer.\n","type":"Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Int"},{"name":"scale","comment":" Multiply the vector by a scalar: s \\* v\n","type":"number -> Math.Vector3.Vec number -> Math.Vector3.Vec number"},{"name":"setX","comment":" Update the x component of a vector, returning a new vector.\n","type":"a -> Math.Vector3.Vec a -> Math.Vector3.Vec a"},{"name":"setY","comment":" Update the y component of a vector, returning a new vector.\n","type":"a -> Math.Vector3.Vec a -> Math.Vector3.Vec a"},{"name":"setZ","comment":" Update the z component of a vector, returning a new vector.\n","type":"a -> Math.Vector3.Vec a -> Math.Vector3.Vec a"},{"name":"sub","comment":" Vector subtraction: a - b\n","type":"Math.Vector3.Vec number -> Math.Vector3.Vec number -> Math.Vector3.Vec number"},{"name":"toFloat","comment":" Convert an integer vector into a float vector.\n","type":"Math.Vector3.Vec Basics.Int -> Math.Vector3.Vec Basics.Float"},{"name":"toRecord","comment":" Convert a vector to a record.\n","type":"Math.Vector3.Vec a -> { x : a, y : a, z : a }"},{"name":"truncate","comment":" Truncate the number components, rounding towards zero.\n","type":"Math.Vector3.Vec Basics.Float -> Math.Vector3.Vec Basics.Int"},{"name":"vec3","comment":" Creates a new 3-element vector with the given values.\n","type":"a -> a -> a -> Math.Vector3.Vec a"}],"binops":[]}]