h$       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                            Safe-Inferred&+ None&+M    Safe-Inferred&+ !"#$ "#!$ Safe-Inferred&++,-./+-.,/None&+ 6789:;<=> 9;<:=678> Safe-Inferred&+&KLMNOKMNLO Safe-Inferred&+Z VWXYZ[\]^_ VXYWZ[\]^_None&+?ghijklmnopqrstuvjlmknopqrstughiv None+geomancy,Quaternion construction from axis and angle.geomancyRotation between vectors.1(in other words: the quaternion needed to rotate v1 so that it matches v2)geomancyOrient towards a point.Use "rotationBetween" if you don't need to keep the object upright. None&+?f   None +? kgeomancy Construct  from row notation.geomancyReduce  with a function with row notation of arguments.geomancyBuild a Mat4 from a list-of-lists kind of container with row-major ordering of elements.  fromRowMajor2d (Linear.mkTransformation dir pos) :: Transform geomancy Construct a  from column notation.geomancyReduce  with a function with column notation for arguments.geomancyI, the identity matrix..Neutral element of its monoid, so you can use .geomancy"Compute an inverse matrix, slowly.geomancy%Matrix - column vector multiplication None+< ~geomancyApply transformation to a vector, then normalize with perspective divisiongeomancy?Matrix - column vector multiplication with perspective divisionNone + !"#+,-.9:;?@ABCDEF"GHI&'()*+JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk[\]l^_"mnop&'()*+qrst u v w [ \ x y z { ^ _ | } ~              k    [ \ ] ^ _                                                       'geomancy-0.2.2.3-1ByopgMBcqj6biutpWnBrFGeomancy.IVec2Geomancy.IVec3Geomancy.IVec4Geomancy.UVec2Geomancy.UVec3Geomancy.UVec4 Geomancy.Vec2 Geomancy.Vec3Geomancy.Quaternion Geomancy.Vec4 Geomancy.Mat4Geomancy.TransformGeomancy.Vulkan.ProjectionGeomancy.Vulkan.ViewGeomancyPaths_geomancyIVec2 WithIVec2ivec2 withIVec2 fromTuple$fStorableIVec2 $fNumIVec2 $fNFDataIVec2 $fEqIVec2 $fOrdIVec2 $fShowIVec2PackedunPackedIVec3 WithIVec3ivec3 withIVec3packed$fStorableIVec3 $fNumIVec3 $fNFDataIVec3$fStorablePacked $fEqPacked $fOrdPacked $fShowPacked$fNFDataPacked $fNumPacked $fEqIVec3 $fOrdIVec3 $fShowIVec3IVec4 WithIVec4ivec4 withIVec4$fStorableIVec4 $fNumIVec4 $fNFDataIVec4 $fEqIVec4 $fOrdIVec4 $fShowIVec4UVec2 WithUVec2uvec2 withUVec2$fStorableUVec2 $fNumUVec2 $fNFDataUVec2 $fEqUVec2 $fOrdUVec2 $fShowUVec2UVec3 WithUVec3uvec3 withUVec3$fStorableUVec3 $fNumUVec3 $fNFDataUVec3 $fEqUVec3 $fOrdUVec3 $fShowUVec3UVec4 WithUVec4uvec4 withUVec4$fStorableUVec4 $fNumUVec4 $fNFDataUVec4 $fEqUVec4 $fOrdUVec4 $fShowUVec4Vec2WithVec2vec2withVec2^*^/lerpdot normalize$fStorableVec2$fFractionalVec2 $fNumVec2 $fNFDataVec2$fEqVec2 $fOrdVec2 $fShowVec2Vec3WithVec3vec3withVec3fromVec2cross$fStorableVec3$fFractionalVec3 $fNumVec3 $fNFDataVec3$fFractionalPacked$fEqVec3 $fOrdVec3 $fShowVec3 Quaternion quaternionwithQuaternionslerp conjugatenorm quadranceqNaN axisAnglerotate rotatePointrotationBetweenlookAtUp$fStorableQuaternion$fNumQuaternion$fNFDataQuaternion$fEqQuaternion$fOrdQuaternion$fShowQuaternionVec4WithVec4vec4withVec4 fromVec22fromVec3$fStorableVec4$fFractionalVec4 $fNumVec4 $fNFDataVec4$fEqVec4 $fOrdVec4 $fShowVec4Mat4rowMajor withRowMajortoListRowMajortoListRowMajor2dfromRowMajor2dcolMajor withColMajortoListColMajortoListColMajor2didentity transposeinverse pointwisezipWithscalarMultiply!* matrixProduct$fStorableMat4 $fShowMat4 $fMonoidMat4$fSemigroupMat4 $fNFDataMat4 Transform unTransformapply!. translate translateVscale3scalescaleXscaleYscaleZscaleXYrotateXrotateYrotateZrotateQdirPos$fShowTransform$fSemigroupTransform$fMonoidTransform$fStorableTransform perspectiveinfinitePerspectiveorthoOffCenterlookAtorthoFitScreenbaseGHC.Basememptyversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName