!_[Ke      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdSafe2% collada-types~2D affine transformation. No shearing allowed, only translation, rotation, and scaling. Transformations can be chained with e, and f is the identity transformation. collada-types!2D vector: a pair of coordinates. collada-types(An angle is a number between -pi and pi.  collada-types%Unit vector with the given direction.  collada-typesMultiplication with a scalar.  collada-typesMultiplication with a scalar.  collada-typesDivision by a scalar.  collada-types Dot product. collada-types Dot product. collada-types$Perp-dot product (2D cross product). collada-types3D cross product. collada-types$Vector rotated 90 degrees leftwards. collada-types%Vector rotated 90 degrees rightwards. collada-types#Relative direction of two vectors:  turn v1 v2 equals GT if v2# takes a left turn with respect to v1, LT if it is a right turn, and EQ if they are parallel. collada-types !turnL v1 v2 == (turn v1 v2 == GT) collada-types "turnNL v1 v2 == (turn v1 v2 /= GT) collada-types !turnR v1 v2 == (turn v1 v2 == LT) collada-types "turnNR v1 v2 == (turn v1 v2 /= LT) collada-types  parv v1 v2 == (turn v1 v2 == EQ) collada-typesVector length squared.g collada-types3d Vector length squared. collada-typesVector length. collada-types3d Vector length. collada-typesSet Vector length. collada-types1The angle of a vector with respect to the X axis. collada-typesVector normalisation. collada-typesInverse transformationh collada-types#Transformation applied to a vector.  collada-types*Transformation representing a translation.! collada-types'Transformation representing a rotation." collada-types&Transformation representing a scaling.# collada-types+The translation factor of a transformation.$ collada-types(The rotation factor of a transformation.% collada-types'The scaling factor of a transformation.& collada-types5Replacing the translation factor of a transformation.' collada-types2Replacing the rotation factor of a transformation.( collada-types1Replacing the scaling factor of a transformation.)  !"#$%&'()   !"#$%&'( 77555555None8 collada-typesLines collada-types LineStrips collada-types=Polygon: Contains polygon primitives which may contain holes. collada-types@PolyList: Contains polygon primitives that cannot contain holes. collada-types Triangles collada-typesTriFans collada-types TriStrips collada-typesSplines789:;<>=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_a`bcdefghijkmlnopqrstuvwxyz{|}~yz{|}~opqrstu:9defghij_a`bcXYZ[\]^xw@A78vMNOPQRSTUVWBCDEFGHIJKL;<>=?kmlnNoneE & collada-typesAn animated cube' collada-typesExample scene with a cube+ collada-types$Every scene needs a camera and light3 collada-typesExample animation of the cube6 collada-typesA blue/textured cubeH collada-typesAnimation of several cubesK collada-types.generate an animation that points to the cubesM collada-typesa helper function for xyz_gridO collada-typescGenerate a 3 dimensional grid where an object (stored in a SceneNode) is repeated in along the grid8$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[8$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[NoneKI] collada-typesVextrude a 2d polygon to 3d, the same points are added again with extrusion direction v` collada-typesureturn a list containing lists of every element with its neighbour i.e. [e1,e2,e3] -> [ [e1,e2], [e2,e3], [e3, e1] ] \]^_`abcd \]^_`abcdi        !"#$%&'()*+,-./0123456789:;<=>?@@ABCD<EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrrstuvwxyz{{|}~d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST%UVWXYZ[\]^_`a(collada-types-0.4-53SnGFlieHlFf6Tbr3e4kE#Graphics.Formats.Collada.Vector2D3D%Graphics.Formats.Collada.ColladaTypes(Graphics.Formats.Collada.GenerateObjects(Graphics.Formats.Collada.TransformationsbaseGHC.Base<>T2V4V3V2VAngleunit*.muldividedotdot3crosscross3perpLperpRturnturnLturnNLturnRturnNRparvsquaremagv_lenset_lendirnorminverse translaterotatescale translationOf rotationOfscaleOfwithTranslation withRotation withScale$fNumV2$fNumV3 $fMonoidT2 $fSemigroupT2$fShowV2$fEqV2$fOrdV2$fShowV3$fEqV3$fOrdV3$fShowV4$fEqV4$fOrdV4$fShowT2ColorRGBSIDIDTextureimageSIDpathtexObjCFx_common_texture_type TEmissionTAmbientTDiffuse TSpecular TShininess TReflective TReflectivity TTransparent TTransparencyTIndex_of_refractionFx_common_color_type CEmissionCAmbientCDiffuse CSpecular CShininess CReflective CReflectivity CTransparent CTransparencyCIndex_of_refractionTechniqueCommonConstant LambertCol LambertTexPhongColPhongTexBlinnNewParamAnnotatSemanticModifierNoParamProfileBRIDGECGCOMMONGLESGLES2GLSL InterpolationStepLinearBezier AnimChannel EmptyAniminputoutputinterptargets AnimationEffectMaterialPolygonpoylgonPpoylgonN polygonPh polygonMs LinePrimitivelinePlineNlineTmsVerticesnamevertsnormalsMeshLPLSPPLTrTrfTrsSGeometrymeshIDmeshvertices ControllercontrIdskinmorph AttenuationattenuationConstantattenuationLinearattenuationQuadraticLightAmbient DirectionalPointSpot ambientID ambientColor directionalIDdirectionalColorpointID pointColorpointAttenuationspotID spotColorspotAttenuationspotFallOffAnglespotFallOffExponentZzNearzFarViewSize ViewSizeX ViewSizeY ViewSizeXYCamera Perspective Orthographic perspectiveIDperspectiveFov perspectiveZorthographicIDorthographicViewSize orthographicZ TransformLookAtMatrixRotateScaleSkew Translate lookAtEyelookAtInterestlookAtUp skewAngle skewRotationskewTranslationNodeTypeJOINTNODENOTYPE SceneNode EmptyRootnodeIdnodeType nodeLayersnodeTransformations nodeCamerasnodeControllernodeGeometries nodeLightsScene $fEqGeometry$fShowNodeType $fEqNodeType$fShowTransform $fEqTransform$fShowViewSize $fEqViewSize$fShowZ$fEqZ$fShowAttenuation$fEqAttenuation$fShowMorphMethod$fEqMorphMethod $fShowJoint $fEqJoint $fShowSkin$fEqSkin$fShowSemantic $fEqSemantic $fShowInput $fEqInput $fShowMorph $fEqMorph$fShowInterpolation$fEqInterpolation$fShowNewParam $fEqNewParam$fShowTechniqueCG$fEqTechniqueCG $fShowExtra $fEqExtra$fShowTechnique $fEqTechnique$fShowC$fEqC$fShowFx_common_color_type$fEqFx_common_color_type $fShowTexture $fEqTexture$fShowFx_common_texture_type$fEqFx_common_texture_type$fShowTechniqueCommon$fEqTechniqueCommon $fShowProfile $fEqProfile$fShowAnimChannel$fEqAnimChannel$fShowVertices $fEqVertices$fShowController$fEqController $fShowCamera $fEqCamera $fShowPolygon $fEqPolygon$fShowLinePrimitive$fEqLinePrimitive $fShowMesh$fEqMesh$fShowGeometry $fEqColor $fShowColor $fShowLight $fEqLight$fShowSceneNode $fEqSceneNoden makeScene animatedCubeaScenelightedGeometrylightedSceneNode lightedScenecameraAndLightrottranrotaCamera pointLight ambientLightaCubeobj animation anim_channelflcubebluediffuse replaceDiffambient replaceAmbgetDiffuseColorgetAmbientColorlogotexpolyslinestrifans tristripsge animatedCubesanimatedCubes2scene2 animation2emptyAnimation emptyAnim new_channelsobj_nametran test_objsxyz_gridenum_objx_line positionsen base_objectsrenamegetNameget_nameanimatedStream streamScenestreamAnimation tr_channelextrude extr_outline normalsFromcycleNeighbourscycleNatopchangeDiffuseColorchangeAmbientColormappendmemptysquare3<.>