|>j      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -Safe;=Rectilinear 3D setRectilinear 2D setA symbolic 3D format!A symbolic 2D object format. We want to have a symbolic object so that we can accelerate rendering & give ideal meshes for simple cases.$A Boxed 3D object%A Boxed 2D object& A Box for containing a 3D object' A Box for containing a 2D object(A 3D box)A 2D box* A 3D object+ A 2D object,5A normed triangle mesh is a mesh of normed trianlges.-DA triangle mesh is a bunch of triangles, attempting to be a surface..iA triangle ((v1,n1),(v2,n2),(v3,n3)) has vertices v1, v2, v3 with corresponding normals n1, n2, and n3/DA triangle in 3D space (a,b,c) = a triangle with vertices a, b and c0A triangle in 2D space (a,b,c).1HA chain of line segments, as in SVG eg. [(0,0), (0.5,1), (1,0)] ---> /\;   "!#$%&'()*+,-./0132456789:;876954:2310/.-,+*)('&%$ !"#    !"#23NoneVPThis function gives line segments to divide negative interior regions and positive exterior ones inside a square, based on its values at its vertices. It is based on the linearly-interpolated marching squares algorithm.None;<>?V Safe>SafeVSafeVNoneV"This function gives line segments to divide negative interior regions and positive exterior ones inside a square, based on the values at its vertices. It is based on the linearly-interpolated marching squares algorithm.Safe"SafeV#4Safe#qSafe#None# 6None$kNoneV$CDCDNone% NoneV%YEFGEFGSafe;<=>?%None&Safe&[ Safe&!NoneHV&000 0 0Safe,=L&Objects for our OpenSCAD-like languagem$Handles parsing arguments to modulesn]For actual argument entries: ArgParser (argument name) (default) (doc) (next Argparser...)o2For returns: ArgParserTerminator (return value)pJFor failure: ArgParserFailIf (test) (error message) (child for if true)-HIJKLPORQSMTNVUW_]XZ\[^Y`abdcefghkijlmnrsopqt-mnopqrslhijkbcdefg`aWXYZ[\]^_LMNOPQRSTUVKJHItHIL MNOPQRSTUVWXYZ[\]^_`abcdefghijk mnopqrs"Safe<FV.   12Safe/'  !"SafeFV1#EA computable block of code in our openscad-like programming language.$An assignment (parser)%A function declaration (parser)&An echo (parser)#None%;V2X'()*+,-.')/(-2$NoneV4~0Apply arguments to an ArgParser0 argumentsArgParser to apply them to(result, error messages)1234560%Safe<FQV4 789:;<=>?@AB&None5dCD'NoneV5ESafeVC3The distance a point p is from a line segment (a,b)Rounded Maximum Consider max(x,y) = 0, the generated curve has a square-like corner. We replace it with a quarter of a circleFRounded minimum}Like rmax, but on a list instead of two. Just as maximum is. The implementation is to take the maximum two and rmax those.Like rmin but on a list./Pack the given objects in a box the given size.radiusfirst number to round maximumsecond number to round maximumresulting numberFradiusfirst number to round minimumsecond number to round minimumresulting numberradiusnumbers to take round maximumresulting numberradiusnumbers to take round minimumresulting numberThe box to pack within"The space seperation between itemsObjects with their boxesAPacked objects with their positions, objects that could be packed(Safe;<=>?D3G)Safe;<=>?D*Safe;<=>?AVE!+SafeVEfSafeE None;<=>?VF3 None;<=>?F None;=>?IThere is a discrete way to aproximate this object. eg. Aproximating a 3D object with a tirangle mesh would be DiscreteApproxable Obj3 TriangleMesh None<VNc Resolution#File Format (Function that formats) File NameObject to renderWriting Action!H ResolutionFile Format writer File NameObject to renderWriting Action! Resolution#File Format (Function that formats)Object to renderResulting lazy ByteString Safe;=>?AVf= Complement an Object Rounded unionRounded differenceRounded minimum9Translate an object by a vector of appropriate dimension.Scale an objectOutset of an object.Make a shell of an object.Get the bounding box an object'Get the implicit function for an objectObject to complementResultThe radius of roundingobjects to unionResulting objectThe radius of roundingObjects to differenceResulting objectThe radius of roundingObjects to intersectResulting object8Vector to translate by (Also: a is a vector, blah, blah)Object to translateResulting objectAmount to scale byObject to scaleResulting scaled objectdistance to outsetobject to outsetresulting objectwidth of shellobject to take shell ofresulting shellObject to get box of Bounding box"Object to get implicit function ofImplicit functionImplicit function Bounding boxResulting objectRadius of the sphereResulting sphereRounding of cornersBottom.. cornerTop right... corner)Resuting cube - (0,0,0) is bottom left...Radius of the cylinderSecond radius of the cylinderHeight of the cylinderResulting cylinderRadius of the cylinderHeight of the cylinderResulting cylinderradius of the circleresulting circleBottom left cornerTop right corner(Resulting square (bottom right = (0,0) )Rouding of the polygonVerticies of the polygonResulting polygonI ,None<VgJ-NoneVgKNone<VhPNone;<=>?h))L./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~()*+        !"#$%&' ( )!*! !+!,!-!.!/0"1"2"3"4"5"6"7"8"9:;<=>?@ABCDEFGHIJK#L#M#N#O#P#Q#R#S#T$U$V$W$X$Y$Z$[%\%]%^%_%`%a%b%c%d%e%f%g&h&i'jk(l m n,o-pq%implicit-0.2.0-CF7TA50Zx0HBAIqRDfbNtqGraphics.Implicit.Definitions(Graphics.Implicit.Export.PolylineFormats,Graphics.Implicit.Export.TriangleMeshFormats)Graphics.Implicit.ExtOpenScad.Definitions)Graphics.Implicit.ExtOpenScad.Parser.Expr.Graphics.Implicit.ExtOpenScad.Parser.StatementGraphics.Implicit.MathUtilGraphics.Implicit.ObjectUtil%Graphics.Implicit.Export.SymbolicObj3%Graphics.Implicit.Export.SymbolicObj2*Graphics.Implicit.Export.DiscreteAproxableGraphics.Implicit.ExportGraphics.Implicit.PrimitivesGraphics.Implicit.ExtOpenScadGraphics.Implicit,Graphics.Implicit.Export.MarchingSquaresFill!Graphics.Implicit.Export.RayTrace+Graphics.Implicit.Export.Render.Definitions(Graphics.Implicit.Export.Render.GetLoops/Graphics.Implicit.Export.Render.HandlePolylines(Graphics.Implicit.Export.MarchingSquares-Graphics.Implicit.Export.Render.HandleSquares+Graphics.Implicit.Export.Render.Interpolate*Graphics.Implicit.Export.Symbolic.Rebound2*Graphics.Implicit.Export.Symbolic.Rebound3)Graphics.Implicit.Export.TextBuilderUtils(Graphics.Implicit.Export.SymbolicFormats2Graphics.Implicit.Export.NormedTriangleMeshFormatsGraphics.Implicit.Export.Util.Graphics.Implicit.Export.Render.TesselateLoops*Graphics.Implicit.Export.Render.RefineSegs'Graphics.Implicit.Export.Render.GetSegsGraphics.Implicit.Export.Render)Graphics.Implicit.ExtOpenScad.Parser.Util'Graphics.Implicit.ExtOpenScad.Util.OVal,Graphics.Implicit.ExtOpenScad.Util.ArgParser)Graphics.Implicit.ExtOpenScad.Util.StateC'Graphics.Implicit.ExtOpenScad.Eval.Expr,Graphics.Implicit.ExtOpenScad.Eval.Statement$Graphics.Implicit.ObjectUtil.GetBox2$Graphics.Implicit.ObjectUtil.GetBox3)Graphics.Implicit.ObjectUtil.GetImplicit2)Graphics.Implicit.ObjectUtil.GetImplicit3(Graphics.Implicit.ExtOpenScad.Primitives%Graphics.Implicit.ExtOpenScad.Default Rectilinear3 Rectilinear2 SymbolicObj3Rect3RSphereCylinder Complement3UnionR3 DifferenceR3 IntersectR3 Translate3Scale3Rotate3Rotate3VOutset3Shell3EmbedBoxedObj3ExtrudeRExtrudeRotateR ExtrudeRM RotateExtrudeExtrudeOnEdgeOf SymbolicObj2RectRCirclePolygonR Complement2UnionR2 DifferenceR2 IntersectR2 Translate2Scale2Rotate2Outset2Shell2EmbedBoxedObj2 BoxedObj3 BoxedObj2Boxed3Boxed2Box3Box2Obj3Obj2NormedTriangleMesh TriangleMeshNormedTriangleTrianglePolytriPolyline⋯*⋯/Fastℕℕℝ3ℝ2ℝminℝ⋅ $fShow(->) $fShow(->)0 $fShow(->)1 $fShow(->)2$fComponentWiseMultable(,,)$fComponentWiseMultable(,)$fShowSymbolicObj2$fShowSymbolicObj3svghacklabLaserGCodestl binaryStljsTHREE TestInvariantEulerCharacteristicFStack VarLookupOVal OUndefinedOErrorOBoolONumOListOStringOFuncOModuleOObj3OObj2 StatementInclude:=EchoForIf NewModule ModuleCall DoNothing StatementIExprVarLitEListELamE:$PatternNameListPWildSymbol ArgParserAP APTerminatorAPFailIf APExampleAPTestAPBranch collector $fShowOVal$fEqOVal$fAlternativeArgParser$fMonadPlusArgParser$fMonadArgParser$fApplicativeArgParser$fFunctorArgParser $fShowPattern $fEqPattern$fShowTestInvariant $fShowExpr$fEqExpr$fShowStatement $fEqStatement$fShowStatementI$fEqStatementIexpr0 parseProgramdistFromLineSeg box3sWithinrmaxrmaximumrminimumpackgetBox2getBox3 getImplicit2 getImplicit3symbolicGetMeshsymbolicGetOrientedContoursymbolicGetContoursymbolicGetContourMeshDiscreteAproxable discreteAprox+$fDiscreteAproxableSymbolicObj2DynamicImage!$fDiscreteAproxableSymbolicObj2[]+$fDiscreteAproxableSymbolicObj3DynamicImage!$fDiscreteAproxableSymbolicObj3[]"$fDiscreteAproxableSymbolicObj3[]0 writeObject formatObjectwriteSVGwriteSTL writeBinSTLwriteOBJ writeTHREEJSwriteGCodeHacklabLaser writeSCAD3 writeSCAD2writePNG complementunionR differenceR intersectR translatescaleoutsetshellgetBox getImplicitimplicitsphererect3R cylinder2cylindercirclerectRpolygonRunion difference intersectextrudeRextrudeRotateR extrudeRM rotateExtrudeextrudeOnEdgeOfrotate3rotate3Vpack3rotatepack2$fObjectSymbolicObj3(,,)$fObjectSymbolicObj2(,) runOpenscad writePNG2 writePNG3ComponentWiseMultablegetSquareTrianglesgetContourMeshColorSceneLightCamera dynamicImageaverage cameraRaytraceRayRay TriSquareTrisSqgetLoopscleanLoopsFromSegsreducePolylinegetSquareLineSegs getContourmergedSquareTris interpolaterebound2rebound3baseGHC.Basememptymconcat#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.Internal.BuilderBuilderData.Text.Internal.LazyText fromLazyTextData.Text.Lazy toLazyTextbfbuildTruncFloatbuildInt<>scad2scad3obj normTriangle normVertexcentroid tesselateLooprefinegetSegsgetSegs'getMesh$**$$***$***$:@genSpacepad*<|>?:stringGS padStringtryMany variableSymbpatternMatcherExprIdxA0A1A2A3A4A5A6A7A8A9A10A11A12 computation assignmentfunctionecho OTypeMirrortoOObjfromOObjoTypeStr getErrors caseOType<||> divideObjs fromOObjListargMapargumentdoc defaultToexampletesteulerCharacteristicStateC getVarLookupmodifyVarLookup lookupVarpushValsgetValsputValswithPathShiftedBygetPath getRelPatherrorC mapMaybeMmatchPatevalExpr runStatementIrmingetDist2 writeObject'Object primitivesdefaultObjects