[{"name":"Geometry.Interop.LinearAlgebra.Direction2d","comment":" Conversion functions for `Direction2d`.\n\n@docs toVec2\n\n","unions":[],"aliases":[],"values":[{"name":"toVec2","comment":" Convert a `Direction2d` to a `Vec2`.\n\n    Direction2d.toVec2 Direction2d.x\n    --> vec2 1 0\n\n","type":"Direction2d.Direction2d coordinates -> Math.Vector2.Vec2"}],"binops":[]},{"name":"Geometry.Interop.LinearAlgebra.Direction3d","comment":" Conversion functions for `Direction3d`.\n\n@docs toVec3, toVec4\n\n","unions":[],"aliases":[],"values":[{"name":"toVec3","comment":" Convert a `Direction3d` to a `Vec3`.\n\n    Direction3d.toVec3 Direction3d.y\n    --> vec3 0 1 0\n\n","type":"Direction3d.Direction3d coordinates -> Math.Vector3.Vec3"},{"name":"toVec4","comment":" Convert a `Direction3d` to a `Vec4`. The resulting `Vec4` will have a W\ncomponent of 0 so that it [is not affected by translation](http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/)\nwhen performing matrix transformations.\n\n    Direction3d.toVec4 Direction3d.y\n    --> vec4 0 1 0 0\n\n","type":"Direction3d.Direction3d coordinates -> Math.Vector4.Vec4"}],"binops":[]},{"name":"Geometry.Interop.LinearAlgebra.Frame3d","comment":" Conversion functions for `Frame3d`.\n\n@docs toMat4\n\n","unions":[],"aliases":[],"values":[{"name":"toMat4","comment":" Convert a `Frame3d` to a `Mat4`. The resulting matrix can be thought of in\na couple of ways:\n\n  - It is the transformation matrix that takes the global XYZ frame and\n    transforms it to the given frame\n  - It is the transformation matrix from local coordinates in the given frame\n    to global coordinates\n\nThe first bullet implies that something like\n\n    Frame3d.atOrigin\n        |> Frame3d.translateBy displacement\n        |> Frame3d.rotateAround axis angle\n        |> Frame3d.mirrorAcross plane\n        |> Frame3d.toMat4\n\ngives you a transformation matrix that is equivalent to applying the given\ndisplacement, then the given rotation, then the given mirror. The second bullet\nmeans that, for example,\n\n    Point3d.placeIn frame\n\nis equivalent to\n\n    Point3d.transformBy (Frame3d.toMat4 frame)\n\nand\n\n    Point3d.relativeTo frame\n\nis equivalent to\n\n    Point3d.transformBy <|\n        Matrix4.inverseOrthonormal\n            (Frame3d.toMat4 frame)\n\n","type":"Frame3d.Frame3d units coordinates defines -> Math.Matrix4.Mat4"}],"binops":[]},{"name":"Geometry.Interop.LinearAlgebra.Point2d","comment":" Conversion functions for `Point2d`.\n\n@docs toVec2, fromVec2\n\n","unions":[],"aliases":[],"values":[{"name":"fromVec2","comment":" Convert a `Vec2` to a `Point2d`.\n\n    Point2d.fromVec2 (vec2 2 3)\n    --> Point2d.unsafe { x = 2, y = 3 }\n\n","type":"Math.Vector2.Vec2 -> Point2d.Point2d units coordinates"},{"name":"toVec2","comment":" Convert a `Point2d` to a `Vec2`.\n\n    Point2d.toVec2 (Point2d.meters 2 3)\n    --> vec2 2 3\n\n","type":"Point2d.Point2d units coordinates -> Math.Vector2.Vec2"}],"binops":[]},{"name":"Geometry.Interop.LinearAlgebra.Point3d","comment":" Conversion and transformation functions for `Point3d`.\n\n@docs toVec3, toVec4, fromVec3, transformBy\n\n","unions":[],"aliases":[],"values":[{"name":"fromVec3","comment":" Convert a `Vec3` to a `Point3d`.\n\n    Point3d.fromVec3 (vec3 2 1 3)\n    --> Point3d.unsafe { x = 2, y = 1, z = 3 }\n\n","type":"Math.Vector3.Vec3 -> Point3d.Point3d units coordinates"},{"name":"toVec3","comment":" Convert a `Point3d` to a `Vec3`.\n\n    Point3d.toVec3 (Point3d.meters 2 1 3)\n    --> Vector3.vec3 2 1 3\n\n","type":"Point3d.Point3d units coordinates -> Math.Vector3.Vec3"},{"name":"toVec4","comment":" Convert a `Point3d` to a `Vec4`. The resulting `Vec4` will have a W\ncomponent of 1 so that it [is affected by translation](http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/)\nwhen performing matrix transformations.\n\n    Point3d.toVec4 (Point3d.meters 2 1 3)\n    --> vec4 2 1 3 1\n\n","type":"Point3d.Point3d units coordinates -> Math.Vector4.Vec4"},{"name":"transformBy","comment":" Transform a `Point3d` by a `Mat4`;\n\n    point\n        |> Point3d.transformBy matrix\n\nis equivalent to\n\n    point\n        |> Point3d.toVec3\n        |> Matrix4.transform matrix\n        |> Point3d.fromVec3\n\nFor example:\n\n    point =\n        Point3d.meters 2 1 3\n\n    matrix =\n        Matrix4.makeTranslate3 3 4 5\n\n    Point3d.transformBy matrix point\n    --> Point3d.meters 5 5 8\n\n","type":"Math.Matrix4.Mat4 -> Point3d.Point3d units1 coordinates1 -> Point3d.Point3d units2 coordinates2"}],"binops":[]},{"name":"Geometry.Interop.LinearAlgebra.Vector2d","comment":" Conversion functions for `Vector2d`.\n\n@docs toVec2, fromVec2\n\n","unions":[],"aliases":[],"values":[{"name":"fromVec2","comment":" Convert a `Vec2` to a `Vector2d`.\n\n    Vector2d.fromVec2 (vec2 2 3)\n    --> Vector2d.unsafe { x = 2, y = 3 }\n\n","type":"Math.Vector2.Vec2 -> Vector2d.Vector2d units coordinates"},{"name":"toVec2","comment":" Convert a `Vector2d` to a `Vec2`.\n\n    Vector2d.toVec2 (Vector2d.meters 2 3)\n    --> vec2 2 3\n\n","type":"Vector2d.Vector2d units coordinates -> Math.Vector2.Vec2"}],"binops":[]},{"name":"Geometry.Interop.LinearAlgebra.Vector3d","comment":" Conversion and transformation functions for `Vector3d`.\n\n@docs toVec3, toVec4, fromVec3, transformBy\n\n","unions":[],"aliases":[],"values":[{"name":"fromVec3","comment":" Convert a `Vec3` to a `Vector3d`.\n\n    Vector3d.fromVec3 (Vector3.vec3 2 1 3)\n    --> Vector3d.unsafe { x = 2, y = 1, z = 3 }\n\n","type":"Math.Vector3.Vec3 -> Vector3d.Vector3d units coordinates"},{"name":"toVec3","comment":" Convert a `Vector3d` to a `Vec3`.\n\n    Vector3d.toVec3 (Vector3d.meters 2 1 3)\n    --> Vector3.vec3 2 1 3\n\n","type":"Vector3d.Vector3d units coordinates -> Math.Vector3.Vec3"},{"name":"toVec4","comment":" Convert a `Vector3d` to a `Vec4`. The resulting `Vec4` will have a W\ncomponent of 0 so that it [is not affected by translation](http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/)\nwhen performing matrix transformations.\n\n    Vector3d.toVec4 (Vector3d.meters 2 1 3)\n    --> vec4 2 1 3 0\n\n","type":"Vector3d.Vector3d units coordinates -> Math.Vector4.Vec4"},{"name":"transformBy","comment":" Transform a `Vector3d` by a `Mat4`; note that\n\n    vector\n        |> Vector3d.transformBy matrix\n\nis similar to but _not_ in general equivalent to\n\n    vector\n        |> Vector3d.toVec3\n        |> Matrix4.transform matrix\n        |> Vector3d.fromVec3\n\nsince `Matrix4.transform` implicitly assumes that the given argument represents\na point, not a vector, and therefore applies translation to it. Transforming a\nvector by a 4x4 matrix should in fact ignore any translation component of the\nmatrix, which this function does. For example:\n\n    vector =\n        Vector3d.meters 2 1 3\n\n    -- 90 degree rotation around the Z axis,\n    -- followed by a translation\n    matrix =\n        Matrix4.makeTranslate3 5 5 5\n            |> Matrix4.rotate (degrees 90) Vector3.k\n\n    Vector3d.transformBy matrix vector\n    --> Vector3d.meters -1 2 3\n\n","type":"Math.Matrix4.Mat4 -> Vector3d.Vector3d units1 coordinates1 -> Vector3d.Vector3d units2 coordinates2"}],"binops":[]}]