<<>> <> <> <> DIRECTORY Commander, G3dBasic, G3dSpline, G3dVector, ImplicitConvolve, ImplicitDefs, ImplicitDesign, IO, RealFns, Rope; ImplicitWheelCmdImpl: CEDAR PROGRAM IMPORTS G3dBasic, ImplicitConvolve, ImplicitDesign, RealFns ~ BEGIN <> Triple: TYPE ~ G3dBasic.Triple; TripleSequence: TYPE ~ G3dBasic.TripleSequence; Primitive: TYPE ~ ImplicitConvolve.Primitive; PrimitiveList: TYPE ~ ImplicitConvolve.PrimitiveList; Tool: TYPE ~ ImplicitConvolve.Tool; TripleList: TYPE ~ ImplicitConvolve.TripleList; <> Wheel: Commander.CommandProc ~ { id: INTEGER _ 0; primitives: PrimitiveList; center: Triple _ [0, 0, 0]; pts: ARRAY [0..6) OF Triple; <> <> <> <> FOR l: LIST OF REAL _ LIST[0.0, 0.2, 0.3, 0.55, 0.75, 1.0], l.rest WHILE l # NIL DO a: REAL _ 2.0*3.141592*l.first; pts[id] _ [0.25*RealFns.Cos[a], 0.25*RealFns.Sin[a], 0.0]; id _ id+1; ENDLOOP; FOR i: INTEGER IN [0..5) DO triples: TripleSequence _ G3dBasic.TripleSequenceFromList[LIST[center, pts[i], pts[i+1]]]; primitives _ CONS[ImplicitConvolve.MakePrimitive[points: triples, extent: 0.05, color: [0, 0, 0]], primitives]; ENDLOOP; [] _ ImplicitConvolve.MakeTool[name: "Wheel", toolSettings: [threshold: .5], primitives: primitives]; }; <> ImplicitDesign.Register["Wheel", Wheel, "a wheel", "ImplicitConvolve"]; END.