h*73      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh i j k l m n o p q r s t u v w x y z { | } ~                                                                      2.4.0 Safe-Inferred AC-VectorDummy class that enables you to request a vector in a type signature without needing to explicitly list  or  as well. AC-Vector2All vector types belong to this class. Aside from  and , these methods aren't especially useful to end-users; they're used internally by the vector arithmetic implementations. AC-Vector&Apply a function to all vector fields. AC-VectorZip two vectors together field-by-field using the supplied function (in the style of Data.List.zipWith). AC-VectorReduce a vector down to a single value using the supplied binary operator. The ordering in which this happens isn't guaranteed, so the operator should probably be associative and commutative. AC-VectorPack a list of values into a vector. Extra values are ignored, too few values yields Nothing. AC-Vector9Unpack a vector into a list of values. (Always succeeds.) AC-Vector Convert a , to a vector (with all components the same). AC-Vector The type of vector field values.  AC-VectorScale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (*) operator.The (*|) and (|*) operators are identical, but with their argument flipped. Just remember that the '|' denotes the scalar part.  AC-VectorScale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (*) operator.The (*|) and (|*) operators are identical, but with their argument flipped. Just remember that the '|' denotes the scalar part.  AC-VectorScale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (/) operator.The (/|) and (|/) operators are identical, but with their argument flipped. Just remember that the '|' denotes the scalar part.  AC-VectorScale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (/) operator.The (/|) and (|/) operators are identical, but with their argument flipped. Just remember that the '|' denotes the scalar part.  AC-Vector Take the  dot product of two vectors. This is a scalar equal to the cosine of the angle between the two vectors multiplied by the length of each vectors. AC-VectorReturn the length or  magnitude of a vector. (Note that this involves a slow square root operation.) AC-VectorNormalise a vector. In order words, return a new vector with the same direction, but a length of exactly one. (If the vector's length is zero or very near to zero, the vector is returned unchanged.) AC-Vector1Linearly interpolate between two points in space. vlinear 0 a b = a vlinear 1 a b = bvlinear 0.5 a b- would give a point exactly half way between a and b in a straight line.   7 7 7 7 Safe-Inferred AC-VectorA . represents a continuous interval between two  endpoints. AC-Vector Given two s, construct a  (swapping the endpoints if necessary so that they are in the correct order. AC-VectorFind the bounds of a list of points. (Throws an exception if the list is empty.) AC-VectorTest whether a given  falls within a particular . AC-Vector,Take the union of two ranges. The resulting  contains all points that the original ranges contained, plus any points between them (if the original ranges don't overlap). AC-VectorTake the intersection of two ranges. If the ranges do not overlap, the intersection is empty, and  is returned. (This is a good way to check whether two ranges overlap or not.) Otherwise a new  is returned that contains only the points common to both ranges. AC-Vector2Efficiently compute the union of a list of ranges.   Safe-Inferred AC-VectorThe type of 1D vectors.Owing to its particularly simple structure, this type has more class instances than 'propper' vectors have. Still, for the most part you'll probably want to just use  itself directly. Safe-Inferred( AC-VectorThe type of 1D linear transformations. Essentially, this is applying a linear function to a number. Note the Monoid= instance, which gives you access to the identity transform (mempty) and the ability to combine a series of transforms into a single transform (mappend)., AC-VectorApply a 1D transformation to a 1D point, yielding a new 1D point.(+*),(+*), Safe-Inferred 1 AC-VectorThe 1 type is basically a Range+, but all the operations over it work with  (which is really  ). While it's called a bounding box, a 1-dimensional box is in truth a simple line interval, just like Range.4 AC-VectorGiven two vectors, construct a bounding box (swapping the endpoints if necessary).5 AC-VectorFind the bounds of a list of points. (Throws an exception if the list is empty.)6 AC-VectorTest whether a  lies within a 1.7 AC-Vector"Return the minimum endpoint for a 1.8 AC-Vector"Return the maximum endpoint for a 1.9 AC-VectorTake the union of two 1 values. The result is a new 1 that contains all the points the original boxes contained, plus any extra space between them.: AC-VectorTake the intersection of two 1- values. If the boxes do not overlap, return . Otherwise return a 1: containing only the points common to both argument boxes.; AC-Vector:Efficiently compute the union of a list of bounding boxes. 132456789:; 132456789:; Safe-InferredX>A@?>A@? Safe-InferredH AC-Vector&The type of 2D linear transformations. Note the Monoid= instance, which gives you access to the identity transform (mempty) and the ability to combine a series of transforms into a single transform (mappend).P AC-VectorApply a 2D transformation to a 2D point, yielding a new 2D point. HONMLKJIP HONMLKJIP Safe-Inferred"H U AC-VectorA U8 is a 2D bounding box (aligned to the coordinate axies).[ AC-Vector1Return the X-range that this bounding box covers.\ AC-Vector1Return the Y-range that this bounding box covers.] AC-VectorGiven ranges for each coordinate axis, construct a bounding box.^ AC-VectorGiven a pair of corner points, construct a bounding box. (The points must be from opposite corners, but it doesn't matter which, corners nor which order they are given in.)_ AC-VectorFind the bounds of a list of points. (Throws an exception if the list is empty.)` AC-Vector;Test whether a given 2D vector is inside this bounding box.a AC-VectorReturn the minimum values for both coordinates. (In usual 2D space, the bottom-left corner point.)b AC-VectorReturn the maximum values for both coordinates. (In usual 2D space, the top-right corner point.)c AC-VectorTake the union of two bounding boxes. The result is a new bounding box that contains all the points the original boxes contained, plus any extra space between them.d AC-VectorTake the intersection of two bounding boxes. If the boxes do not overlap, return . Otherwise return a new bounding box containing only the points common to both argument boxes.e AC-Vector:Efficiently compute the union of a list of bounding boxes.UZYXWV[\]^_`abcdeUZYXWV[\]^_`abcde  Safe-Inferred#m AC-Vector Take the  cross product of two 3D vectors. This produces a new 3D vector that is perpendicular to the plane of the first two vectors, and who's length is equal to the sine of the angle between those vectors multiplied by their lengths. Note that $a `vcross` b = negate (b `vcross` a).hlkjimhlkjim  Safe-Inferred%It AC-Vector&The type of 3D linear transformations. Note the Monoid= instance, which gives you access to the identity transform (mempty) and the ability to combine a series of transforms into a single transform (mappend). AC-VectorApply a 3D transformation to a 3D point, yielding a new 3D point.t~}|{zyxwvut~}|{zyxwvu  Safe-Inferred*  AC-VectorA 8 is a 3D bounding box (aligned to the coordinate axies). AC-Vector1Return the X-range that this bounding box covers. AC-Vector1Return the Y-range that this bounding box covers. AC-Vector1Return the Z-range that this bounding box covers. AC-VectorGiven ranges for each coordinate axis, construct a bounding box. AC-VectorGiven a pair of corner points, construct a bounding box. (The points must be from opposite corners, but it doesn't matter which, corners nor which order they are given in.) AC-VectorFind the bounds of a list of points. (Throws an exception if the list is empty.) AC-Vector;Test whether a given 3D vector is inside this bounding box. AC-Vector.Return the minimum values for all coordinates. AC-Vector.Return the maximum values for all coordinates. AC-VectorTake the union of two bounding boxes. The result is a new bounding box that contains all the points the original boxes contained, plus any extra space between them. AC-VectorTake the intersection of two bounding boxes. If the boxes do not overlap, return . Otherwise return a new bounding box containing only the points common to both argument boxes. AC-Vector:Efficiently compute the union of a list of bounding boxes.  Safe-Inferred+0  Safe-Inferred, AC-Vector&The type of 4D linear transformations. Note the Monoid= instance, which gives you access to the identity transform (mempty) and the ability to combine a series of transforms into a single transform (mappend). AC-VectorApply a 4D transformation to a 4D point, yielding a new 4D point. Safe-Inferred2 AC-VectorA 8 is a 4D bounding box (aligned to the coordinate axies). AC-Vector1Return the X-range that this bounding box covers. AC-Vector1Return the Y-range that this bounding box covers. AC-Vector1Return the Z-range that this bounding box covers. AC-VectorReturn the W-range (4th coordinate) that this bounding box covers. AC-VectorGiven ranges for each coordinate axis, construct a bounding box. AC-VectorGiven a pair of corner points, construct a bounding box. (The points must be from opposite corners, but it doesn't matter which, corners nor which order they are given in.) AC-VectorFind the bounds of a list of points. (Throws an exception if the list is empty.) AC-Vector;Test whether a given 4D vector is inside this bounding box. AC-Vector.Return the minimum values for all coordinates. AC-Vector.Return the maximum values for all coordinates. AC-VectorTake the union of two bounding boxes. The result is a new bounding box that contains all the points the original boxes contained, plus any extra space between them. AC-VectorTake the intersection of two bounding boxes. If the boxes do not overlap, return . Otherwise return a new bounding box containing only the points common to both argument boxes. AC-Vector:Efficiently compute the union of a list of bounding boxes. !!"#$%&'()*+,,-./01234566789:;<=>>?$%&"#'()@ABBCDEFGHIJKKLMNOPQRSTUVWWXYZ[\]^$%&"#'()_` a a b c d e f g h i j k l l m n o p q r s t u v w x y z { | } ~ ~ X Y  Z [  \ ]   $ % & " # ' ( )                                         XYZ[\]$%&"#'()&AC-Vector-2.4.0-ISWqpnZbFilGsnjxob3eMcData.Vector.ClassData.BoundingBox.RangeData.Vector.V1Data.Vector.Transform.T1Data.BoundingBox.B1Data.Vector.V2Data.Vector.Transform.T2Data.BoundingBox.B2Data.Vector.V3Data.Vector.Transform.T3Data.BoundingBox.B3Data.Vector.V4Data.Vector.Transform.T4Data.BoundingBox.B4 AC-VectorVector BasicVectorvmapvzipvfoldvpackvunpackvpromoteScalar*||*|//|vdotvmag vnormalisevlinearRange min_point max_point bound_corners bound_points within_boundsunionisectunions $fEqRange $fShowRangeVector1v1x$fVectorVector1$fBasicVectorVector1 $fEqVector1 $fOrdVector1 $fEnumVector1 $fShowVector1 $fNumVector1$fFractionalVector1 Transform1t1_XXt1_1X transformP1$fSemigroupTransform1$fMonoidTransform1$fEqTransform1$fShowTransform1BBox1range $fEqBBox1 $fShowBBox1Vector2v2xv2y$fVectorVector2$fFractionalVector2 $fNumVector2$fBasicVectorVector2 $fEqVector2 $fShowVector2 Transform2t2_XXt2_YXt2_1Xt2_XYt2_YYt2_1Y transformP2$fSemigroupTransform2$fMonoidTransform2$fEqTransform2$fShowTransform2BBox2minXminYmaxXmaxYrangeXrangeYrangeXY $fEqBBox2 $fShowBBox2Vector3v3xv3yv3zvcross$fVectorVector3$fFractionalVector3 $fNumVector3$fBasicVectorVector3 $fEqVector3 $fShowVector3 Transform3t3_XXt3_YXt3_ZXt3_1Xt3_XYt3_YYt3_ZYt3_1Yt3_XZt3_YZt3_ZZt3_1Z transformP3$fSemigroupTransform3$fMonoidTransform3$fEqTransform3$fShowTransform3BBox3minZmaxZrangeZrangeXYZ $fEqBBox3 $fShowBBox3Vector4v4xv4yv4zv4w$fVectorVector4$fFractionalVector4 $fNumVector4$fBasicVectorVector4 $fEqVector4 $fShowVector4 Transform4t4_XXt4_YXt4_ZXt4_WXt4_1Xt4_XYt4_YYt4_ZYt4_WYt4_1Yt4_XZt4_YZt4_ZZt4_WZt4_1Zt4_XWt4_YWt4_ZWt4_WWt4_1W transformP4$fSemigroupTransform4$fMonoidTransform4$fEqTransform4$fShowTransform4BBox4minWmaxWrangeW rangeXYZW $fEqBBox4 $fShowBBox4baseGHC.NumNumGHC.Real Fractional GHC.MaybeNothing