<<>> <> <> <> <<>> DIRECTORY Real, Vector2; G2dBasic: CEDAR DEFINITIONS IMPORTS Real ~ BEGIN <> Sign: TYPE ~ {positive, negative}; Border: TYPE ~ {inside, outside, edge}; -- relative to closed, planar region Box: TYPE ~ RECORD [min, max: Pair]; -- 2d bounding box Pair: TYPE ~ Vector2.VEC ¬ [0.0, 0.0]; -- RECORD [x, y: REAL] Triple: TYPE ~ RECORD [x, y, z: REAL ¬ 0.0]; NatPair: TYPE ~ RECORD [x, y: NAT ¬ 0]; IntPair: TYPE ~ RECORD [x, y: INT ¬ 0]; IntegerPair: TYPE ~ RECORD [x, y: INTEGER ¬ 0]; Card3: TYPE ~ RECORD [x, y, z: CARD ¬ 0]; Integer3: TYPE ~ RECORD [x, y, z: INTEGER ¬ 0]; Nat3: TYPE ~ RECORD [x, y, z: NAT ¬ 0]; <> NearSegment: TYPE ~ RECORD [ point: Pair ¬ [0.0, 0.0], -- point on 2d segment inside: BOOL ¬ FALSE, -- true iff point inside segment w0, w1: REAL ¬ 0.0 -- point = w0*p0+w1*p1 ]; <> NatSequence: TYPE ~ REF NatSequenceRep; NatSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF NAT]; IntegerSequence: TYPE ~ REF IntegerSequenceRep; IntegerSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF INTEGER]; IntSequence: TYPE ~ REF IntSequenceRep; IntSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF INT]; RealSequence: TYPE ~ REF RealSequenceRep; RealSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF REAL ]; PairSequence: TYPE ~ REF PairSequenceRep; PairSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF Pair ]; NatPairSequence: TYPE ~ REF NatPairSequenceRep; NatPairSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF NatPair ]; IntegerPairSequence: TYPE ~ REF IntegerPairSequenceRep; IntegerPairSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF IntegerPair ]; IntPairSequence: TYPE ~ REF IntPairSequenceRep; IntPairSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF IntPair ]; TripleSequence: TYPE ~ REF TripleSequenceRep; TripleSequenceRep: TYPE ~ RECORD [ length: CARDINAL ¬ 0, element: SEQUENCE maxLength: CARDINAL OF Triple ]; <> origin: Pair ~ [0.0, 0.0]; xAxis: Triple ~ [1.0, 0.0, 0.0]; yAxis: Triple ~ [0.0, 1.0, 0.0]; zAxis: Triple ~ [0.0, 0.0, 1.0]; PI: REAL ~ 3.1415926535; maxNNats: CARDINAL ~ (LAST[CARDINAL]-4-SIZE[NatSequenceRep[0]])/SIZE[NAT]; maxNPairs: CARDINAL ~ (LAST[CARDINAL]-4-SIZE[PairSequenceRep[0]])/SIZE[Pair]; maxNTriples: CARDINAL ~(LAST[CARDINAL]-4-SIZE[TripleSequenceRep[0]])/SIZE[Triple]; <> RealMod: PROC [a, b: REAL] RETURNS [REAL] ~ INLINE {RETURN[a-Real.Floor[a/b]*b]}; <> ArcCos: PROC [cos: REAL] RETURNS [REAL]; <> <<>> ArcCosDeg: PROC [cos: REAL] RETURNS [REAL]; <> <> CopyNatSequence: PROC [nats: NatSequence] RETURNS [NatSequence]; <> <<>> CopyIntegerSequence: PROC [integers: IntegerSequence] RETURNS [IntegerSequence]; <> <<>> CopyIntSequence: PROC [ints: IntSequence] RETURNS [IntSequence]; <> <<>> CopyRealSequence: PROC [reals: RealSequence] RETURNS [RealSequence]; <> <<>> CopyPairSequence: PROC [pairs: PairSequence] RETURNS [PairSequence]; <> <<>> CopyIntPairSequence: PROC [intPairs: IntPairSequence] RETURNS [IntPairSequence]; <> <<>> CopyIntegerPairSequence: PROC [integerPairs: IntegerPairSequence] RETURNS [IntegerPairSequence]; <> <<>> CopyNatPairSequence: PROC [natPairs: NatPairSequence] RETURNS [NatPairSequence]; <> <> AddToNatSequence: PROC [nats: NatSequence, nat: NAT] RETURNS [NatSequence]; <> <<>> AddToIntegerSequence: PROC [integers: IntegerSequence, integer: INTEGER] RETURNS [IntegerSequence]; <> <<>> AddToIntSequence: PROC [ints: IntSequence, int: INT] RETURNS [IntSequence]; <> <<>> AddToRealSequence: PROC [reals: RealSequence, real: REAL] RETURNS [RealSequence]; <> <<>> AddToPairSequence: PROC [pairs: PairSequence, pair: Pair] RETURNS [PairSequence]; <> <<>> AddToNatPairSequence: PROC [natPairs: NatPairSequence, natPair: NatPair] RETURNS [NatPairSequence]; <> <<>> AddToIntPairSequence: PROC [intPairs: IntPairSequence, intPair: IntPair] RETURNS [IntPairSequence]; <> <<>> AddToIntegerPairSequence: PROC [integerPairs: IntegerPairSequence, integerPair: IntegerPair] RETURNS [IntegerPairSequence]; <> <> LengthenNatSequence: PROC [nats: NatSequence, amount: REAL ¬ 1.3] RETURNS [NatSequence]; <> <<>> LengthenIntegerSequence: PROC [integers: IntegerSequence, amount: REAL ¬ 1.3] RETURNS [IntegerSequence]; <> <<>> LengthenIntSequence: PROC [ints: IntSequence, amount: REAL ¬ 1.3] RETURNS [IntSequence]; <> <<>> LengthenRealSequence: PROC [reals: RealSequence, amount: REAL ¬ 1.3] RETURNS [RealSequence]; <> <<>> LengthenPairSequence: PROC [pairs: PairSequence, amount: REAL ¬ 1.3] RETURNS [PairSequence]; <> <<>> LengthenNatPairSequence: PROC [natPairs: NatPairSequence, amount: REAL ¬ 1.3] RETURNS [NatPairSequence]; <> <<>> LengthenIntPairSequence: PROC [intPairs: IntPairSequence, amount: REAL ¬ 1.3] RETURNS [IntPairSequence]; <> <<>> LengthenIntegerPairSequence: PROC [integerPairs: IntegerPairSequence, amount: REAL ¬ 1.3] RETURNS [IntegerPairSequence]; <> END.