úÎI=DñT      !"#$%&'()*+,-./0123456789:;<= > ? @ A B C D E F G H I J K L M N O P Q R S  2All 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. 'Apply a function to all vector fields. UZip two vectors together field-by-field using the supplied function (in the style of Data.List.zipWith). qReduce a vector down to a single value using the supplied binary operator. The ordering in which this happens isn'Nt guaranteed, so the operator should probably be associative and commutative. UPack a list of values into a vector. Extra values are ignored, too few values yields Nothing. :Unpack a vector into a list of values. (Always succeeds.) !The type of vector field values. sScale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (*) operator. The (*|) and (|*)R operators are identical, but with their argument flipped. Just remember that the '|' denotes the scalar part. sScale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (*) operator. The (*|) and (|*)R operators are identical, but with their argument flipped. Just remember that the '|' denotes the scalar part.  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. Return the length or  magnitudeF of a vector. (Note that this involves a slow square root operation.) |Normalise a vector. In order words, return a new vector with the same direction, but a length of exactly one. (If the vector'Js length is zero or very near to zero, the vector is returned unchanged.) 2Linearly interpolate between two points in space.  vlinear 0 a b = a vlinear 1 a b = b vlinear 0.5 a b- would give a point exactly half way between a and b in a straight line.     The type of 1D vectors. TOwing 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.     Take the  cross productv 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).  dThe 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 (memptyM) and the ability to combine a series of transforms into a single transform (mappend). !"#$BApply a 1D transformation to a 1D point, yielding a new 1D point.  !"#$ !"#$ !"#!"#$ %'The type of 2D linear transformations.  Note the Monoid= instance, which gives you access to the identity transform (memptyM) and the ability to combine a series of transforms into a single transform (mappend). &'()*+,-BApply a 2D transformation to a 2D point, yielding a new 2D point. %&'()*+,- %&'()*+,- %&'()*+,&'()*+,-.'The type of 3D linear transformations.  Note the Monoid= instance, which gives you access to the identity transform (memptyM) and the ability to combine a series of transforms into a single transform (mappend). /0123456789:;<BApply a 3D transformation to a 3D point, yielding a new 3D point. ./0123456789:;<./0123456789:;<. /0123456789:;/0123456789:;< ='The type of 4D linear transformations.  Note the Monoid= instance, which gives you access to the identity transform (memptyM) and the ability to combine a series of transforms into a single transform (mappend). >?@ABCDEFGHIJKLMNOPQRSBApply a 4D transformation to a 4D point, yielding a new 4D point. =>?@ABCDEFGHIJKLMNOPQRS=>?@ABCDEFGHIJKLMNOPQRS=>?@ABCDEFGHIJKLMNOPQR>?@ABCDEFGHIJKLMNOPQRS  $%-.<=S $%-.<=S (  $%-.<=ST   !"##$%&'(()*+,,-./01234456789:;<=>?@A B B C D E F G H I J K L M N O P Q R S T U V WXAC-Vector-2.0.0Data.Vector.ClassData.Vector.V1Data.Vector.V2Data.Vector.V3Data.Vector.V4Data.Vector.Transform.T1Data.Vector.Transform.T2Data.Vector.Transform.T3Data.Vector.Transform.T4Data.Vector.Transform Data.VectorVectorvmapvzipvfoldvpackvunpackScalar*||*vdotvmag vnormalisevlinearVector1v1xVector2v2xv2yVector3v3xv3yv3zvcrossVector4v4xv4yv4zv4w Transform1t1_XXt1_1X transformP1 Transform2t2_XXt2_YXt2_1Xt2_XYt2_YYt2_1Y transformP2 Transform3t3_XXt3_YXt3_ZXt3_1Xt3_XYt3_YYt3_ZYt3_1Yt3_XZt3_YZt3_ZZt3_1Z transformP3 Transform4t4_XXt4_YXt4_ZXt4_WXt4_1Xt4_XYt4_YYt4_ZYt4_WYt4_1Yt4_XZt4_YZt4_ZZt4_WZt4_1Zt4_XWt4_YWt4_ZWt4_WWt4_1W transformP4