diagrams-lib 1.3.1.4 → 1.4
raw patch · 101 files changed
+1695/−509 lines, 101 filesdep +cerealdep +criteriondep +deepseqdep ~basedep ~diagrams-coredep ~diagrams-solvePVP ok
version bump matches the API change (PVP)
Dependencies added: cereal, criterion, deepseq, numeric-extras, profunctors, tasty-quickcheck
Dependency ranges changed: base, diagrams-core, diagrams-solve, lens, tasty, tasty-hunit
API changes (from Hackage documentation)
- Diagrams.BoundingBox: boundingBoxQuery :: (Additive v, Foldable v, Ord n) => BoundingBox v n -> Query v n Any
- Diagrams.Coordinates: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (a Diagrams.Coordinates.:& b)
- Diagrams.Coordinates: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (a Diagrams.Coordinates.:& b)
- Diagrams.Coordinates: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (a Diagrams.Coordinates.:& b)
- Diagrams.Trail: instance (GHC.Float.Floating n, GHC.Classes.Ord n, Linear.Metric.Metric v) => Data.FingerTree.Measured (Diagrams.Segment.SegMeasure v n) (Diagrams.Trail.SegTree v n)
- Diagrams.Trail: instance (GHC.Float.Floating n, GHC.Classes.Ord n, Linear.Metric.Metric v) => Diagrams.Core.Transform.Transformable (Diagrams.Trail.SegTree v n)
- Diagrams.Trail: instance (GHC.Float.Floating n, GHC.Classes.Ord n, Linear.Metric.Metric v) => GHC.Base.Monoid (Diagrams.Trail.SegTree v n)
- Diagrams.TwoD: snugBL :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
- Diagrams.TwoD: snugBR :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
- Diagrams.TwoD: snugTL :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
- Diagrams.TwoD: snugTR :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
- Diagrams.TwoD.Align: snugBL :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
- Diagrams.TwoD.Align: snugBR :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
- Diagrams.TwoD.Align: snugTL :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
- Diagrams.TwoD.Align: snugTR :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a
+ Diagrams.Angle: instance (Diagrams.Core.V.V t ~ Linear.V2.V2, Diagrams.Core.V.N t ~ n, Diagrams.Core.Transform.Transformable t, GHC.Float.Floating n) => Data.Monoid.Action.Action (Diagrams.Angle.Angle n) t
+ Diagrams.Angle: rotate :: (InSpace V2 n t, Transformable t, Floating n) => Angle n -> t -> t
+ Diagrams.Angle: rotation :: Floating n => Angle n -> Transformation V2 n
+ Diagrams.Attributes: _FillOpacity :: Iso' FillOpacity Double
+ Diagrams.Attributes: _StrokeOpacity :: Iso' StrokeOpacity Double
+ Diagrams.Attributes: _fillOpacity :: Lens' (Style v n) Double
+ Diagrams.Attributes: _strokeOpacity :: Lens' (Style v n) Double
+ Diagrams.Attributes: data FillOpacity
+ Diagrams.Attributes: data StrokeOpacity
+ Diagrams.Attributes: fillOpacity :: HasStyle a => Double -> a -> a
+ Diagrams.Attributes: getFillOpacity :: FillOpacity -> Double
+ Diagrams.Attributes: getStrokeOpacity :: StrokeOpacity -> Double
+ Diagrams.Attributes: instance Data.Semigroup.Semigroup Diagrams.Attributes.FillOpacity
+ Diagrams.Attributes: instance Data.Semigroup.Semigroup Diagrams.Attributes.StrokeOpacity
+ Diagrams.Attributes: instance Diagrams.Core.Style.AttributeClass Diagrams.Attributes.FillOpacity
+ Diagrams.Attributes: instance Diagrams.Core.Style.AttributeClass Diagrams.Attributes.StrokeOpacity
+ Diagrams.Attributes: strokeOpacity :: HasStyle a => Double -> a -> a
+ Diagrams.BoundingBox: instance (Linear.Vector.Additive v, Data.Foldable.Foldable v, GHC.Classes.Ord n) => Diagrams.Query.HasQuery (Diagrams.BoundingBox.BoundingBox v n) Data.Monoid.Any
+ Diagrams.Combinators: composeAligned :: (Monoid' m, Floating n, Ord n, Metric v) => (QDiagram b v n m -> QDiagram b v n m) -> ([QDiagram b v n m] -> QDiagram b v n m) -> ([QDiagram b v n m] -> QDiagram b v n m)
+ Diagrams.Coordinates: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (a Diagrams.Coordinates.:& b)
+ Diagrams.Coordinates: instance (GHC.Classes.Ord b, GHC.Classes.Ord a) => GHC.Classes.Ord (a Diagrams.Coordinates.:& b)
+ Diagrams.Coordinates: instance (GHC.Show.Show b, GHC.Show.Show a) => GHC.Show.Show (a Diagrams.Coordinates.:& b)
+ Diagrams.CubicSpline: bspline :: (TrailLike t, V t ~ v, N t ~ n) => BSpline v n -> t
+ Diagrams.CubicSpline: type BSpline v n = [Point v n]
+ Diagrams.CubicSpline.Boehm: bspline :: (TrailLike t, V t ~ v, N t ~ n) => BSpline v n -> t
+ Diagrams.CubicSpline.Boehm: bsplineToBeziers :: (Additive v, Fractional n, Num n, Ord n) => BSpline v n -> [FixedSegment v n]
+ Diagrams.CubicSpline.Boehm: type BSpline v n = [Point v n]
+ Diagrams.Located: instance (Data.Serialize.Serialize a, Data.Serialize.Serialize (Diagrams.Core.V.V a (Diagrams.Core.V.N a))) => Data.Serialize.Serialize (Diagrams.Located.Located a)
+ Diagrams.Located: instance Diagrams.Align.Alignable a => Diagrams.Align.Alignable (Diagrams.Located.Located a)
+ Diagrams.Located: instance GHC.Generics.Generic (Diagrams.Located.Located a)
+ Diagrams.Path: instance (Diagrams.Core.Envelope.OrderedField n, Linear.Metric.Metric v, Data.Serialize.Serialize (v n), Data.Serialize.Serialize (Diagrams.Core.V.V (v n) (Diagrams.Core.V.N (v n)))) => Data.Serialize.Serialize (Diagrams.Path.Path v n)
+ Diagrams.Path: instance Diagrams.Path.ToPath (Diagrams.Trail.Trail' l v n)
+ Diagrams.Path: instance GHC.Generics.Generic (Diagrams.Path.Path v n)
+ Diagrams.Query: class HasQuery t m | t -> m
+ Diagrams.Query: getQuery :: HasQuery t m => t -> Query (V t) (N t) m
+ Diagrams.Query: inquire :: HasQuery t Any => t -> Point (V t) (N t) -> Bool
+ Diagrams.Query: instance Diagrams.Query.HasQuery (Diagrams.Core.Query.Query v n m) m
+ Diagrams.Query: instance GHC.Base.Monoid m => Diagrams.Query.HasQuery (Diagrams.Core.Types.QDiagram b v n m) m
+ Diagrams.Segment: instance Data.Serialize.Serialize (v n) => Data.Serialize.Serialize (Diagrams.Segment.Segment Diagrams.Segment.Closed v n)
+ Diagrams.Segment: instance Data.Serialize.Serialize (v n) => Data.Serialize.Serialize (Diagrams.Segment.Segment Diagrams.Segment.Open v n)
+ Diagrams.ThreeD.Attributes: instance GHC.Show.Show Diagrams.ThreeD.Attributes.Ambient
+ Diagrams.ThreeD.Attributes: instance GHC.Show.Show Diagrams.ThreeD.Attributes.Diffuse
+ Diagrams.ThreeD.Attributes: instance GHC.Show.Show Diagrams.ThreeD.Attributes.Highlight
+ Diagrams.ThreeD.Attributes: instance GHC.Show.Show Diagrams.ThreeD.Attributes.Specular
+ Diagrams.ThreeD.Attributes: instance GHC.Show.Show Diagrams.ThreeD.Attributes.SurfaceColor
+ Diagrams.ThreeD.Shapes: CsgBox :: (Box n) -> CSG n
+ Diagrams.ThreeD.Shapes: CsgDifference :: (CSG n) -> (CSG n) -> CSG n
+ Diagrams.ThreeD.Shapes: CsgEllipsoid :: (Ellipsoid n) -> CSG n
+ Diagrams.ThreeD.Shapes: CsgFrustum :: (Frustum n) -> CSG n
+ Diagrams.ThreeD.Shapes: CsgIntersection :: [CSG n] -> CSG n
+ Diagrams.ThreeD.Shapes: CsgUnion :: [CSG n] -> CSG n
+ Diagrams.ThreeD.Shapes: class Skinned t
+ Diagrams.ThreeD.Shapes: data CSG n
+ Diagrams.ThreeD.Shapes: difference :: (CsgPrim a, CsgPrim b) => a n -> b n -> CSG n
+ Diagrams.ThreeD.Shapes: instance (Diagrams.Core.Envelope.OrderedField n, GHC.Float.RealFloat n) => Diagrams.Core.Envelope.Enveloped (Diagrams.ThreeD.Shapes.Frustum n)
+ Diagrams.ThreeD.Shapes: instance (GHC.Float.Floating n, GHC.Classes.Ord n) => Diagrams.Query.HasQuery (Diagrams.ThreeD.Shapes.CSG n) Data.Monoid.Any
+ Diagrams.ThreeD.Shapes: instance (GHC.Float.RealFloat n, GHC.Classes.Ord n) => Diagrams.Core.Trace.Traced (Diagrams.ThreeD.Shapes.CSG n)
+ Diagrams.ThreeD.Shapes: instance (GHC.Float.RealFloat n, GHC.Classes.Ord n) => Diagrams.Core.Trace.Traced (Diagrams.ThreeD.Shapes.Frustum n)
+ Diagrams.ThreeD.Shapes: instance (GHC.Float.RealFloat n, GHC.Classes.Ord n) => Diagrams.ThreeD.Shapes.Skinned (Diagrams.ThreeD.Shapes.CSG n)
+ Diagrams.ThreeD.Shapes: instance (GHC.Num.Num n, GHC.Classes.Ord n) => Diagrams.Query.HasQuery (Diagrams.ThreeD.Shapes.Box n) Data.Monoid.Any
+ Diagrams.ThreeD.Shapes: instance (GHC.Num.Num n, GHC.Classes.Ord n) => Diagrams.Query.HasQuery (Diagrams.ThreeD.Shapes.Ellipsoid n) Data.Monoid.Any
+ Diagrams.ThreeD.Shapes: instance (GHC.Real.Fractional n, GHC.Classes.Ord n) => Diagrams.Core.Trace.Traced (Diagrams.ThreeD.Shapes.Box n)
+ Diagrams.ThreeD.Shapes: instance Diagrams.Core.Envelope.OrderedField n => Diagrams.Core.Envelope.Enveloped (Diagrams.ThreeD.Shapes.Box n)
+ Diagrams.ThreeD.Shapes: instance Diagrams.Core.Envelope.OrderedField n => Diagrams.Core.Envelope.Enveloped (Diagrams.ThreeD.Shapes.Ellipsoid n)
+ Diagrams.ThreeD.Shapes: instance Diagrams.Core.Envelope.OrderedField n => Diagrams.Core.Trace.Traced (Diagrams.ThreeD.Shapes.Ellipsoid n)
+ Diagrams.ThreeD.Shapes: instance Diagrams.Core.Envelope.OrderedField n => Diagrams.Query.HasQuery (Diagrams.ThreeD.Shapes.Frustum n) Data.Monoid.Any
+ Diagrams.ThreeD.Shapes: instance Diagrams.Core.Envelope.OrderedField n => Diagrams.ThreeD.Shapes.Skinned (Diagrams.ThreeD.Shapes.Box n)
+ Diagrams.ThreeD.Shapes: instance Diagrams.Core.Envelope.OrderedField n => Diagrams.ThreeD.Shapes.Skinned (Diagrams.ThreeD.Shapes.Ellipsoid n)
+ Diagrams.ThreeD.Shapes: instance Diagrams.ThreeD.Shapes.CsgPrim Diagrams.ThreeD.Shapes.Box
+ Diagrams.ThreeD.Shapes: instance Diagrams.ThreeD.Shapes.CsgPrim Diagrams.ThreeD.Shapes.CSG
+ Diagrams.ThreeD.Shapes: instance Diagrams.ThreeD.Shapes.CsgPrim Diagrams.ThreeD.Shapes.Ellipsoid
+ Diagrams.ThreeD.Shapes: instance Diagrams.ThreeD.Shapes.CsgPrim Diagrams.ThreeD.Shapes.Frustum
+ Diagrams.ThreeD.Shapes: instance Diagrams.ThreeD.Shapes.Skinned (Diagrams.ThreeD.Shapes.Frustum n)
+ Diagrams.ThreeD.Shapes: instance GHC.Float.RealFloat n => Diagrams.Core.Envelope.Enveloped (Diagrams.ThreeD.Shapes.CSG n)
+ Diagrams.ThreeD.Shapes: instance GHC.Real.Fractional n => Diagrams.Core.Transform.Transformable (Diagrams.ThreeD.Shapes.CSG n)
+ Diagrams.ThreeD.Shapes: intersection :: (CsgPrim a, CsgPrim b) => a n -> b n -> CSG n
+ Diagrams.ThreeD.Shapes: skin :: (Skinned t, Renderable t b, N t ~ n, TypeableFloat n) => t -> QDiagram b V3 n Any
+ Diagrams.ThreeD.Shapes: union :: (CsgPrim a, CsgPrim b) => a n -> b n -> CSG n
+ Diagrams.Trail: GetSegmentCodomain :: (Maybe (v n, Segment Closed v n, AnIso' n n)) -> GetSegmentCodomain v n
+ Diagrams.Trail: _LocLine :: Prism' (Located (Trail v n)) (Located (Trail' Line v n))
+ Diagrams.Trail: _LocLoop :: Prism' (Located (Trail v n)) (Located (Trail' Loop v n))
+ Diagrams.Trail: instance (Data.Serialize.Serialize (v n), Diagrams.Core.Envelope.OrderedField n, Linear.Metric.Metric v) => Data.Serialize.Serialize (Diagrams.Trail.Trail v n)
+ Diagrams.Trail: instance (Diagrams.Core.Envelope.OrderedField n, Linear.Metric.Metric v, Data.Serialize.Serialize (v n)) => Data.Serialize.Serialize (Diagrams.Trail.SegTree v n)
+ Diagrams.Trail: instance (Linear.Metric.Metric v, GHC.Classes.Ord n, GHC.Float.Floating n) => Data.FingerTree.Measured (Diagrams.Segment.SegMeasure v n) (Diagrams.Trail.SegTree v n)
+ Diagrams.Trail: instance (Linear.Metric.Metric v, GHC.Classes.Ord n, GHC.Float.Floating n) => Diagrams.Core.Transform.Transformable (Diagrams.Trail.SegTree v n)
+ Diagrams.Trail: instance (Linear.Metric.Metric v, GHC.Classes.Ord n, GHC.Float.Floating n) => GHC.Base.Monoid (Diagrams.Trail.SegTree v n)
+ Diagrams.Trail: newtype GetSegmentCodomain v n
+ Diagrams.Trail: unfixTrail :: (Metric v, Ord n, Floating n) => [FixedSegment v n] -> Located (Trail v n)
+ Diagrams.TwoD: bolder :: HasStyle a => a -> a
+ Diagrams.TwoD: heavy :: HasStyle a => a -> a
+ Diagrams.TwoD: light :: HasStyle a => a -> a
+ Diagrams.TwoD: lighter :: HasStyle a => a -> a
+ Diagrams.TwoD: mediumWeight :: HasStyle a => a -> a
+ Diagrams.TwoD: reflectXY :: (InSpace v n t, R2 v, Transformable t) => t -> t
+ Diagrams.TwoD: reflectionXY :: (Additive v, R2 v, Num n) => Transformation v n
+ Diagrams.TwoD: semiBold :: HasStyle a => a -> a
+ Diagrams.TwoD: thinWeight :: HasStyle a => a -> a
+ Diagrams.TwoD: ultraBold :: HasStyle a => a -> a
+ Diagrams.TwoD: ultraLight :: HasStyle a => a -> a
+ Diagrams.TwoD.Image: instance GHC.Float.RealFloat n => Diagrams.Query.HasQuery (Diagrams.TwoD.Image.DImage n a) Data.Monoid.Any
+ Diagrams.TwoD.Path: Crossings :: Int -> Crossings
+ Diagrams.TwoD.Path: instance Data.Semigroup.Semigroup Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Base.Monoid Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Classes.Eq Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Classes.Ord Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Enum.Enum Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Float.RealFloat n => Diagrams.Query.HasQuery (Diagrams.Located.Located (Diagrams.Trail.Trail Linear.V2.V2 n)) Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Float.RealFloat n => Diagrams.Query.HasQuery (Diagrams.Located.Located (Diagrams.Trail.Trail' l Linear.V2.V2 n)) Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Float.RealFloat n => Diagrams.Query.HasQuery (Diagrams.Path.Path Linear.V2.V2 n) Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Float.RealFloat n => Diagrams.Query.HasQuery (Diagrams.TwoD.Path.Clip n) Data.Monoid.All
+ Diagrams.TwoD.Path: instance GHC.Num.Num Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Real.Integral Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Real.Real Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: instance GHC.Show.Show Diagrams.TwoD.Path.Crossings
+ Diagrams.TwoD.Path: newtype Crossings
+ Diagrams.TwoD.Text: FontWeightBolder :: FontWeight
+ Diagrams.TwoD.Text: FontWeightHeavy :: FontWeight
+ Diagrams.TwoD.Text: FontWeightLight :: FontWeight
+ Diagrams.TwoD.Text: FontWeightLighter :: FontWeight
+ Diagrams.TwoD.Text: FontWeightMedium :: FontWeight
+ Diagrams.TwoD.Text: FontWeightSemiBold :: FontWeight
+ Diagrams.TwoD.Text: FontWeightThin :: FontWeight
+ Diagrams.TwoD.Text: FontWeightUltraBold :: FontWeight
+ Diagrams.TwoD.Text: FontWeightUltraLight :: FontWeight
+ Diagrams.TwoD.Text: bolder :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: heavy :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: light :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: lighter :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: mediumWeight :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: mkText' :: (TypeableFloat n, Renderable (Text n) b) => TextAlignment n -> String -> QDiagram b V2 n Any
+ Diagrams.TwoD.Text: recommendFontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a
+ Diagrams.TwoD.Text: semiBold :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: thinWeight :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: ultraBold :: HasStyle a => a -> a
+ Diagrams.TwoD.Text: ultraLight :: HasStyle a => a -> a
+ Diagrams.TwoD.Transform: reflectXY :: (InSpace v n t, R2 v, Transformable t) => t -> t
+ Diagrams.TwoD.Transform: reflectionXY :: (Additive v, R2 v, Num n) => Transformation v n
- Diagrams.Angle: angleBetween :: (Metric v, Floating n) => v n -> v n -> Angle n
+ Diagrams.Angle: angleBetween :: (Metric v, Floating n, Ord n) => v n -> v n -> Angle n
- Diagrams.Direction: angleBetweenDirs :: (Metric v, Floating n) => Direction v n -> Direction v n -> Angle n
+ Diagrams.Direction: angleBetweenDirs :: (Metric v, Floating n, Ord n) => Direction v n -> Direction v n -> Angle n
- Diagrams.Names: (.>>) :: IsName a => a -> q -> q
+ Diagrams.Names: (.>>) :: (Qualifiable q, IsName a) => a -> q -> q
- Diagrams.Names: toName :: a -> Name
+ Diagrams.Names: toName :: IsName a => a -> Name
- Diagrams.Prelude: (<*>) :: f (a -> b) -> f a -> f b
+ Diagrams.Prelude: (<*>) :: Applicative f => f (a -> b) -> f a -> f b
- Diagrams.Prelude: pure :: a -> f a
+ Diagrams.Prelude: pure :: Applicative f => a -> f a
- Diagrams.Query: sample :: Monoid m => QDiagram b v n m -> Point v n -> m
+ Diagrams.Query: sample :: HasQuery t m => t -> Point (V t) (N t) -> m
- Diagrams.Segment: oeEnvelope :: forall v_aYsd n_aYse. Lens' (OffsetEnvelope v_aYsd n_aYse) (Envelope v_aYsd n_aYse)
+ Diagrams.Segment: oeEnvelope :: forall v_a1aVu n_a1aVv. Lens' (OffsetEnvelope v_a1aVu n_a1aVv) (Envelope v_a1aVu n_a1aVv)
- Diagrams.Segment: oeOffset :: forall v_aYsd n_aYse. Lens' (OffsetEnvelope v_aYsd n_aYse) (TotalOffset v_aYsd n_aYse)
+ Diagrams.Segment: oeOffset :: forall v_a1aVu n_a1aVv. Lens' (OffsetEnvelope v_a1aVu n_a1aVv) (TotalOffset v_a1aVu n_a1aVv)
- Diagrams.ThreeD.Camera: horizontalFieldOfView :: forall n_aE1S. Lens' (PerspectiveLens n_aE1S) (Angle n_aE1S)
+ Diagrams.ThreeD.Camera: horizontalFieldOfView :: forall n_aOEO. Lens' (PerspectiveLens n_aOEO) (Angle n_aOEO)
- Diagrams.ThreeD.Camera: orthoHeight :: forall n_aE46. Lens' (OrthoLens n_aE46) n_aE46
+ Diagrams.ThreeD.Camera: orthoHeight :: forall n_aOH2. Lens' (OrthoLens n_aOH2) n_aOH2
- Diagrams.ThreeD.Camera: orthoWidth :: forall n_aE46. Lens' (OrthoLens n_aE46) n_aE46
+ Diagrams.ThreeD.Camera: orthoWidth :: forall n_aOH2. Lens' (OrthoLens n_aOH2) n_aOH2
- Diagrams.ThreeD.Camera: verticalFieldOfView :: forall n_aE1S. Lens' (PerspectiveLens n_aE1S) (Angle n_aE1S)
+ Diagrams.ThreeD.Camera: verticalFieldOfView :: forall n_aOEO. Lens' (PerspectiveLens n_aOEO) (Angle n_aOEO)
- Diagrams.ThreeD.Shapes: cone :: (TypeableFloat n, Renderable (Frustum n) b) => QDiagram b V3 n Any
+ Diagrams.ThreeD.Shapes: cone :: Num n => Frustum n
- Diagrams.ThreeD.Shapes: cube :: (Typeable n, OrderedField n, Renderable (Box n) b) => QDiagram b V3 n Any
+ Diagrams.ThreeD.Shapes: cube :: Num n => Box n
- Diagrams.ThreeD.Shapes: cylinder :: (TypeableFloat n, Renderable (Frustum n) b) => QDiagram b V3 n Any
+ Diagrams.ThreeD.Shapes: cylinder :: Num n => Frustum n
- Diagrams.ThreeD.Shapes: frustum :: (TypeableFloat n, Renderable (Frustum n) b) => n -> n -> QDiagram b V3 n Any
+ Diagrams.ThreeD.Shapes: frustum :: Num n => n -> n -> Frustum n
- Diagrams.ThreeD.Shapes: sphere :: (Typeable n, OrderedField n, Renderable (Ellipsoid n) b) => QDiagram b V3 n Any
+ Diagrams.ThreeD.Shapes: sphere :: Num n => Ellipsoid n
- Diagrams.ThreeD.Transform: pointAt :: Floating n => Direction V3 n -> Direction V3 n -> Direction V3 n -> Transformation V3 n
+ Diagrams.ThreeD.Transform: pointAt :: (Floating n, Ord n) => Direction V3 n -> Direction V3 n -> Direction V3 n -> Transformation V3 n
- Diagrams.ThreeD.Transform: pointAt' :: Floating n => V3 n -> V3 n -> V3 n -> Transformation V3 n
+ Diagrams.ThreeD.Transform: pointAt' :: (Floating n, Ord n) => V3 n -> V3 n -> V3 n -> Transformation V3 n
- Diagrams.ThreeD.Types: _x :: Functor f => (a -> f a) -> t a -> f (t a)
+ Diagrams.ThreeD.Types: _x :: (R1 t, Functor f) => (a -> f a) -> t a -> f (t a)
- Diagrams.ThreeD.Types: _xy :: Functor f => (V2 a -> f (V2 a)) -> t a -> f (t a)
+ Diagrams.ThreeD.Types: _xy :: (R2 t, Functor f) => (V2 a -> f (V2 a)) -> t a -> f (t a)
- Diagrams.ThreeD.Types: _xyz :: Functor f => (V3 a -> f (V3 a)) -> t a -> f (t a)
+ Diagrams.ThreeD.Types: _xyz :: (R3 t, Functor f) => (V3 a -> f (V3 a)) -> t a -> f (t a)
- Diagrams.ThreeD.Types: _y :: Functor f => (a -> f a) -> t a -> f (t a)
+ Diagrams.ThreeD.Types: _y :: (R2 t, Functor f) => (a -> f a) -> t a -> f (t a)
- Diagrams.ThreeD.Types: _z :: Functor f => (a -> f a) -> t a -> f (t a)
+ Diagrams.ThreeD.Types: _z :: (R3 t, Functor f) => (a -> f a) -> t a -> f (t a)
- Diagrams.Transform: moveOriginTo :: Point (V t) (N t) -> t -> t
+ Diagrams.Transform: moveOriginTo :: HasOrigin t => Point (V t) (N t) -> t -> t
- Diagrams.Transform: transform :: Transformation (V t) (N t) -> t -> t
+ Diagrams.Transform: transform :: Transformable t => Transformation (V t) (N t) -> t -> t
- Diagrams.Transform.ScaleInv: scaleInvDir :: forall t_aMOO. Lens' (ScaleInv t_aMOO) (Vn t_aMOO)
+ Diagrams.Transform.ScaleInv: scaleInvDir :: forall t_a120H. Lens' (ScaleInv t_a120H) (Vn t_a120H)
- Diagrams.Transform.ScaleInv: scaleInvLoc :: forall t_aMOO. Lens' (ScaleInv t_aMOO) (Point (V t_aMOO) (N t_aMOO))
+ Diagrams.Transform.ScaleInv: scaleInvLoc :: forall t_a120H. Lens' (ScaleInv t_a120H) (Point (V t_a120H) (N t_a120H))
- Diagrams.Transform.ScaleInv: scaleInvObj :: forall t_aMOO. Lens' (ScaleInv t_aMOO) t_aMOO
+ Diagrams.Transform.ScaleInv: scaleInvObj :: forall t_a120H. Lens' (ScaleInv t_a120H) t_a120H
- Diagrams.TwoD: _LG :: forall n_a2CLM. Prism' (Texture n_a2CLM) (LGradient n_a2CLM)
+ Diagrams.TwoD: _LG :: forall n_a255A. Prism' (Texture n_a255A) (LGradient n_a255A)
- Diagrams.TwoD: _RG :: forall n_a2CLM. Prism' (Texture n_a2CLM) (RGradient n_a2CLM)
+ Diagrams.TwoD: _RG :: forall n_a255A. Prism' (Texture n_a255A) (RGradient n_a255A)
- Diagrams.TwoD: _SC :: forall n_a2CLM. Prism' (Texture n_a2CLM) SomeColor
+ Diagrams.TwoD: _SC :: forall n_a255A. Prism' (Texture n_a255A) SomeColor
- Diagrams.TwoD: _x :: Functor f => (a -> f a) -> t a -> f (t a)
+ Diagrams.TwoD: _x :: (R1 t, Functor f) => (a -> f a) -> t a -> f (t a)
- Diagrams.TwoD: _xy :: Functor f => (V2 a -> f (V2 a)) -> t a -> f (t a)
+ Diagrams.TwoD: _xy :: (R2 t, Functor f) => (V2 a -> f (V2 a)) -> t a -> f (t a)
- Diagrams.TwoD: _y :: Functor f => (a -> f a) -> t a -> f (t a)
+ Diagrams.TwoD: _y :: (R2 t, Functor f) => (a -> f a) -> t a -> f (t a)
- Diagrams.TwoD: eColor :: forall n_a2VVQ. Lens' (EnvelopeOpts n_a2VVQ) (Colour Double)
+ Diagrams.TwoD: eColor :: forall n_a2jLE. Lens' (EnvelopeOpts n_a2jLE) (Colour Double)
- Diagrams.TwoD: eLineWidth :: forall n_a2VVQ n_a2VXP. Lens (EnvelopeOpts n_a2VVQ) (EnvelopeOpts n_a2VXP) (Measure n_a2VVQ) (Measure n_a2VXP)
+ Diagrams.TwoD: eLineWidth :: forall n_a2jLE n_a2jND. Lens (EnvelopeOpts n_a2jLE) (EnvelopeOpts n_a2jND) (Measure n_a2jLE) (Measure n_a2jND)
- Diagrams.TwoD: ePoints :: forall n_a2VVQ. Lens' (EnvelopeOpts n_a2VVQ) Int
+ Diagrams.TwoD: ePoints :: forall n_a2jLE. Lens' (EnvelopeOpts n_a2jLE) Int
- Diagrams.TwoD: oColor :: forall n_a2VUX. Lens' (OriginOpts n_a2VUX) (Colour Double)
+ Diagrams.TwoD: oColor :: forall n_a2jKL. Lens' (OriginOpts n_a2jKL) (Colour Double)
- Diagrams.TwoD: oMinSize :: forall n_a2VUX. Lens' (OriginOpts n_a2VUX) n_a2VUX
+ Diagrams.TwoD: oMinSize :: forall n_a2jKL. Lens' (OriginOpts n_a2jKL) n_a2jKL
- Diagrams.TwoD: oScale :: forall n_a2VUX. Lens' (OriginOpts n_a2VUX) n_a2VUX
+ Diagrams.TwoD: oScale :: forall n_a2jKL. Lens' (OriginOpts n_a2jKL) n_a2jKL
- Diagrams.TwoD: queryFillRule :: forall a. Lens' (StrokeOpts a) FillRule
+ Diagrams.TwoD: queryFillRule :: Lens' (StrokeOpts a) FillRule
- Diagrams.TwoD: radiusBL :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD: radiusBL :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD: radiusBR :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD: radiusBR :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD: radiusTL :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD: radiusTL :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD: radiusTR :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD: radiusTR :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD: rotation :: Floating n => Angle n -> T2 n
+ Diagrams.TwoD: rotation :: Floating n => Angle n -> Transformation V2 n
- Diagrams.TwoD: tColor :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) (Colour Double)
+ Diagrams.TwoD: tColor :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) (Colour Double)
- Diagrams.TwoD: tMinSize :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) n_a2VYe
+ Diagrams.TwoD: tMinSize :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) n_a2jO2
- Diagrams.TwoD: tPoints :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) Int
+ Diagrams.TwoD: tPoints :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) Int
- Diagrams.TwoD: tScale :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) n_a2VYe
+ Diagrams.TwoD: tScale :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) n_a2jO2
- Diagrams.TwoD: vertexNames :: forall a a'. Lens (StrokeOpts a) (StrokeOpts a') [[a]] [[a']]
+ Diagrams.TwoD: vertexNames :: Lens (StrokeOpts a) (StrokeOpts a') [[a]] [[a']]
- Diagrams.TwoD.Attributes: _LG :: forall n_a2CLM. Prism' (Texture n_a2CLM) (LGradient n_a2CLM)
+ Diagrams.TwoD.Attributes: _LG :: forall n_a255A. Prism' (Texture n_a255A) (LGradient n_a255A)
- Diagrams.TwoD.Attributes: _RG :: forall n_a2CLM. Prism' (Texture n_a2CLM) (RGradient n_a2CLM)
+ Diagrams.TwoD.Attributes: _RG :: forall n_a255A. Prism' (Texture n_a255A) (RGradient n_a255A)
- Diagrams.TwoD.Attributes: _SC :: forall n_a2CLM. Prism' (Texture n_a2CLM) SomeColor
+ Diagrams.TwoD.Attributes: _SC :: forall n_a255A. Prism' (Texture n_a255A) SomeColor
- Diagrams.TwoD.Model: eColor :: forall n_a2VVQ. Lens' (EnvelopeOpts n_a2VVQ) (Colour Double)
+ Diagrams.TwoD.Model: eColor :: forall n_a2jLE. Lens' (EnvelopeOpts n_a2jLE) (Colour Double)
- Diagrams.TwoD.Model: eLineWidth :: forall n_a2VVQ n_a2VXP. Lens (EnvelopeOpts n_a2VVQ) (EnvelopeOpts n_a2VXP) (Measure n_a2VVQ) (Measure n_a2VXP)
+ Diagrams.TwoD.Model: eLineWidth :: forall n_a2jLE n_a2jND. Lens (EnvelopeOpts n_a2jLE) (EnvelopeOpts n_a2jND) (Measure n_a2jLE) (Measure n_a2jND)
- Diagrams.TwoD.Model: ePoints :: forall n_a2VVQ. Lens' (EnvelopeOpts n_a2VVQ) Int
+ Diagrams.TwoD.Model: ePoints :: forall n_a2jLE. Lens' (EnvelopeOpts n_a2jLE) Int
- Diagrams.TwoD.Model: oColor :: forall n_a2VUX. Lens' (OriginOpts n_a2VUX) (Colour Double)
+ Diagrams.TwoD.Model: oColor :: forall n_a2jKL. Lens' (OriginOpts n_a2jKL) (Colour Double)
- Diagrams.TwoD.Model: oMinSize :: forall n_a2VUX. Lens' (OriginOpts n_a2VUX) n_a2VUX
+ Diagrams.TwoD.Model: oMinSize :: forall n_a2jKL. Lens' (OriginOpts n_a2jKL) n_a2jKL
- Diagrams.TwoD.Model: oScale :: forall n_a2VUX. Lens' (OriginOpts n_a2VUX) n_a2VUX
+ Diagrams.TwoD.Model: oScale :: forall n_a2jKL. Lens' (OriginOpts n_a2jKL) n_a2jKL
- Diagrams.TwoD.Model: tColor :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) (Colour Double)
+ Diagrams.TwoD.Model: tColor :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) (Colour Double)
- Diagrams.TwoD.Model: tMinSize :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) n_a2VYe
+ Diagrams.TwoD.Model: tMinSize :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) n_a2jO2
- Diagrams.TwoD.Model: tPoints :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) Int
+ Diagrams.TwoD.Model: tPoints :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) Int
- Diagrams.TwoD.Model: tScale :: forall n_a2VYe. Lens' (TraceOpts n_a2VYe) n_a2VYe
+ Diagrams.TwoD.Model: tScale :: forall n_a2jO2. Lens' (TraceOpts n_a2jO2) n_a2jO2
- Diagrams.TwoD.Path: isInsideEvenOdd :: RealFloat n => Point V2 n -> Path V2 n -> Bool
+ Diagrams.TwoD.Path: isInsideEvenOdd :: HasQuery t Crossings => t -> Point (V t) (N t) -> Bool
- Diagrams.TwoD.Path: isInsideWinding :: RealFloat n => Point V2 n -> Path V2 n -> Bool
+ Diagrams.TwoD.Path: isInsideWinding :: HasQuery t Crossings => t -> Point (V t) (N t) -> Bool
- Diagrams.TwoD.Path: queryFillRule :: forall a. Lens' (StrokeOpts a) FillRule
+ Diagrams.TwoD.Path: queryFillRule :: Lens' (StrokeOpts a) FillRule
- Diagrams.TwoD.Path: vertexNames :: forall a a'. Lens (StrokeOpts a) (StrokeOpts a') [[a]] [[a']]
+ Diagrams.TwoD.Path: vertexNames :: Lens (StrokeOpts a) (StrokeOpts a') [[a]] [[a']]
- Diagrams.TwoD.Shapes: radiusBL :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD.Shapes: radiusBL :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD.Shapes: radiusBR :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD.Shapes: radiusBR :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD.Shapes: radiusTL :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD.Shapes: radiusTL :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD.Shapes: radiusTR :: forall d_a22ba. Lens' (RoundedRectOpts d_a22ba) d_a22ba
+ Diagrams.TwoD.Shapes: radiusTR :: forall d_a2xSp. Lens' (RoundedRectOpts d_a2xSp) d_a2xSp
- Diagrams.TwoD.Transform: rotation :: Floating n => Angle n -> T2 n
+ Diagrams.TwoD.Transform: rotation :: Floating n => Angle n -> Transformation V2 n
- Diagrams.TwoD.Types: _x :: Functor f => (a -> f a) -> t a -> f (t a)
+ Diagrams.TwoD.Types: _x :: (R1 t, Functor f) => (a -> f a) -> t a -> f (t a)
- Diagrams.TwoD.Types: _xy :: Functor f => (V2 a -> f (V2 a)) -> t a -> f (t a)
+ Diagrams.TwoD.Types: _xy :: (R2 t, Functor f) => (V2 a -> f (V2 a)) -> t a -> f (t a)
- Diagrams.TwoD.Types: _y :: Functor f => (a -> f a) -> t a -> f (t a)
+ Diagrams.TwoD.Types: _y :: (R2 t, Functor f) => (a -> f a) -> t a -> f (t a)
Files
- CHANGELOG.md +85/−0
- LICENSE +12/−1
- diagrams-lib.cabal +34/−10
- diagrams/src_Diagrams_Combinators_alignedEx1.svg +1/−0
- diagrams/src_Diagrams_Combinators_alignedEx2.svg +1/−0
- diagrams/src_Diagrams_Combinators_appendsEx.svg +1/−3
- diagrams/src_Diagrams_Combinators_besideEx.svg +1/−3
- diagrams/src_Diagrams_Combinators_positionEx.svg +1/−3
- diagrams/src_Diagrams_Combinators_strutEx.svg +1/−3
- diagrams/src_Diagrams_Combinators_withEnvelopeEx.svg +1/−3
- diagrams/src_Diagrams_CubicSpline_Boehm_bsplineEx.svg +1/−0
- diagrams/src_Diagrams_CubicSpline_cubicSplineEx.svg +1/−3
- diagrams/src_Diagrams_TrailLike_explodeTrailEx.svg +1/−3
- diagrams/src_Diagrams_TrailLike_fromOffsetsEx.svg +1/−3
- diagrams/src_Diagrams_TrailLike_fromSegmentsEx.svg +1/−3
- diagrams/src_Diagrams_TrailLike_fromVerticesEx.svg +1/−3
- diagrams/src_Diagrams_TrailLike_twiddleEx.svg +1/−3
- diagrams/src_Diagrams_Trail_closeLineEx.svg +1/−3
- diagrams/src_Diagrams_Trail_glueLineEx.svg +1/−3
- diagrams/src_Diagrams_Trail_lineFromOffsetsEx.svg +1/−3
- diagrams/src_Diagrams_Trail_lineFromVerticesEx.svg +1/−3
- diagrams/src_Diagrams_Trail_trailOffsetEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arc_annularWedgeEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arc_arc'Ex.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arc_arcBetweenEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arc_wedgeEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrow_example1.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrow_example2.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_blockEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_dart'Ex.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_dartEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_halfDart'Ex.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_halfDartEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_quillEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_spike'Ex.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_spikeEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_thorn'Ex.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_thornEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_tri'Ex.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_tri25Ex.svg +1/−3
- diagrams/src_Diagrams_TwoD_Arrowheads_triEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Curvature_diagramA.svg +1/−3
- diagrams/src_Diagrams_TwoD_Curvature_diagramNeg.svg +1/−3
- diagrams/src_Diagrams_TwoD_Curvature_diagramPos.svg +1/−3
- diagrams/src_Diagrams_TwoD_Curvature_diagramZero.svg +1/−3
- diagrams/src_Diagrams_TwoD_Offset_cubicOffsetExample.svg +1/−3
- diagrams/src_Diagrams_TwoD_Offset_expandLoopExample.svg +1/−3
- diagrams/src_Diagrams_TwoD_Offset_expandTrailExample.svg +1/−3
- diagrams/src_Diagrams_TwoD_Offset_offsetTrailExample.svg +1/−3
- diagrams/src_Diagrams_TwoD_Offset_offsetTrailLeftExample.svg +1/−3
- diagrams/src_Diagrams_TwoD_Offset_offsetTrailOuterExample.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_decagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_dodecagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_hendecagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_heptagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_hexagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_hruleEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_nonagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_octagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_pentagonEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_rectEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_roundedRectEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_squareEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_triangleEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_unitSquareEx.svg +1/−3
- diagrams/src_Diagrams_TwoD_Shapes_vruleEx.svg +1/−3
- src/Diagrams/Angle.hs +60/−7
- src/Diagrams/Attributes.hs +58/−0
- src/Diagrams/Backend/CmdLine.hs +1/−1
- src/Diagrams/BoundingBox.hs +10/−10
- src/Diagrams/Combinators.hs +45/−0
- src/Diagrams/CubicSpline.hs +18/−7
- src/Diagrams/CubicSpline/Boehm.hs +147/−0
- src/Diagrams/Direction.hs +2/−3
- src/Diagrams/Located.hs +11/−1
- src/Diagrams/Path.hs +12/−1
- src/Diagrams/Query.hs +75/−2
- src/Diagrams/Segment.hs +47/−0
- src/Diagrams/ThreeD.hs +11/−13
- src/Diagrams/ThreeD/Attributes.hs +6/−7
- src/Diagrams/ThreeD/Shapes.hs +238/−83
- src/Diagrams/ThreeD/Transform.hs +4/−4
- src/Diagrams/Trail.hs +73/−5
- src/Diagrams/TwoD.hs +5/−2
- src/Diagrams/TwoD/Align.hs +0/−11
- src/Diagrams/TwoD/Arrow.hs +9/−7
- src/Diagrams/TwoD/Image.hs +14/−2
- src/Diagrams/TwoD/Path.hs +109/−50
- src/Diagrams/TwoD/Polygons.hs +2/−1
- src/Diagrams/TwoD/Text.hs +90/−23
- src/Diagrams/TwoD/Transform.hs +18/−27
- src/Diagrams/TwoD/Vector.hs +6/−0
- test/Diagrams/Test/Angle.hs +29/−0
- test/Diagrams/Test/Direction.hs +34/−0
- test/Diagrams/Test/Transform.hs +74/−0
- test/Diagrams/Test/TwoD.hs +53/−0
- test/Diagrams/Test/TwoD/Offset.hs +48/−0
- test/Diagrams/TwoD/OffsetTest.hs +0/−48
- test/Instances.hs +132/−0
- test/Speed.hs +45/−0
- test/Test.hs +15/−3
CHANGELOG.md view
@@ -1,3 +1,88 @@+## [v1.4](https://github.com/diagrams/diagrams-lib/tree/v1.4) (2016-10-26)++* **New features**++ - New `mkText'` function, which allows making a text primitive+ without recommending a fill colour or font size so users can+ recommend their own (*e.g.* using the `recommendFontSize`+ function).++ - New functions `reflectXY` and `reflectionXY`++ - New `composeAligned` combinator for doing composition under an+ alignment while leaving the local origin unaffected.++ - Add `_LocLoop` and `_LocLine` prisms++ - New `bspline` function for creating uniform cubic B-splines++ - New 3D features:+ - New `Skinned` class+ - Improved handling of 3D primitives+ - CSG++ - New standard attributes for separate fill and stroke opacity+ (see+ [#248](https://github.com/diagrams/diagrams-lib/issues/248)).++ - New `HasQuery` class for things which can be spatially queried+ for values from some monoid.++ - New function `inquire` for testing whether a given point is+ inside a diagram.++ - New font weights: `bolder`, `lighter`, `thinWeight`,+ `ultraLight`, `light`, `mediumWeight`, `heavy`, `semiBold`,+ `ultraBold`. Note that currently only the SVG backend deals+ with the new weights.++ - Export `GetSegmentCodomain` and update documentation++ - Improved performance of 2D rotations++* **New instances**++ - `Alignable` instance for `Located`++ - `ToPath` instances for lines and loops++ - `Serialize` instances for `Trail`, `Path`, `Located`, `SegTree`,+ `Segment`++ - `Generic` instances for `Path`, `Located`++ - `Action` instance for `Angle`: angles act by rotation.++* **API changes**++ - `snugBL`, `snugBR`, `snugTR` and `snugBR` are deprecated.+ These functions were unintuitive, ad-hoc, and not particularly useful,+ especially since e.g. `snugL` and `snugB` do not commute. You+ can use something like `snugB . snugL` directly, or use `snug`+ with a direction vector. See+ [#250](https://github.com/diagrams/diagrams-lib/issues/250) for+ more details.++* **Dependency/version changes**++ - upgrade `fsnotify` and drop dependency on deprecated+ `system-filepath`+ - Allow `lens-4.15`+ - Many other bumped upper bounds, see release notes for minor releases+ below++* **Bug fixes**++ - fix `orientPoints` function, which was previously generating NaN+ values with lists of only one or two+ points. ([#210](https://github.com/diagrams/diagrams-lib/issues/210))++ - Broken offset joins with non-vertices in loops ([#263](https://github.com/diagrams/diagrams-lib/issues/263))++ - Properly transform arrow shaft styles ([#274](https://github.com/diagrams/diagrams-lib/issues/274))++ - Fix sign error in `reflectionAbout`+ ## [v1.3.1.4](https://github.com/diagrams/diagrams-lib/tree/v1.3.1.4) (2016-08-16) (16 August 2016) - allow `optparse-applicative-0.13`
LICENSE view
@@ -1,24 +1,35 @@-Copyright (c) 2011-2015 diagrams-lib team:+Copyright (c) 2011-2016 diagrams-lib team: + Florent Becker <florent.becker@univ-orleans.fr> Jan Bracker <jan.bracker@googlemail.com> Daniel Bergey <bergey@alum.mit.edu>+ Vincent Berthoux <vincent.berthoux@gmail.com> Christopher Chalmers <c.chalmers@me.com>+ Michael Chavinda <mchavinda@colgate.edu> Denys Duchier <denys.duchier@univ-orleans.fr> Daniil Frumin <difrumin@gmail.com>+ Ben Gamari <ben@smart-cactus.org> Allan Gardner <allanegardner@gmail.com> Pontus Granström <pnutus@gmail.com>+ Gabor Greif <ggreif@gmail.com> Niklas Haas <nand@lavabit.com> Peter Hall <peter.hall@memorphic.com>+ Dashiell Halpern Claude Heiland-Allen <claudiusmaximus@goto10.org> Deepak Jois <deepak.jois@gmail.com>+ Sidharth Kapur <sidharthkapur1@gmail.com>+ Taru Karttunen <taruti@taruti.net> John Lato <jwlato@tsurucapital.com>+ Konrad Madej <kdmadej@gmail.com> Chris Mears <chris@cmears.id.au>+ Alexis Praga <praga@cerfacs.fr> Jeffrey Rosenbluth <jeffrey.rosenbluth@gmail.com> Ian Ross <ian@skybluetrades.net> Carlos Scheidegger <cscheid@research.att.com> Michael Sloan <mgsloan@gmail.com> Jim Snavely <ludflu@gmail.com> Kanchalai Suveepattananont <ksuvee@seas.upenn.edu>+ Robert Vollmert <rfvollmert@gmail.com> Scott Walck <walck@lvc.edu> Ryan Yates <fryguybob@gmail.com> Brent Yorgey <byorgey@cis.upenn.edu>
diagrams-lib.cabal view
@@ -1,5 +1,5 @@ Name: diagrams-lib-Version: 1.3.1.4+Version: 1.4 Synopsis: Embedded domain-specific language for declarative graphics Description: Diagrams is a flexible, extensible EDSL for creating graphics of many types. Graphics can be created@@ -21,7 +21,7 @@ Cabal-version: >=1.10 Extra-source-files: CHANGELOG.md, README.markdown, diagrams/*.svg Extra-doc-files: diagrams/*.svg-Tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.1+Tested-with: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1 Source-repository head type: git location: http://github.com/diagrams/diagrams-lib.git@@ -40,6 +40,7 @@ Diagrams.Combinators, Diagrams.Coordinates, Diagrams.CubicSpline,+ Diagrams.CubicSpline.Boehm, Diagrams.CubicSpline.Internal, Diagrams.Deform Diagrams.Direction,@@ -99,20 +100,20 @@ Diagrams.TwoD.Types, Diagrams.TwoD.Vector, Diagrams.Util- Build-depends: base >= 4.2 && < 4.10,+ Build-depends: base >= 4.6 && < 4.10, containers >= 0.3 && < 0.6, array >= 0.3 && < 0.6, semigroups >= 0.3.4 && < 0.19, monoid-extras >= 0.3 && < 0.5, dual-tree >= 0.2 && < 0.3,- diagrams-core >= 1.3 && < 1.4,+ diagrams-core >= 1.4 && < 1.5, diagrams-solve >= 0.1 && < 0.2, active >= 0.2 && < 0.3, colour >= 2.3.2 && < 2.4, data-default-class < 0.2, fingertree >= 0.1 && < 0.2, intervals >= 0.7 && < 0.8,- lens >= 4.6 && < 4.15,+ lens >= 4.6 && < 4.16, tagged >= 0.7, optparse-applicative >= 0.11 && < 0.14, filepath,@@ -128,7 +129,9 @@ text >= 0.7.1 && < 1.3, mtl >= 2.0 && < 2.3, transformers >= 0.3.0 && < 0.6.0,- exceptions >= 0.6 && < 1.0+ profunctors >= 5.0 && < 6.0,+ exceptions >= 0.6 && < 1.0,+ cereal >=0.4.1.1 && <0.6 if impl(ghc < 7.6) Build-depends: ghc-prim Hs-source-dirs: src@@ -144,10 +147,31 @@ test-suite tests type: exitcode-stdio-1.0 main-is: Test.hs- other-modules: Diagrams.TwoD.OffsetTest+ other-modules: Diagrams.Test.Direction+ , Diagrams.Test.Transform+ , Diagrams.Test.TwoD.Offset+ , Diagrams.Test.TwoD+ , Diagrams.Test.Angle+ , Instances hs-source-dirs: test build-depends: base >= 4.2 && < 4.10,- tasty >= 0.10,- tasty-hunit >= 0.9.2,- diagrams-lib+ tasty >= 0.10 && < 0.12,+ tasty-hunit >= 0.9.2 && < 0.10,+ tasty-quickcheck >= 0.8 && < 0.9,+ deepseq >= 1.3 && < 1.5,+ diagrams-lib,+ lens,+ numeric-extras,+ diagrams-solve default-language: Haskell2010++benchmark benchmarks+ type: exitcode-stdio-1.0+ main-is:Speed.hs+ hs-source-dirs:test+ default-language: Haskell2010+ build-depends:+ base < 5,+ criterion,+ diagrams-core,+ diagrams-lib
+ diagrams/src_Diagrams_Combinators_alignedEx1.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" height="151.7241" stroke-opacity="1" viewBox="0 0 400 152" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.9854108192823033" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 393.1034,34.4828 c 0.0000,-15.2354 -12.3508,-27.5862 -27.5862 -27.5862c -15.2354,-0.0000 -27.5862,12.3508 -27.5862 27.5862c -0.0000,15.2354 12.3508,27.5862 27.5862 27.5862c 15.2354,0.0000 27.5862,-12.3508 27.5862 -27.5862Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.9854108192823033" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 310.3448,75.8621 c 0.0000,-38.0886 -30.8769,-68.9655 -68.9655 -68.9655c -38.0886,-0.0000 -68.9655,30.8769 -68.9655 68.9655c -0.0000,38.0886 30.8769,68.9655 68.9655 68.9655c 38.0886,0.0000 68.9655,-30.8769 68.9655 -68.9655Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.9854108192823033" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 144.8276,48.2759 c 0.0000,-22.8532 -18.5261,-41.3793 -41.3793 -41.3793c -22.8532,-0.0000 -41.3793,18.5261 -41.3793 41.3793c -0.0000,22.8532 18.5261,41.3793 41.3793 41.3793c 22.8532,0.0000 41.3793,-18.5261 41.3793 -41.3793Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.9854108192823033" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 34.4828,20.6897 c 0.0000,-7.6177 -6.1754,-13.7931 -13.7931 -13.7931c -7.6177,-0.0000 -13.7931,6.1754 -13.7931 13.7931c -0.0000,7.6177 6.1754,13.7931 13.7931 13.7931c 7.6177,0.0000 13.7931,-6.1754 13.7931 -13.7931Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 28.4138,20.6897 c 0.0000,-4.2659 -3.4582,-7.7241 -7.7241 -7.7241c -4.2659,-0.0000 -7.7241,3.4582 -7.7241 7.7241c -0.0000,4.2659 3.4582,7.7241 7.7241 7.7241c 4.2659,0.0000 7.7241,-3.4582 7.7241 -7.7241Z"/></g></svg>
+ diagrams/src_Diagrams_Combinators_alignedEx2.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" height="400.0000" stroke-opacity="1" viewBox="0 0 400 400" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.5999999999999999" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 256.1849,297.9712 l 56.1849,-172.9194 l -147.0940,-106.8700 l -147.0940,106.8700 l 56.1849,172.9194 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.5999999999999999" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 200.0000,175.6410 l -90.9091,-157.4592 l -90.9091,157.4592 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.5999999999999999" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 200.0000,200.0000 l -0.0000,-181.8182 h -181.8182 l -0.0000,181.8182 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.5999999999999999" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 381.8182,200.0000 c 0.0000,-100.4154 -81.4028,-181.8182 -181.8182 -181.8182c -100.4154,-0.0000 -181.8182,81.4028 -181.8182 181.8182c -0.0000,100.4154 81.4028,181.8182 181.8182 181.8182c 100.4154,0.0000 181.8182,-81.4028 181.8182 -181.8182Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 207.2727,200.0000 c 0.0000,-4.0166 -3.2561,-7.2727 -7.2727 -7.2727c -4.0166,-0.0000 -7.2727,3.2561 -7.2727 7.2727c -0.0000,4.0166 3.2561,7.2727 7.2727 7.2727c 4.0166,0.0000 7.2727,-3.2561 7.2727 -7.2727Z"/></g></svg>
diagrams/src_Diagrams_Combinators_appendsEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="182.15600114617723" stroke-opacity="1" viewBox="0 0 200 182" font-size="1" width="200.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 160.6111204622467,143.5731526092298 c 0.0,-16.735901510024043 -13.567128793006255,-30.3030303030303 -30.303030303030294 -30.3030303030303c -16.735901510024043,-1.024778410754815e-15 -30.3030303030303,13.567128793006253 -30.3030303030303 30.30303030303029c -2.04955682150963e-15,16.735901510024043 13.567128793006251,30.3030303030303 30.303030303030287 30.3030303030303c 16.735901510024043,3.0743352322644448e-15 30.3030303030303,-13.56712879300625 30.303030303030308 -30.30303030303029Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 99.99494014381385,143.57315260922977 c 0.0,-16.735901510024043 -13.567128793006255,-30.3030303030303 -30.303030303030294 -30.3030303030303c -16.735901510024043,-1.024778410754815e-15 -30.3030303030303,13.567128793006253 -30.3030303030303 30.30303030303029c -2.04955682150963e-15,16.735901510024043 13.567128793006251,30.3030303030303 30.303030303030287 30.3030303030303c 16.735901510024043,3.0743352322644448e-15 30.3030303030303,-13.56712879300625 30.303030303030308 -30.30303030303029Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 69.6969696969697,91.07800057308859 c 0.0,-16.735901510024043 -13.567128793006255,-30.3030303030303 -30.303030303030294 -30.3030303030303c -16.735901510024043,-1.024778410754815e-15 -30.3030303030303,13.567128793006253 -30.3030303030303 30.30303030303029c -2.04955682150963e-15,16.735901510024043 13.567128793006251,30.3030303030303 30.303030303030287 30.3030303030303c 16.735901510024043,3.0743352322644448e-15 30.3030303030303,-13.56712879300625 30.303030303030308 -30.30303030303029Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 99.99494014381389,38.58284853694745 c 0.0,-16.735901510024043 -13.567128793006255,-30.3030303030303 -30.303030303030294 -30.3030303030303c -16.735901510024043,-1.024778410754815e-15 -30.3030303030303,13.567128793006253 -30.3030303030303 30.30303030303029c -2.04955682150963e-15,16.735901510024043 13.567128793006251,30.3030303030303 30.303030303030287 30.3030303030303c 16.735901510024043,3.0743352322644448e-15 30.3030303030303,-13.56712879300625 30.303030303030308 -30.30303030303029Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 160.61112046224676,38.58284853694746 c 0.0,-16.735901510024043 -13.567128793006255,-30.3030303030303 -30.303030303030294 -30.3030303030303c -16.735901510024043,-1.024778410754815e-15 -30.3030303030303,13.567128793006253 -30.3030303030303 30.30303030303029c -2.04955682150963e-15,16.735901510024043 13.567128793006251,30.3030303030303 30.303030303030287 30.3030303030303c 16.735901510024043,3.0743352322644448e-15 30.3030303030303,-13.56712879300625 30.303030303030308 -30.30303030303029Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 190.9090909090909,91.07800057308862 c 0.0,-16.735901510024043 -13.567128793006255,-30.3030303030303 -30.303030303030294 -30.3030303030303c -16.735901510024043,-1.024778410754815e-15 -30.3030303030303,13.567128793006253 -30.3030303030303 30.30303030303029c -2.04955682150963e-15,16.735901510024043 13.567128793006251,30.3030303030303 30.303030303030287 30.3030303030303c 16.735901510024043,3.0743352322644448e-15 30.3030303030303,-13.56712879300625 30.303030303030308 -30.30303030303029Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 130.3030303030303,91.07800057308862 c 0.0,-16.735901510024043 -13.567128793006255,-30.3030303030303 -30.303030303030294 -30.3030303030303c -16.735901510024043,-1.024778410754815e-15 -30.3030303030303,13.567128793006253 -30.3030303030303 30.30303030303029c -2.04955682150963e-15,16.735901510024043 13.567128793006251,30.3030303030303 30.303030303030287 30.3030303030303c 16.735901510024043,3.0743352322644448e-15 30.3030303030303,-13.56712879300625 30.303030303030308 -30.30303030303029Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="182.1560" stroke-opacity="1" viewBox="0 0 200 182" font-size="1" width="200.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 160.6111,143.5732 c 0.0000,-16.7359 -13.5671,-30.3030 -30.3030 -30.3030c -16.7359,-0.0000 -30.3030,13.5671 -30.3030 30.3030c -0.0000,16.7359 13.5671,30.3030 30.3030 30.3030c 16.7359,0.0000 30.3030,-13.5671 30.3030 -30.3030Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 99.9949,143.5732 c 0.0000,-16.7359 -13.5671,-30.3030 -30.3030 -30.3030c -16.7359,-0.0000 -30.3030,13.5671 -30.3030 30.3030c -0.0000,16.7359 13.5671,30.3030 30.3030 30.3030c 16.7359,0.0000 30.3030,-13.5671 30.3030 -30.3030Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 69.6970,91.0780 c 0.0000,-16.7359 -13.5671,-30.3030 -30.3030 -30.3030c -16.7359,-0.0000 -30.3030,13.5671 -30.3030 30.3030c -0.0000,16.7359 13.5671,30.3030 30.3030 30.3030c 16.7359,0.0000 30.3030,-13.5671 30.3030 -30.3030Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 99.9949,38.5828 c 0.0000,-16.7359 -13.5671,-30.3030 -30.3030 -30.3030c -16.7359,-0.0000 -30.3030,13.5671 -30.3030 30.3030c -0.0000,16.7359 13.5671,30.3030 30.3030 30.3030c 16.7359,0.0000 30.3030,-13.5671 30.3030 -30.3030Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 160.6111,38.5828 c 0.0000,-16.7359 -13.5671,-30.3030 -30.3030 -30.3030c -16.7359,-0.0000 -30.3030,13.5671 -30.3030 30.3030c -0.0000,16.7359 13.5671,30.3030 30.3030 30.3030c 16.7359,0.0000 30.3030,-13.5671 30.3030 -30.3030Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 190.9091,91.0780 c 0.0000,-16.7359 -13.5671,-30.3030 -30.3030 -30.3030c -16.7359,-0.0000 -30.3030,13.5671 -30.3030 30.3030c -0.0000,16.7359 13.5671,30.3030 30.3030 30.3030c 16.7359,0.0000 30.3030,-13.5671 30.3030 -30.3030Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7634783583493163" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 130.3030,91.0780 c 0.0000,-16.7359 -13.5671,-30.3030 -30.3030 -30.3030c -16.7359,-0.0000 -30.3030,13.5671 -30.3030 30.3030c -0.0000,16.7359 13.5671,30.3030 30.3030 30.3030c 16.7359,0.0000 30.3030,-13.5671 30.3030 -30.3030Z"/></g></svg>
diagrams/src_Diagrams_Combinators_besideEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="200.0" stroke-opacity="1" viewBox="0 0 170 200" font-size="1" width="169.72067997066802" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.7369573772655632" fill="rgb(128,0,128)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 162.00610360836492,68.63383995200215 c 0.0,-32.884652674811015 -26.658278186282047,-59.54293086109307 -59.54293086109305 -59.54293086109307c -32.884652674811015,-2.0136042319639878e-15 -59.54293086109307,26.658278186282043 -59.54293086109307 59.54293086109305c -4.0272084639279756e-15,32.884652674811015 26.658278186282036,59.54293086109307 59.54293086109304 59.54293086109307c 32.884652674811015,6.0408126958919634e-15 59.54293086109307,-26.658278186282033 59.54293086109307 -59.54293086109305Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.7369573772655632" fill="rgb(255,165,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 87.10515084376053,151.2138036683622 c 0.0,-21.923101783207343 -17.772185457521363,-39.69528724072871 -39.6952872407287 -39.69528724072871c -21.923101783207343,-1.342402821309325e-15 -39.69528724072871,17.77218545752136 -39.69528724072871 39.695287240728696c -2.68480564261865e-15,21.923101783207343 17.77218545752136,39.69528724072871 39.695287240728696 39.69528724072871c 21.923101783207343,4.0272084639279756e-15 39.69528724072871,-17.772185457521356 39.69528724072871 -39.695287240728696Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 51.04622723939545,151.2138036683622 c 0.0,-2.0083081812028856 -1.628055455160751,-3.6363636363636367 -3.6363636363636362 -3.6363636363636367c -2.0083081812028856,-1.2297340929057781e-16 -3.6363636363636367,1.6280554551607507 -3.6363636363636367 3.636363636363636c -2.4594681858115563e-16,2.0083081812028856 1.6280554551607507,3.6363636363636367 3.6363636363636354 3.6363636363636367c 2.0083081812028856,3.689202278717335e-16 3.6363636363636367,-1.6280554551607502 3.636363636363638 -3.636363636363636Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="200.0000" stroke-opacity="1" viewBox="0 0 170 200" font-size="1" width="169.7207" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.7369573772655632" fill="rgb(128,0,128)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 162.0061,68.6338 c 0.0000,-32.8847 -26.6583,-59.5429 -59.5429 -59.5429c -32.8847,-0.0000 -59.5429,26.6583 -59.5429 59.5429c -0.0000,32.8847 26.6583,59.5429 59.5429 59.5429c 32.8847,0.0000 59.5429,-26.6583 59.5429 -59.5429Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.7369573772655632" fill="rgb(255,165,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 87.1052,151.2138 c 0.0000,-21.9231 -17.7722,-39.6953 -39.6953 -39.6953c -21.9231,-0.0000 -39.6953,17.7722 -39.6953 39.6953c -0.0000,21.9231 17.7722,39.6953 39.6953 39.6953c 21.9231,0.0000 39.6953,-17.7722 39.6953 -39.6953Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 51.0462,151.2138 c 0.0000,-2.0083 -1.6281,-3.6364 -3.6364 -3.6364c -2.0083,-0.0000 -3.6364,1.6281 -3.6364 3.6364c -0.0000,2.0083 1.6281,3.6364 3.6364 3.6364c 2.0083,0.0000 3.6364,-1.6281 3.6364 -3.6364Z"/></g></svg>
diagrams/src_Diagrams_Combinators_positionEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="300.0" stroke-opacity="1" viewBox="0 0 204 300" font-size="1" width="204.25531914893568" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 204.25531914893565,6.3829787234042215 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 197.87234042553143,43.40425531914886 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 191.48936170212718,77.87234042553186 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 185.10638297872293,109.78723404255311 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 178.7234042553187,139.14893617021266 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 172.34042553191446,165.95744680851053 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 165.9574468085102,190.2127659574467 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 159.574468085106,211.91489361702116 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 153.19148936170174,231.06382978723394 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 146.8085106382975,247.659574468085 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 140.42553191489327,261.7021276595744 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 134.04255319148902,273.19148936170205 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 127.6595744680848,282.12765957446805 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 121.27659574468056,288.51063829787233 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 114.89361702127631,292.3404255319149 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 108.51063829787208,293.6170212765958 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 102.12765957446784,292.34042553191495 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.74468085106359,288.51063829787245 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.36170212765936,282.1276595744682 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 82.97872340425512,273.19148936170234 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 76.59574468085087,261.7021276595747 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 70.21276595744663,247.65957446808542 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 63.8297872340424,231.0638297872344 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 57.44680851063816,211.9148936170217 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 51.06382978723392,190.2127659574473 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 44.68085106382968,165.9574468085112 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 38.29787234042544,139.1489361702134 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 31.914893617021193,109.78723404255393 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 25.531914893616957,77.87234042553271 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 19.14893617021272,43.404255319149826 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 12.765957446808471,6.382978723405245 c 0.0,-3.5252218074305848 -2.8577569159736487,-6.382978723404235 -6.382978723404233 -6.382978723404235c -3.5252218074305848,-2.1585758013771565e-16 -6.382978723404235,2.8577569159736482 -6.382978723404235 6.382978723404233c -4.317151602754313e-16,3.5252218074305848 2.8577569159736482,6.382978723404235 6.382978723404232 6.382978723404235c 3.5252218074305848,6.47572740413147e-16 6.382978723404235,-2.857756915973648 6.382978723404236 -6.382978723404233Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="300.0000" stroke-opacity="1" viewBox="0 0 204 300" font-size="1" width="204.2553" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 204.2553,6.3830 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 197.8723,43.4043 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 191.4894,77.8723 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 185.1064,109.7872 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 178.7234,139.1489 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 172.3404,165.9574 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 165.9574,190.2128 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 159.5745,211.9149 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 153.1915,231.0638 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 146.8085,247.6596 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 140.4255,261.7021 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 134.0426,273.1915 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 127.6596,282.1277 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 121.2766,288.5106 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 114.8936,292.3404 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 108.5106,293.6170 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 102.1277,292.3404 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.7447,288.5106 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.3617,282.1277 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 82.9787,273.1915 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 76.5957,261.7021 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 70.2128,247.6596 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 63.8298,231.0638 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 57.4468,211.9149 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 51.0638,190.2128 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 44.6809,165.9574 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 38.2979,139.1489 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 31.9149,109.7872 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 25.5319,77.8723 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 19.1489,43.4043 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.9901643964084406" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 12.7660,6.3830 c 0.0000,-3.5252 -2.8578,-6.3830 -6.3830 -6.3830c -3.5252,-0.0000 -6.3830,2.8578 -6.3830 6.3830c -0.0000,3.5252 2.8578,6.3830 6.3830 6.3830c 3.5252,0.0000 6.3830,-2.8578 6.3830 -6.3830Z"/></g></svg>
diagrams/src_Diagrams_Combinators_strutEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="119.99999999999999" stroke-opacity="1" viewBox="0 0 300 120" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.758946638440411" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,60.0 c 0.0,-30.12462271804328 -24.42083182741126,-54.54545454545455 -54.54545454545453 -54.54545454545455c -30.12462271804328,-1.844601139358667e-15 -54.54545454545455,24.42083182741126 -54.54545454545455 54.545454545454525c -3.689202278717334e-15,30.12462271804328 24.420831827411256,54.54545454545455 54.545454545454525 54.54545454545455c 30.12462271804328,5.533803418076001e-15 54.54545454545455,-24.420831827411252 54.545454545454554 -54.545454545454525Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.758946638440411" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 122.72727272727273,60.0 c 0.0,-30.12462271804328 -24.42083182741126,-54.54545454545455 -54.54545454545453 -54.54545454545455c -30.12462271804328,-1.844601139358667e-15 -54.54545454545455,24.42083182741126 -54.54545454545455 54.545454545454525c -3.689202278717334e-15,30.12462271804328 24.420831827411256,54.54545454545455 54.545454545454525 54.54545454545455c 30.12462271804328,5.533803418076001e-15 54.54545454545455,-24.420831827411252 54.545454545454554 -54.545454545454525Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="120.0000" stroke-opacity="1" viewBox="0 0 300 120" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.758946638440411" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,60.0000 c 0.0000,-30.1246 -24.4208,-54.5455 -54.5455 -54.5455c -30.1246,-0.0000 -54.5455,24.4208 -54.5455 54.5455c -0.0000,30.1246 24.4208,54.5455 54.5455 54.5455c 30.1246,0.0000 54.5455,-24.4208 54.5455 -54.5455Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.758946638440411" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 122.7273,60.0000 c 0.0000,-30.1246 -24.4208,-54.5455 -54.5455 -54.5455c -30.1246,-0.0000 -54.5455,24.4208 -54.5455 54.5455c -0.0000,30.1246 24.4208,54.5455 54.5455 54.5455c 30.1246,0.0000 54.5455,-24.4208 54.5455 -54.5455Z"/></g></svg>
diagrams/src_Diagrams_Combinators_withEnvelopeEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="166.66666666666666" stroke-opacity="1" viewBox="0 0 300 167" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.8944271909999159" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 261.11111111111114,138.8888888888889 l -1.2335811384723963e-14,-111.11111111111113 h -111.11111111111113 l -1.2335811384723963e-14,111.11111111111113 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="0.8944271909999159" fill="rgb(0,0,0)" stroke-dashoffset="0.0" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-dasharray="5.555555555555557,5.555555555555557"><path d="M 250.0,83.33333333333334 c 0.0,-24.5459888813686 -19.898455563075846,-44.44444444444446 -44.44444444444444 -44.44444444444446c -24.5459888813686,-1.503008335773729e-15 -44.44444444444446,19.898455563075842 -44.44444444444446 44.44444444444444c -3.006016671547458e-15,24.5459888813686 19.898455563075842,44.44444444444446 44.444444444444436 44.44444444444446c 24.5459888813686,4.509025007321188e-15 44.44444444444446,-19.89845556307584 44.444444444444464 -44.44444444444444Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.8944271909999159" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 161.11111111111111,83.33333333333334 c 0.0,-30.68248610171075 -24.873069453844806,-55.555555555555564 -55.55555555555555 -55.555555555555564c -30.68248610171075,-1.878760419717161e-15 -55.555555555555564,24.873069453844803 -55.555555555555564 55.55555555555554c -3.757520839434322e-15,30.68248610171075 24.8730694538448,55.555555555555564 55.55555555555554 55.555555555555564c 30.68248610171075,5.636281259151484e-15 55.555555555555564,-24.873069453844796 55.55555555555557 -55.55555555555554Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="166.6667" stroke-opacity="1" viewBox="0 0 300 167" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.8944271909999159" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 261.1111,138.8889 l -0.0000,-111.1111 h -111.1111 l -0.0000,111.1111 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="0.8944271909999159" fill="rgb(0,0,0)" stroke-dashoffset="0.0" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-dasharray="5.555555555555557,5.555555555555557"><path d="M 250.0000,83.3333 c 0.0000,-24.5460 -19.8985,-44.4444 -44.4444 -44.4444c -24.5460,-0.0000 -44.4444,19.8985 -44.4444 44.4444c -0.0000,24.5460 19.8985,44.4444 44.4444 44.4444c 24.5460,0.0000 44.4444,-19.8985 44.4444 -44.4444Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.8944271909999159" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 161.1111,83.3333 c 0.0000,-30.6825 -24.8731,-55.5556 -55.5556 -55.5556c -30.6825,-0.0000 -55.5556,24.8731 -55.5556 55.5556c -0.0000,30.6825 24.8731,55.5556 55.5556 55.5556c 30.6825,0.0000 55.5556,-24.8731 55.5556 -55.5556Z"/></g></svg>
+ diagrams/src_Diagrams_CubicSpline_Boehm_bsplineEx.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" height="184.6154" stroke-opacity="1" viewBox="0 0 300 185" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.9413574486632834" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 135.5769,106.7308 c 0.0000,-0.0000 0.0000,-0.0000 9.6154 -14.4231c 9.6154,-14.4231 28.8462,-43.2692 52.8846 -33.6538c 24.0385,9.6154 52.8846,57.6923 24.0385 67.3077c -28.8462,9.6154 -115.3846,-19.2308 -139.4231 -43.2692c -24.0385,-24.0385 14.4231,-43.2692 33.6538 -52.8846c 19.2308,-9.6154 19.2308,-9.6154 19.2308 -9.6154"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 141.3462,20.1923 c 0.0000,-3.1863 -2.5830,-5.7692 -5.7692 -5.7692c -3.1863,-0.0000 -5.7692,2.5830 -5.7692 5.7692c -0.0000,3.1863 2.5830,5.7692 5.7692 5.7692c 3.1863,0.0000 5.7692,-2.5830 5.7692 -5.7692Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 25.9615,77.8846 c 0.0000,-3.1863 -2.5830,-5.7692 -5.7692 -5.7692c -3.1863,-0.0000 -5.7692,2.5830 -5.7692 5.7692c -0.0000,3.1863 2.5830,5.7692 5.7692 5.7692c 3.1863,0.0000 5.7692,-2.5830 5.7692 -5.7692Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 285.5769,164.4231 c 0.0000,-3.1863 -2.5830,-5.7692 -5.7692 -5.7692c -3.1863,-0.0000 -5.7692,2.5830 -5.7692 5.7692c -0.0000,3.1863 2.5830,5.7692 5.7692 5.7692c 3.1863,0.0000 5.7692,-2.5830 5.7692 -5.7692Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 199.0385,20.1923 c 0.0000,-3.1863 -2.5830,-5.7692 -5.7692 -5.7692c -3.1863,-0.0000 -5.7692,2.5830 -5.7692 5.7692c -0.0000,3.1863 2.5830,5.7692 5.7692 5.7692c 3.1863,0.0000 5.7692,-2.5830 5.7692 -5.7692Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 141.3462,106.7308 c 0.0000,-3.1863 -2.5830,-5.7692 -5.7692 -5.7692c -3.1863,-0.0000 -5.7692,2.5830 -5.7692 5.7692c -0.0000,3.1863 2.5830,5.7692 5.7692 5.7692c 3.1863,0.0000 5.7692,-2.5830 5.7692 -5.7692Z"/></g></svg>
diagrams/src_Diagrams_CubicSpline_cubicSplineEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="150.98643825758782" stroke-opacity="1" viewBox="0 0 600 151" font-size="1" width="600.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2039392872038202" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 434.1254082642812,88.50749970338121 c -6.894535367777746,-6.894535367777746 6.894535367777746,-85.03260286925885 50.559926030370136 -75.83988904555518c 43.66539066259239,9.192713823703665 117.20710125222166,105.7162089725921 75.8398890455552 126.39981507592529c -41.36721220666647,20.68360610333324 -197.64334720962873,-34.472676838888724 -227.51966713666556 -75.8398890455552c -29.876319927036917,-41.36721220666648 66.64717522185153,-68.94535367777745 101.1198520607403 -50.55992603037012c 34.47267683888874,18.385427647407315 6.894535367777746,82.73442441333296 -7.105427357601002e-14 75.83988904555521Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 439.1814008673182,12.667610657826017 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 338.0615488065779,63.227536688196146 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 565.5812159432436,139.06742573375135 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.74132689768834,12.667610657826017 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 439.1814008673182,88.50749970338121 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2039392872038202" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 139.8913954924196,88.50749970338121 c 5.417134931825375,-48.3027864754429 10.83426986365075,-96.6055729508858 50.559926030370136 -75.8398890455552c 39.72565616671939,20.765683905330597 113.75983356833281,110.59983819143467 75.83988904555518 126.39981507592535c -37.9199445227776,15.799976884490668 -187.79401096994619,-42.43422363263207 -227.51966713666562 -75.83988904555518c -39.72565616671941,-33.40566541292313 30.69709794701043,-41.98279572164664 101.11985206074027 -50.559926030370136"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 144.94738809545663,12.667610657826017 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 43.827536034716346,63.227536688196146 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 271.3472031713819,139.06742573375135 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 195.50731412582675,12.667610657826017 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 144.94738809545663,88.50749970338121 c 0.0,-2.792347609914639 -2.263644993122374,-5.055992603037014 -5.055992603037012 -5.055992603037014c -2.792347609914639,-1.7098197812943624e-16 -5.055992603037014,2.2636449931223734 -5.055992603037014 5.055992603037012c -3.419639562588725e-16,2.792347609914639 2.2636449931223734,5.055992603037014 5.055992603037012 5.055992603037014c 2.792347609914639,5.129459343883088e-16 5.055992603037014,-2.263644993122373 5.055992603037014 -5.055992603037012Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="150.9864" stroke-opacity="1" viewBox="0 0 600 151" font-size="1" width="600.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2039392872038202" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 434.1254,88.5075 c -6.8945,-6.8945 6.8945,-85.0326 50.5599 -75.8399c 43.6654,9.1927 117.2071,105.7162 75.8399 126.3998c -41.3672,20.6836 -197.6433,-34.4727 -227.5197 -75.8399c -29.8763,-41.3672 66.6472,-68.9454 101.1199 -50.5599c 34.4727,18.3854 6.8945,82.7344 -0.0000 75.8399Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 439.1814,12.6676 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 338.0615,63.2275 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 565.5812,139.0674 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.7413,12.6676 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 439.1814,88.5075 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2039392872038202" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 139.8914,88.5075 c 5.4171,-48.3028 10.8343,-96.6056 50.5599 -75.8399c 39.7257,20.7657 113.7598,110.5998 75.8399 126.3998c -37.9199,15.8000 -187.7940,-42.4342 -227.5197 -75.8399c -39.7257,-33.4057 30.6971,-41.9828 101.1199 -50.5599"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 144.9474,12.6676 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 43.8275,63.2275 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 271.3472,139.0674 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 195.5073,12.6676 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 144.9474,88.5075 c 0.0000,-2.7923 -2.2636,-5.0560 -5.0560 -5.0560c -2.7923,-0.0000 -5.0560,2.2636 -5.0560 5.0560c -0.0000,2.7923 2.2636,5.0560 5.0560 5.0560c 2.7923,0.0000 5.0560,-2.2636 5.0560 -5.0560Z"/></g></svg>
diagrams/src_Diagrams_TrailLike_explodeTrailEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="285.31695488854604" stroke-opacity="1" viewBox="0 0 300 285" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 65.72263789774162,272.3480023936121 h 168.55472420451676 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363654,112.042933586574 l 52.08627426137796,160.3050688070381 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 150.00000000000003,12.968952494933887 l -136.36363636363635,99.07398109164009 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,112.04293358657401 l -136.36363636363635,-99.0739810916401 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,165,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 234.2773621022584,272.3480023936121 l 52.08627426137797,-160.3050688070381 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="285.3170" stroke-opacity="1" viewBox="0 0 300 285" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 65.7226,272.3480 l 168.5547,-0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,112.0429 l 52.0863,160.3051 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 150.0000,12.9690 l -136.3636,99.0740 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,112.0429 l -136.3636,-99.0740 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,165,0)" stroke-width="1.17026551836112" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 234.2774,272.3480 l 52.0863,-160.3051 "/></g></svg>
diagrams/src_Diagrams_TrailLike_fromOffsetsEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="86.60254037844385" stroke-opacity="1" viewBox="0 0 300 87" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.644741959094125" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363626,82.66606127033276 h 90.9090909090909 l 45.45454545454546,-78.72958216222169 l 45.45454545454546,78.72958216222169 h 90.9090909090909 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="86.6025" stroke-opacity="1" viewBox="0 0 300 87" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.644741959094125" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,82.6661 h 90.9091 l 45.4545,-78.7296 l 45.4545,78.7296 h 90.9091 "/></g></svg>
diagrams/src_Diagrams_TrailLike_fromSegmentsEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="200.00000000000003" stroke-opacity="1" viewBox="0 0 247 200" font-size="1" width="247.48737341529161" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8899211172508118" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 11.249426064331445,190.90909090909093 l 128.564869306645,-128.564869306645 c 128.564869306645,-128.564869306645 128.564869306645,-0.0 0.0 128.564869306645h -128.564869306645 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="200.0000" stroke-opacity="1" viewBox="0 0 247 200" font-size="1" width="247.4874" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8899211172508118" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 11.2494,190.9091 l 128.5649,-128.5649 c 128.5649,-128.5649 128.5649,-0.0000 0.0000 128.5649h -128.5649 "/></g></svg>
diagrams/src_Diagrams_TrailLike_fromVerticesEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="305.0220318351291" stroke-opacity="1" viewBox="0 0 300 305" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2100023771913093" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 198.02231959365207,226.83571375859063 l 52.57961880085914,-15.539610741748671 l 35.76169796912516,-48.19767576631638 l -52.84137502819748,-45.52029976131281 l 1.4689477105917226,-54.80819289004406 l -34.787741187672516,-48.90529678848097 l -59.62126060155822,36.188587835275676 l -51.67175918801713,-18.333715326258865 l -57.26170441494141,17.972540121134085 l 15.99340952431951,67.88607704837412 l -33.40385114728599,43.47733367835123 l -0.601938394511219,60.012937447513046 l 69.50573128358401,5.76731514351359 l 31.027043823852175,45.20418527970046 l 56.88968602799995,19.117494986150366 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="305.0220" stroke-opacity="1" viewBox="0 0 300 305" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2100023771913093" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 198.0223,226.8357 l 52.5796,-15.5396 l 35.7617,-48.1977 l -52.8414,-45.5203 l 1.4689,-54.8082 l -34.7877,-48.9053 l -59.6213,36.1886 l -51.6718,-18.3337 l -57.2617,17.9725 l 15.9934,67.8861 l -33.4039,43.4773 l -0.6019,60.0129 l 69.5057,5.7673 l 31.0270,45.2042 l 56.8897,19.1175 Z"/></g></svg>
diagrams/src_Diagrams_TrailLike_twiddleEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="259.80762113533166" stroke-opacity="1" viewBox="0 0 300 260" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818176,247.99818381099834 h 0.0 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818176,247.99818381099834 l -68.18181818181809,-118.09437324333258 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818176,247.99818381099834 l 1.3625464393126918e-13,-236.18874648666508 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818176,247.99818381099834 l 136.36363636363646,-236.18874648666497 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818176,247.99818381099834 l 204.5454545454546,-118.09437324333244 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818176,247.99818381099834 l 136.3636363636364,6.055761952500853e-14 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363683,129.90381056766577 l 68.18181818181809,118.09437324333258 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363683,129.90381056766577 h 0.0 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363683,129.90381056766577 l 68.18181818181822,-118.09437324333248 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363683,129.90381056766577 l 204.5454545454546,-118.09437324333241 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363683,129.90381056766577 l 272.7272727272727,1.3625464393126918e-13 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363683,129.90381056766577 l 204.54545454545448,118.09437324333264 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818188,11.809437324333274 l -1.3625464393126918e-13,236.18874648666508 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818188,11.809437324333274 l -68.18181818181822,118.09437324333248 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818188,11.809437324333274 h 0.0 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818188,11.809437324333274 l 136.36363636363635,7.569702440626067e-14 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818188,11.809437324333274 l 204.54545454545445,118.09437324333263 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.81818181818188,11.809437324333274 l 136.36363636363626,236.18874648666514 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181824,11.80943732433336 l -136.36363636363646,236.18874648666497 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181824,11.80943732433336 l -204.5454545454546,118.09437324333241 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181824,11.80943732433336 l -136.36363636363635,-7.569702440626067e-14 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181824,11.80943732433336 h 0.0 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181824,11.80943732433336 l 68.18181818181812,118.09437324333256 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181824,11.80943732433336 l -7.569702440626067e-14,236.18874648666505 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,129.90381056766591 l -204.5454545454546,118.09437324333244 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,129.90381056766591 l -272.7272727272727,-1.3625464393126918e-13 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,129.90381056766591 l -204.54545454545445,-118.09437324333263 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,129.90381056766591 l -68.18181818181812,-118.09437324333256 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,129.90381056766591 h 0.0 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,129.90381056766591 l -68.18181818181819,118.0943732433325 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181816,247.9981838109984 l -136.3636363636364,-6.055761952500853e-14 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181816,247.9981838109984 l -204.54545454545448,-118.09437324333264 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181816,247.9981838109984 l -136.36363636363626,-236.18874648666514 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181816,247.9981838109984 l 7.569702440626067e-14,-236.18874648666505 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181816,247.9981838109984 l 68.18181818181819,-118.0943732433325 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.18181818181816,247.9981838109984 h 0.0 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="259.8076" stroke-opacity="1" viewBox="0 0 300 260" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,247.9982 h 0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,247.9982 l -68.1818,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,247.9982 l 0.0000,-236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,247.9982 l 136.3636,-236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,247.9982 l 204.5455,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,247.9982 l 136.3636,0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,129.9038 l 68.1818,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,129.9038 h 0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,129.9038 l 68.1818,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,129.9038 l 204.5455,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,129.9038 l 272.7273,0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,129.9038 l 204.5455,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,11.8094 l -0.0000,236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,11.8094 l -68.1818,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,11.8094 h 0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,11.8094 l 136.3636,0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,11.8094 l 204.5455,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 81.8182,11.8094 l 136.3636,236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,11.8094 l -136.3636,236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,11.8094 l -204.5455,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,11.8094 l -136.3636,-0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,11.8094 h 0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,11.8094 l 68.1818,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,11.8094 l -0.0000,236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,129.9038 l -204.5455,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,129.9038 l -272.7273,-0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,129.9038 l -204.5455,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,129.9038 l -68.1818,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,129.9038 h 0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,129.9038 l -68.1818,118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,247.9982 l -136.3636,-0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,247.9982 l -204.5455,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,247.9982 l -136.3636,-236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,247.9982 l 0.0000,-236.1887 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,247.9982 l 68.1818,-118.0944 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.1167258309225196" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 218.1818,247.9982 h 0.0000 "/></g></svg>
diagrams/src_Diagrams_Trail_closeLineEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="68.18181818181819" stroke-opacity="1" viewBox="0 0 500 68" font-size="1" width="500.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 394.6280991735537,3.099173553719009 l 82.64462809917356,41.32231404958678 l -123.96694214876034,20.66115702479339 l -82.64462809917356,-41.32231404958678 l 41.32231404958678,-20.66115702479339 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 146.69421487603304,3.099173553719009 l 82.64462809917356,41.32231404958678 l -123.96694214876034,20.66115702479339 l -82.64462809917356,-41.32231404958678 l 41.32231404958678,-20.66115702479339 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="68.1818" stroke-opacity="1" viewBox="0 0 500 68" font-size="1" width="500.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 394.6281,3.0992 l 82.6446,41.3223 l -123.9669,20.6612 l -82.6446,-41.3223 l 41.3223,-20.6612 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 146.6942,3.0992 l 82.6446,41.3223 l -123.9669,20.6612 l -82.6446,-41.3223 l 41.3223,-20.6612 "/></g></svg>
diagrams/src_Diagrams_Trail_glueLineEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="68.18181818181819" stroke-opacity="1" viewBox="0 0 500 68" font-size="1" width="500.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 384.297520661157,0.0 l 82.64462809917354,41.32231404958677 l -123.96694214876032,20.661157024793386 l -82.64462809917354,-41.32231404958677 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 136.36363636363637,0.0 l 82.64462809917354,41.32231404958677 l -123.96694214876032,20.661157024793386 l -82.64462809917354,-41.32231404958677 l 41.32231404958677,-20.661157024793386 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="68.1818" stroke-opacity="1" viewBox="0 0 500 68" font-size="1" width="500.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 384.2975,0.0000 l 82.6446,41.3223 l -123.9669,20.6612 l -82.6446,-41.3223 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7385489458759964" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 136.3636,0.0000 l 82.6446,41.3223 l -123.9669,20.6612 l -82.6446,-41.3223 l 41.3223,-20.6612 "/></g></svg>
diagrams/src_Diagrams_Trail_lineFromOffsetsEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="50.0" stroke-opacity="1" viewBox="0 0 300 50" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 0.0,50.0 l 100.0,-50.0 l 100.0,50.0 l 100.0,-25.0 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="50.0000" stroke-opacity="1" viewBox="0 0 300 50" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 0.0000,50.0000 l 100.0000,-50.0000 l 100.0000,50.0000 l 100.0000,-25.0000 "/></g></svg>
diagrams/src_Diagrams_Trail_lineFromVerticesEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="120.00000000000001" stroke-opacity="1" viewBox="0 0 300 120" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7589466384404111" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363626,114.54545454545456 v -54.54545454545455 l 54.54545454545455,-54.54545454545455 l 218.1818181818182,54.54545454545455 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="120.0000" stroke-opacity="1" viewBox="0 0 300 120" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.7589466384404111" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,114.5455 v -54.5455 l 54.5455,-54.5455 l 218.1818,54.5455 "/></g></svg>
diagrams/src_Diagrams_Trail_trailOffsetEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="90.00000000000001" stroke-opacity="1" viewBox="0 0 300 90" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="0.6572670690061994" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 177.27272727272728,4.090909090909101 h -109.0909090909091 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6572670690061994" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 177.27272727272728,4.090909090909101 l 109.0909090909091,54.54545454545455 l -163.63636363636363,27.272727272727273 l -109.0909090909091,-54.54545454545455 l 54.54545454545455,-27.272727272727273 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="90.0000" stroke-opacity="1" viewBox="0 0 300 90" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="0.6572670690061994" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 177.2727,4.0909 h -109.0909 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6572670690061994" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 177.2727,4.0909 l 109.0909,54.5455 l -163.6364,27.2727 l -109.0909,-54.5455 l 54.5455,-27.2727 "/></g></svg>
diagrams/src_Diagrams_TwoD_Arc_annularWedgeEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="178.54130895779463" stroke-opacity="1" viewBox="0 0 400 179" font-size="1" width="400.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.6026155171689,49.10118238914238 l 17.215566301012974,-17.21556630101297 c -31.692982425834614,-31.692982425834618 -83.0774595809185,-31.692982425834632 -114.77044200675311 -1.8020020547460663e-14c -31.692982425834618,31.692982425834614 -31.692982425834632,83.0774595809185 -2.7030030821190994e-14 114.77044200675311c 31.69298242583461,31.69298242583462 83.07745958091849,31.692982425834636 114.77044200675309 3.6040041094921325e-14l -17.21556630101297,-17.215566301012974 c -22.18508769808423,22.185087698084228 -58.15422170664295,22.18508769808423 -80.33930940472717 -0.0c -22.185087698084228,-22.18508769808423 -22.18508769808423,-58.15422170664295 -6.3070071916112315e-15 -80.33930940472717c 22.185087698084228,-22.18508769808423 58.15422170664295,-22.185087698084235 80.33930940472723 -1.4210854715202004e-14Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 196.76242196124198,65.05772234978113 l 5.938102119434486,-56.49726773069128 c -22.874028519212235,-2.4041572749570754 -45.69391955328102,5.010474787900576 -62.786269164729504 20.400495504601412l 38.01228629587617,42.2169208774703 c 5.127704883434546,-4.617006215010249 11.97367219365518,-6.841395833867544 18.83588074941884 -6.120148651380433Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 58.75929709319445,89.27083709150597 h 40.57747891137626 c 0.0,-44.820645578667474 -36.33431224408504,-81.15495782275252 -81.15495782275251 -81.15495782275252l -2.4846539833143083e-15,40.57747891137626 c 22.410322789333737,1.372236503590827e-15 40.57747891137626,18.167156122042524 40.57747891137625 40.57747891137626Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="178.5413" stroke-opacity="1" viewBox="0 0 400 179" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.6026,49.1012 l 17.2156,-17.2156 c -31.6930,-31.6930 -83.0775,-31.6930 -114.7704 -0.0000c -31.6930,31.6930 -31.6930,83.0775 -0.0000 114.7704c 31.6930,31.6930 83.0775,31.6930 114.7704 0.0000l -17.2156,-17.2156 c -22.1851,22.1851 -58.1542,22.1851 -80.3393 -0.0000c -22.1851,-22.1851 -22.1851,-58.1542 0.0000 -80.3393c 22.1851,-22.1851 58.1542,-22.1851 80.3393 -0.0000Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 196.7624,65.0577 l 5.9381,-56.4973 c -22.8740,-2.4042 -45.6939,5.0105 -62.7863 20.4005l 38.0123,42.2169 c 5.1277,-4.6170 11.9737,-6.8414 18.8359 -6.1201Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 58.7593,89.2708 h 40.5775 c 0.0000,-44.8206 -36.3343,-81.1550 -81.1550 -81.1550l -0.0000,40.5775 c 22.4103,0.0000 40.5775,18.1672 40.5775 40.5775Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arc_arc'Ex.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="300.00000000000006" stroke-opacity="1" viewBox="0 0 300 300" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636363636364,286.3636363636364 c 0.0,-150.6231135902164 -122.10415913705633,-272.72727272727275 -272.7272727272727 -272.72727272727275"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 195.45454545454547,286.3636363636364 c 0.0,-100.41540906014427 -81.40277275803754,-181.81818181818184 -181.8181818181818 -181.81818181818184"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 104.54545454545455,286.3636363636364 c 0.0,-50.207704530072135 -40.70138637901877,-90.90909090909092 -90.9090909090909 -90.90909090909092"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="300.0000" stroke-opacity="1" viewBox="0 0 300 300" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 286.3636,286.3636 c 0.0000,-150.6231 -122.1042,-272.7273 -272.7273 -272.7273"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 195.4545,286.3636 c 0.0000,-100.4154 -81.4028,-181.8182 -181.8182 -181.8182"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.2" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 104.5455,286.3636 c 0.0000,-50.2077 -40.7014,-90.9091 -90.9091 -90.9091"/></g></svg>
diagrams/src_Diagrams_TwoD_Arc_arcBetweenEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="150.0000000000002" stroke-opacity="1" viewBox="0 0 300 150" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363699,143.1818181818182 c 71.73768743636519,-76.52462512726964 168.46496016363787,-124.88826149090595 272.72727272727263 -136.36363636363623"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363782,143.18181818181836 c 82.05066190000068,-61.35322165454398 174.41429826363702,-107.53503983636207 272.7272727272726 -136.3636363636363"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363683,143.1818181818183 l 272.7272727272726,-136.36363636363632 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363656,143.1818181818182 c 98.31297446363557,-28.82859652727422 190.67661082727184,-75.01041470909232 272.7272727272726 -136.36363636363635"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363656,143.1818181818183 c 104.26231256363477,-11.475374872730326 200.98958529090743,-59.839011236366616 272.72727272727263 -136.36363636363632"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="150.0000" stroke-opacity="1" viewBox="0 0 300 150" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,143.1818 c 71.7377,-76.5246 168.4650,-124.8883 272.7273 -136.3636"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,143.1818 c 82.0507,-61.3532 174.4143,-107.5350 272.7273 -136.3636"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,143.1818 l 272.7273,-136.3636 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,143.1818 c 98.3130,-28.8286 190.6766,-75.0104 272.7273 -136.3636"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.8485281374238577" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,143.1818 c 104.2623,-11.4754 200.9896,-59.8390 272.7273 -136.3636"/></g></svg>
diagrams/src_Diagrams_TwoD_Arc_wedgeEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="178.54130895779463" stroke-opacity="1" viewBox="0 0 400 179" font-size="1" width="400.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 324.4329608148053,89.27083709150597 l 57.385221003376564,-57.38522100337656 c -31.692982425834614,-31.692982425834618 -83.0774595809185,-31.692982425834632 -114.77044200675311 -1.8020020547460663e-14c -31.692982425834618,31.692982425834614 -31.692982425834632,83.0774595809185 -2.7030030821190994e-14 114.77044200675311c 31.69298242583461,31.69298242583462 83.07745958091849,31.692982425834636 114.77044200675309 3.6040041094921325e-14Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 194.21752105291293,89.27083709150597 l 8.483003027763553,-80.71038247241613 c -22.874028519212235,-2.4041572749570754 -45.69391955328102,5.010474787900576 -62.786269164729504 20.400495504601412Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.181818181818187,89.27083709150597 h 81.15495782275252 c 0.0,-44.820645578667474 -36.33431224408504,-81.15495782275252 -81.15495782275251 -81.15495782275252Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="178.5413" stroke-opacity="1" viewBox="0 0 400 179" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 324.4330,89.2708 l 57.3852,-57.3852 c -31.6930,-31.6930 -83.0775,-31.6930 -114.7704 -0.0000c -31.6930,31.6930 -31.6930,83.0775 -0.0000 114.7704c 31.6930,31.6930 83.0775,31.6930 114.7704 0.0000Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 194.2175,89.2708 l 8.4830,-80.7104 c -22.8740,-2.4042 -45.6939,5.0105 -62.7863 20.4005Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="1.0689548060277785" fill="rgb(0,0,255)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.1818,89.2708 h 81.1550 c 0.0000,-44.8206 -36.3343,-81.1550 -81.1550 -81.1550Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arrow_example1.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="142.85714285714286" stroke-opacity="1" viewBox="0 0 500 143" font-size="1" width="499.99999999999994" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="5.345224838248488" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 461.03896103896096,136.36363636363637 l -1.4418480839287746e-14,-129.87012987012986 h -129.87012987012986 l -1.4418480839287746e-14,129.87012987012986 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(169,169,169)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 398.70129870129864,71.42857142857143 c 0.0,-1.4345058437163465 -1.1628967536862505,-2.5974025974025974 -2.597402597402597 -2.5974025974025974c -1.4345058437163465,-8.783814949326985e-17 -2.5974025974025974,1.1628967536862502 -2.5974025974025974 2.5974025974025965c -1.756762989865397e-16,1.4345058437163465 1.1628967536862502,2.5974025974025974 2.597402597402596 2.5974025974025974c 1.4345058437163465,2.6351444847980957e-16 2.5974025974025974,-1.16289675368625 2.5974025974025987 -2.5974025974025965Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="5.345224838248488" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 136.36363636363632,136.36363636363637 l -1.4418480839287746e-14,-129.87012987012986 h -129.87012987012986 l -1.4418480839287746e-14,129.87012987012986 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(169,169,169)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 74.02597402597398,71.42857142857143 c 0.0,-1.4345058437163465 -1.1628967536862505,-2.5974025974025974 -2.597402597402597 -2.5974025974025974c -1.4345058437163465,-8.783814949326985e-17 -2.5974025974025974,1.1628967536862502 -2.5974025974025974 2.5974025974025965c -1.756762989865397e-16,1.4345058437163465 1.1628967536862502,2.5974025974025974 2.597402597402596 2.5974025974025974c 1.4345058437163465,2.6351444847980957e-16 2.5974025974025974,-1.16289675368625 2.5974025974025987 -2.5974025974025965Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.0690449676496976" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.98197669755432,73.83089383093066 c 61.406842947188636,7.951049003214775 122.81368589437727,15.90209800642955 138.71310687684397 10.954204913391045c 15.89942098246672,-4.947893093038505 -13.70857999978851,-22.794728282330297 2.1908409826782096 -27.742621375368802c 15.89942098246672,-4.947893093038505 77.30626392965536,3.003155910176269 138.71310687684394 10.954204913391042"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.98197669755432,73.83089383093066 l -7.466349307940467,-10.206964204833406 l -19.326463821857203,-2.5024191691242015 l 8.239407860814753,10.307060971598373 l -10.592823993079055,7.868635689924335 l 19.326463821857203,2.5024191691242015 l 9.819765440204769,-7.9687324566893025 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.98197669755432,73.83089383093066 l 6.863778292454953e-2,-0.5300972933995118 l -0.5041524851580295,-6.527841071444503e-2 l 0.43551470223348,0.5953757041139568 l -0.572790268082579,0.4648188826850668 l 0.5041524851580295,6.527841071444503e-2 l 6.863778292454953e-2,-0.5300972933995118 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 396.10389610389603,71.42857142857143 l -30.29839636677383,-14.372284581539233 l 4.072220336388497,10.976480453262068 l -6.733558451422118,9.577332206320406 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 369.8777200735107,68.03276730029427 l -0.27868863959026763,-3.608501795031509e-2 l 6.863778292454958e-2,-0.5300972933995118 l 0.2100508566657181,0.566182311349827 l -0.27868863959026763,-3.608501795031509e-2 l -6.863778292454958e-2,0.5300972933995118 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="142.8571" stroke-opacity="1" viewBox="0 0 500 143" font-size="1" width="500.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="5.345224838248488" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 461.0390,136.3636 l -0.0000,-129.8701 h -129.8701 l -0.0000,129.8701 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(169,169,169)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 398.7013,71.4286 c 0.0000,-1.4345 -1.1629,-2.5974 -2.5974 -2.5974c -1.4345,-0.0000 -2.5974,1.1629 -2.5974 2.5974c -0.0000,1.4345 1.1629,2.5974 2.5974 2.5974c 1.4345,0.0000 2.5974,-1.1629 2.5974 -2.5974Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="5.345224838248488" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 136.3636,136.3636 l -0.0000,-129.8701 h -129.8701 l -0.0000,129.8701 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(169,169,169)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 74.0260,71.4286 c 0.0000,-1.4345 -1.1629,-2.5974 -2.5974 -2.5974c -1.4345,-0.0000 -2.5974,1.1629 -2.5974 2.5974c -0.0000,1.4345 1.1629,2.5974 2.5974 2.5974c 1.4345,0.0000 2.5974,-1.1629 2.5974 -2.5974Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.0690449676496976" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.9820,73.8309 c 61.4068,7.9510 122.8137,15.9021 138.7131 10.9542c 15.8994,-4.9479 -13.7086,-22.7947 2.1908 -27.7426c 15.8994,-4.9479 77.3063,3.0032 138.7131 10.9542"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.9820,73.8309 l -7.4663,-10.2070 l -19.3265,-2.5024 l 8.2394,10.3071 l -10.5928,7.8686 l 19.3265,2.5024 l 9.8198,-7.9687 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.9820,73.8309 l 0.0686,-0.5301 l -0.5042,-0.0653 l 0.4355,0.5954 l -0.5728,0.4648 l 0.5042,0.0653 l 0.0686,-0.5301 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 396.1039,71.4286 l -30.2984,-14.3723 l 4.0722,10.9765 l -6.7336,9.5773 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 369.8777,68.0328 l -0.2787,-0.0361 l 0.0686,-0.5301 l 0.2101,0.5662 l -0.2787,-0.0361 l -0.0686,0.5301 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arrow_example2.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="191.60937134592436" stroke-opacity="1" viewBox="0 0 500 192" font-size="1" width="500.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.238093280317519" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8160519668354,95.80468567296218 l 2.8920113555485896e-15,47.23012965962301 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8160519668354,153.8681315353635 l 4.117578376862937,-12.672603183499865 l -4.117578376862938,2.164739059305849 l -4.117578376862938,-2.164739059305848 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8160519668354,143.36026741116947 l -1.9928192315704405e-17,-0.3254520785842773 l 0.6190466401587595,-3.790567431966741e-17 l -0.6190466401587595,0.3254520785842774 l -1.9928192315704405e-17,-0.3254520785842773 l -0.6190466401587595,3.790567431966741e-17 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="6.190466401587595" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 477.2727272727272,124.83640860416281 l -1.2892674897102844e-14,-58.063445862401316 l -41.05705630836196,-41.05705630836195 l -58.063445862401316,9.337314240960074e-15 l -41.05705630836195,41.05705630836196 l 5.781953584817304e-15,58.063445862401316 l 41.05705630836196,41.05705630836196 l 58.063445862401316,-2.2265929286745346e-15 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 409.98749920274713,95.80468567296218 c 0.0,-1.5483585563307023 -1.2551926132518025,-2.803551169582505 -2.803551169582504 -2.803551169582505c -1.5483585563307023,-9.480961749714055e-17 -2.803551169582505,1.2551926132518023 -2.803551169582505 2.803551169582504c -1.896192349942811e-16,1.5483585563307023 1.255192613251802,2.803551169582505 2.8035511695825037 2.803551169582505c 1.5483585563307023,2.844288524914217e-16 2.803551169582505,-1.255192613251802 2.8035511695825055 -2.803551169582504Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="6.190466401587595" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 162.904831206398,124.83640860416281 l -1.2892674897102844e-14,-58.063445862401316 l -41.05705630836196,-41.05705630836195 l -58.063445862401316,9.337314240960074e-15 l -41.05705630836195,41.05705630836196 l 5.781953584817304e-15,58.063445862401316 l 41.05705630836196,41.05705630836196 l 58.063445862401316,-2.2265929286745346e-15 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.61960313641791,95.80468567296218 c 0.0,-1.5483585563307023 -1.2551926132518025,-2.803551169582505 -2.803551169582504 -2.803551169582505c -1.5483585563307023,-9.480961749714055e-17 -2.803551169582505,1.2551926132518023 -2.803551169582505 2.803551169582504c -1.896192349942811e-16,1.5483585563307023 1.255192613251802,2.803551169582505 2.8035511695825037 2.803551169582505c 1.5483585563307023,2.844288524914217e-16 2.803551169582505,-1.255192613251802 2.8035511695825055 -2.803551169582504Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.238093280317519" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8160519668354,95.80468567296218 h 292.70126366077255 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 407.1839480331646,95.80468567296218 l -25.737705261008802,-8.362687375139057 l 4.396524934036492,8.362687375139057 l -4.396524934036492,8.362687375139057 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 385.84276770619226,95.80468567296218 h -0.3254520785842773 v -0.6190466401587595 l 0.3254520785842773,0.6190466401587595 h -0.3254520785842773 v 0.6190466401587595 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.238093280317519" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 162.90483120639803,124.8364086041629 l 152.52370518164733,-4.977296088827186e-14 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 337.09516879360194,124.83640860416284 l -25.737705261008806,-8.36268737513905 l 4.396524934036495,8.362687375139055 l -4.396524934036489,8.362687375139059 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 315.7539884666296,124.83640860416284 l -0.3254520785842773,1.062045638026577e-16 l -2.0201308492960426e-16,-0.6190466401587595 l 0.3254520785842775,0.6190466401587594 l -0.3254520785842773,1.062045638026577e-16 l 2.0201308492960426e-16,0.6190466401587595 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="191.6094" stroke-opacity="1" viewBox="0 0 500 192" font-size="1" width="500.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.238093280317519" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8161,95.8047 l 0.0000,47.2301 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8161,153.8681 l 4.1176,-12.6726 l -4.1176,2.1647 l -4.1176,-2.1647 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8161,143.3603 l -0.0000,-0.3255 l 0.6190,-0.0000 l -0.6190,0.3255 l -0.0000,-0.3255 l -0.6190,0.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="6.190466401587595" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 477.2727,124.8364 l -0.0000,-58.0634 l -41.0571,-41.0571 l -58.0634,0.0000 l -41.0571,41.0571 l 0.0000,58.0634 l 41.0571,41.0571 l 58.0634,-0.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 409.9875,95.8047 c 0.0000,-1.5484 -1.2552,-2.8036 -2.8036 -2.8036c -1.5484,-0.0000 -2.8036,1.2552 -2.8036 2.8036c -0.0000,1.5484 1.2552,2.8036 2.8036 2.8036c 1.5484,0.0000 2.8036,-1.2552 2.8036 -2.8036Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(169,169,169)" stroke-width="6.190466401587595" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 162.9048,124.8364 l -0.0000,-58.0634 l -41.0571,-41.0571 l -58.0634,0.0000 l -41.0571,41.0571 l 0.0000,58.0634 l 41.0571,41.0571 l 58.0634,-0.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.6196,95.8047 c 0.0000,-1.5484 -1.2552,-2.8036 -2.8036 -2.8036c -1.5484,-0.0000 -2.8036,1.2552 -2.8036 2.8036c -0.0000,1.5484 1.2552,2.8036 2.8036 2.8036c 1.5484,0.0000 2.8036,-1.2552 2.8036 -2.8036Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.238093280317519" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 92.8161,95.8047 h 292.7013 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 407.1839,95.8047 l -25.7377,-8.3627 l 4.3965,8.3627 l -4.3965,8.3627 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 385.8428,95.8047 h -0.3255 v -0.6190 l 0.3255,0.6190 h -0.3255 v 0.6190 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.238093280317519" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 162.9048,124.8364 l 152.5237,-0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 337.0952,124.8364 l -25.7377,-8.3627 l 4.3965,8.3627 l -4.3965,8.3627 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 315.7540,124.8364 l -0.3255,0.0000 l -0.0000,-0.6190 l 0.3255,0.6190 l -0.3255,0.0000 l 0.0000,0.6190 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_blockEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.545454545454554,31.818181818181817 h 45.454545454545446 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.545454545454554,49.212883289322264 l -5.0464682937507114e-15,-34.789402942280894 h -45.45454545454545 l -5.0464682937507114e-15,34.789402942280894 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,49.2129 l -0.0000,-34.7894 h -45.4545 l -0.0000,34.7894 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_dart'Ex.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545456,31.818181818181817 h 45.45454545454544 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909090909091,31.818181818181817 l 54.818696799240826,-17.811674311893128 l -9.364151344695374,17.811674311893128 l 9.364151344695374,17.811674311893128 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545456,31.818181818181817 h 0.0 h -0.0 h 0.0 h 0.0 h 0.0 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 l 54.8187,-17.8117 l -9.3642,17.8117 l 9.3642,17.8117 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 0.0000 h -0.0000 h 0.0000 h 0.0000 h 0.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_dartEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,31.818181818181817 h 45.45454545454544 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0,31.818181818181817 l -54.818696799240826,-17.811674311893128 l 9.364151344695374,17.811674311893128 l -9.364151344695374,17.811674311893128 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545453,31.818181818181817 h -0.0 h 0.0 h 0.0 h 0.0 h 0.0 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0000,31.8182 l -54.8187,-17.8117 l 9.3642,17.8117 l -9.3642,17.8117 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h -0.0000 h 0.0000 h 0.0000 h 0.0000 h 0.0000 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_halfDart'Ex.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 h 45.45454545454545 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,31.818181818181817 l 54.818696799240826,-17.811674311893128 l -9.364151344695374,17.811674311893128 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 h 0.0 h -0.0 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 l 54.8187,-17.8117 l -9.3642,17.8117 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 0.0000 h -0.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_halfDartEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,31.818181818181817 h 45.45454545454545 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0,31.818181818181817 l -54.818696799240826,-17.811674311893128 l 9.364151344695374,17.811674311893128 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 h -0.0 h 0.0 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0000,31.8182 l -54.8187,-17.8117 l 9.3642,17.8117 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h -0.0000 h 0.0000 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_quillEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 h 45.45454545454545 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 l -21.174886150566188,-22.264592889866414 h -47.34848484848485 l 23.068825544505582,22.264592889866414 l -23.068825544505582,22.264592889866414 h 47.34848484848485 l 21.174886150566188,-22.264592889866414 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 h 0.0 h 0.0 h 0.0 h 0.0 h 0.0 h 0.0 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 l -21.1749,-22.2646 h -47.3485 l 23.0688,22.2646 l -23.0688,22.2646 h 47.3485 l 21.1749,-22.2646 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 0.0000 h 0.0000 h 0.0000 h 0.0000 h 0.0000 h 0.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_spike'Ex.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 h 45.45454545454545 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909090909091,31.818181818181817 l 54.868490053933975,-22.727272727272727 c -12.55192613251803,12.551926132518032 -12.551926132518032,32.90261932202742 0.0 45.454545454545446l -54.868490053933975,-22.727272727272727 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 l 54.8685,-22.7273 c -12.5519,12.5519 -12.5519,32.9026 0.0000 45.4545l -54.8685,-22.7273 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_spikeEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,31.818181818181817 h 45.45454545454545 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0,31.818181818181817 l -54.868490053933975,-22.727272727272727 c 12.55192613251803,12.551926132518032 12.551926132518032,32.90261932202742 0.0 45.454545454545446l 54.868490053933975,-22.727272727272727 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,31.818181818181817 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0000,31.8182 l -54.8685,-22.7273 c 12.5519,12.5519 12.5519,32.9026 0.0000 45.4545l 54.8685,-22.7273 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_thorn'Ex.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545419347618,31.818181818181817 h 45.45454580652382 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090908738930736,31.818181818181817 c 30.3030303030303,0.0 51.73050852080446,-21.42747821777417 51.73050852080446 -21.42747821777417l -6.275963066259013,21.42747821777417 h -45.45454545454545 c 30.3030303030303,0.0 51.73050852080446,21.42747821777417 51.73050852080446 21.42747821777417l -6.275963066259013,-21.42747821777417 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545419347618,31.818181818181817 h 0.0 h -0.0 h 0.0 h 0.0 h 0.0 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 c 30.3030,0.0000 51.7305,-21.4275 51.7305 -21.4275l -6.2760,21.4275 h -45.4545 c 30.3030,0.0000 51.7305,21.4275 51.7305 21.4275l -6.2760,-21.4275 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 0.0000 h -0.0000 h 0.0000 h 0.0000 h 0.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_thornEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,31.818181818181817 h 45.45454620476741 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.00000075022194,31.818181818181817 c -30.3030303030303,0.0 -51.73050852080446,-21.42747821777417 -51.73050852080446 -21.42747821777417l 6.275963066259013,21.42747821777417 h 45.45454545454545 c -30.3030303030303,0.0 -51.73050852080446,21.42747821777417 -51.73050852080446 21.42747821777417l 6.275963066259013,-21.42747821777417 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.545455295676504,31.818181818181817 h -0.0 h 0.0 h 0.0 h 0.0 h 0.0 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0000,31.8182 c -30.3030,0.0000 -51.7305,-21.4275 -51.7305 -21.4275l 6.2760,21.4275 h 45.4545 c -30.3030,0.0000 -51.7305,21.4275 -51.7305 21.4275l 6.2760,-21.4275 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h -0.0000 h 0.0000 h 0.0000 h 0.0000 h 0.0000 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_tri'Ex.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545453,31.818181818181817 h 45.45454545454546 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909086,31.818181818181817 l 45.454545454545446,-26.243194054073903 v 52.48638810814781 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 l 45.4545,-26.2432 v 52.4864 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_tri25Ex.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="119.99999999999999" stroke-opacity="1" viewBox="0 0 120 120" font-size="1" width="120.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 105.0,104.99999999999999 l -9.992007221626407e-15,-89.99999999999999 h -89.99999999999999 l -9.992007221626407e-15,89.99999999999999 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 14.999999999999993,59.99999999999999 h -1.8189894035458565e-14 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.99999999999996,59.99999999999999 l -74.99999999999999,-24.368977217467975 v 48.73795443493595 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="120.0000" stroke-opacity="1" viewBox="0 0 120 120" font-size="1" width="120.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 105.0000,105.0000 l -0.0000,-90.0000 h -90.0000 l -0.0000,90.0000 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 15.0000,60.0000 h -0.0000 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 90.0000,60.0000 l -75.0000,-24.3690 v 48.7380 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Arrowheads_triEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="63.63636363636363" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.54545454545455,54.54545454545455 l -5.0464682937507114e-15,-45.45454545454545 h -45.45454545454545 l -5.0464682937507114e-15,45.45454545454545 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,31.818181818181817 h 45.45454545454546 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0,31.818181818181817 l -45.454545454545446,-26.243194054073903 v 52.48638810814781 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="63.6364" stroke-opacity="1" viewBox="0 0 100 64" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 54.5455,54.5455 l -0.0000,-45.4545 h -45.4545 l -0.0000,45.4545 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,31.8182 h 45.4545 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0000,31.8182 l -45.4545,-26.2432 v 52.4864 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"></g></svg>
diagrams/src_Diagrams_TwoD_Curvature_diagramA.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="200.0" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.18181818181816,175.13148009015777 c 218.1818181818182,-0.0 145.45454545454547,-181.81818181818184 363.6363636363637 -145.45454545454547"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="200.0000" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.1818,175.1315 c 218.1818,-0.0000 145.4545,-181.8182 363.6364 -145.4545"/></g></svg>
diagrams/src_Diagrams_TwoD_Curvature_diagramNeg.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="200.0" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 281.16363636363644,30.840570999248655 l 37.77763883175646,135.36987248046086 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 459.483626004958,166.2104434797095 c 0.0,-77.61939705749228 -62.92295375207282,-140.5423508095651 -140.54235080956508 -140.5423508095651c -77.61939705749228,-4.75281730791027e-15 -140.5423508095651,62.92295375207281 -140.5423508095651 140.54235080956505c -9.50563461582054e-15,77.61939705749228 62.9229537520728,140.5423508095651 140.54235080956505 140.5423508095651c 77.61939705749228,1.425845192373081e-14 140.5423508095651,-62.92295375207279 140.54235080956516 -140.54235080956505Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.18181818181816,175.13148009015777 c 218.1818181818182,-0.0 145.45454545454547,-181.81818181818184 363.6363636363637 -145.45454545454547"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="200.0000" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 281.1636,30.8406 l 37.7776,135.3699 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 459.4836,166.2104 c 0.0000,-77.6194 -62.9230,-140.5424 -140.5424 -140.5424c -77.6194,-0.0000 -140.5424,62.9230 -140.5424 140.5424c -0.0000,77.6194 62.9230,140.5424 140.5424 140.5424c 77.6194,0.0000 140.5424,-62.9230 140.5424 -140.5424Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.1818,175.1315 c 218.1818,-0.0000 145.4545,-181.8182 363.6364 -145.4545"/></g></svg>
diagrams/src_Diagrams_TwoD_Curvature_diagramPos.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="200.0" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 118.83636363636364,156.51329827197594 l -70.9117417162277,-156.36948173322 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 219.6217096378512,0.14381653875594225 c 0.0,-94.82568313685418 -76.87140458086108,-171.69708771771528 -171.69708771771525 -171.69708771771528c -94.82568313685418,-5.8063984665254804e-15 -171.69708771771528,76.87140458086107 -171.69708771771528 171.69708771771522c -1.1612796933050961e-14,94.82568313685418 76.87140458086105,171.69708771771528 171.69708771771522 171.69708771771528c 94.82568313685418,1.741919539957644e-14 171.69708771771528,-76.87140458086105 171.69708771771528 -171.69708771771522Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.18181818181816,175.13148009015777 c 218.1818181818182,-0.0 145.45454545454547,-181.81818181818184 363.6363636363637 -145.45454545454547"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="200.0000" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 118.8364,156.5133 l -70.9117,-156.3695 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 219.6217,0.1438 c 0.0000,-94.8257 -76.8714,-171.6971 -171.6971 -171.6971c -94.8257,-0.0000 -171.6971,76.8714 -171.6971 171.6971c -0.0000,94.8257 76.8714,171.6971 171.6971 171.6971c 94.8257,0.0000 171.6971,-76.8714 171.6971 -171.6971Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.1818,175.1315 c 218.1818,-0.0000 145.4545,-181.8182 363.6364 -145.4545"/></g></svg>
diagrams/src_Diagrams_TwoD_Curvature_diagramZero.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="200.0" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 189.01818181818183,101.12693463561232 l -602.0741002308241,-540.4757599431822 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 396.0221181542372,-439.3488253075699 c 0.0,-446.8414610189286 -362.23657554795085,-809.0780365668795 -809.0780365668794 -809.0780365668795c -446.8414610189286,-2.7361148248157886e-14 -809.0780365668795,362.2365755479508 -809.0780365668795 809.0780365668793c -5.472229649631577e-14,446.8414610189286 362.23657554795074,809.0780365668795 809.0780365668791 809.0780365668795c 446.8414610189286,8.208344474447366e-14 809.0780365668795,-362.2365755479506 809.07803656688 -809.0780365668793Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.18181818181816,175.13148009015777 c 218.1818181818182,-0.0 145.45454545454547,-181.81818181818184 363.6363636363637 -145.45454545454547"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="200.0000" stroke-opacity="1" viewBox="0 0 400 200" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 189.0182,101.1269 l -602.0741,-540.4758 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="1.0285189544531599" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 396.0221,-439.3488 c 0.0000,-446.8415 -362.2366,-809.0780 -809.0780 -809.0780c -446.8415,-0.0000 -809.0780,362.2366 -809.0780 809.0780c -0.0000,446.8415 362.2366,809.0780 809.0780 809.0780c 446.8415,0.0000 809.0780,-362.2366 809.0780 -809.0780Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="1.9284730395996748" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 18.1818,175.1315 c 218.1818,-0.0000 145.4545,-181.8182 363.6364 -145.4545"/></g></svg>
diagrams/src_Diagrams_TwoD_Offset_cubicOffsetExample.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="302.8587568898731" stroke-opacity="1" viewBox="0 0 600 303" font-size="1" width="600.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 511.98178004434516,129.75705144620275 c 10.606235857710116,25.069284754587557 34.205470842153446,55.82546981090268 80.48722731216125 86.6799741242412"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 504.65999705048597,99.66254214599793 c 0.3346638704313681,8.255042137307118 2.4133795608657382,18.49282845858401 7.3217829938591645 30.09450930020482"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 506.4937338514014,85.26625987587946 c -1.4640943353929647,2.928188670785941 -2.1082544888015486,7.624845968926008 -1.8337368009153647 14.396282270118482"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 506.20843689577896,85.59271401011554 c 6.779273038019212e-2,-7.684807703746524e-2 0.22264374631797676,-0.20114771562720798 0.285296955622412 -0.3264541342360785"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 502.65791267381195,87.93569090398205 c 1.09966629984615,-0.41436701153624195 2.44687362393302,-1.0919072628821396 3.5505242219670206 -2.3429768938665205"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 494.0623117811511,87.58378657314933 c 2.9457623866121114,1.3739128917795682 5.382041925447612,1.5628106083333693 8.595600892660824 0.35190433083272765"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.696194669177,83.7630310932222 c 1.233835708711896,2.088029660897054 2.86534579320438,3.1207909913309457 4.366117111974136 3.8207554799271173"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.27962586563376,82.94401200781269 c 7.73489093536048e-2,0.32804714747133096 0.30246544790102176,0.625921098938114 0.4165688035432233 0.8190190854095302"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.54489237921916,85.09467757558332 c -5.201273523887835e-2,-0.8562096416246057 -0.12423198149539019,-1.5525191125235354 -0.26526651358542147 -2.1506655677706306"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 488.8865444836074,96.10544324136515 c 0.6285951592007359,-4.609697834138746 0.8285924178952987,-8.208278914345197 0.6583478956117672 -11.010765665781838"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 441.8491544866363,221.49977358585733 c 31.929731500853993,-63.85946300170799 44.043977668766026,-103.44263993765506 47.037389996971086 -125.39433034449219"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 453.6158583894627,227.38312553727053 c 131.55574898915933,-263.11149797831865 -65.77787449457966,-131.55574898915933 131.55574898915933 -0.0"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.7622235703773,85.96753101537462 c 0.0,15.329119171798204 0.6082191299019316,77.38134470418046 61.92469581709472 138.69782139137325"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.7418968655277,83.13929813428342 c 1.7887563160725383e-2,0.7020868540585619 2.0326704849611056e-2,1.6834288388046035 2.0326704849611056e-2 2.8282328810911914"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.66018914900303,81.56310499408985 c 3.50905592283126e-2,0.41036459541998055 6.611191242317342e-2,0.964057829210773 8.170771652464309e-2 1.576193140193557"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.05199859639237,78.3408445789562 c 0.19861208817462941,0.6454892865675514 0.49647125301243644,1.9157652726099426 0.6081905526106669 3.2222604151336727"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 361.6158660605823,73.77595634835652 c 0.778281999447702,0.9536356598170911 1.8211936720489095,2.566336923375968 2.4361325358100565 4.564888230599678"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 357.18966169675514,70.25802410049732 c 1.534225396181438,0.7533004195932368 3.0492264459247074,1.8307093052441519 4.42620436382716 3.517932247859198"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 349.91728913050895,68.98396616497621 c 2.6563706456126557,-0.2922007710173851 4.874998058580777,9.695369318400071e-2 7.272372566246191 1.2740579355211061"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 344.50737812673464,70.81874430723295 c 1.890483423344665,-1.1435066965469178 3.6951868102644125,-1.6461584809706553 5.40991100377432 -1.8347781422567448"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 341.90372938933285,72.87554041429576 c 0.8842995586107706,-0.8970890150369698 1.7979129825518834,-1.5694264639648248 2.6036487374017807 -2.0567961070628034"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 339.9429387947986,75.39357199790632 c 0.6567471005360198,-1.0763355258784695 1.408940600333852,-1.9582002878411209 1.9607905945342565 -2.5180315836105462"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 338.2153466102728,79.15920115255244 c 0.5976239099089827,-1.6434657522496967 1.3914287352020118,-3.2146946126988154 1.7275921845258102 -3.765629154646144"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 331.02089158742814,99.97173175435304 c 4.036215742086062,-11.09959329073667 6.185401087323134,-18.03763227911644 7.194455022844651 -20.8125306018006"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 274.06207027405526,228.08439667676566 c 32.52509614545878,-65.05019229091756 48.82754727700814,-105.75166132240972 56.95882131337283 -128.11266492241262"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 285.82877417688167,233.96774862817887 c 131.55574898915933,-263.11149797831865 0.0,-131.55574898915933 131.55574898915933 -0.0"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 243.5066684881608,119.71820244879375 c -3.7564422059063314,1.2749137183682067 -8.501013484230302,2.111132473581955 -14.329190482484977 2.111132473581955"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 255.137108470349,112.19787026866629 c -2.684178425620012,3.0676324864228737 -6.357946646148888,5.730879896380798 -11.630439982188188 7.520332180127449"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 258.9676745438485,87.61006066523362 c 3.4874720283559024,9.29992540894908 2.272509976123351,17.61286554672084 -3.8305660734994813 24.58780960343267"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 220.9552436938534,62.629247877254016 c 17.79722845000837,-0.0 33.563123737493015,13.11599382130739 38.012430849995106 24.980812787979627"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 193.43707897401018,72.62776873252102 c 9.382487531803331,-7.358813750433993 18.687588219322436,-9.998520855267016 27.518164719843217 -9.998520855267016"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 170.96813963611902,103.19242777258017 c 6.767680004875888,-14.765847283365584 14.62458296860319,-24.412222671990147 22.468939337891157 -30.56465904005914"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 150.24402861218024,240.2295090126191 c 0.0,-68.44669429030836 8.95983544279202,-111.3695708811733 20.724111023938768 -137.03708124003893"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 163.3996035110962,240.2295090126191 c 0.0,-263.11149797831865 131.55574898915933,-131.55574898915933 65.77787449457966 -131.55574898915933"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 107.36036997660308,38.693005210400855 c 6.432503982934956,-12.16960212987695 14.760815226591278,-20.476100728687936 25.887308602478782 -24.92669807904293"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.42391061094953,75.63181695246934 c 2.8371303744503993,-14.299137087230024 6.687768172920303,-27.008855431492066 11.936459365653551 -36.93881174206848"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 83.97921363564315,165.68717783250844 c 4.142251616420562,-31.48111228479627 6.266882454780677,-63.95917569658954 11.44469697530638 -90.0553608800391"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 62.057457808628364,244.9886570707671 c 12.618613509791775,-21.354576708878387 18.039105516309625,-49.79333687689943 21.92175582701479 -79.30147923825864"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 6.577787449457986,275.93687485959936 c 26.333097622202153,-0.0 44.78184945015076,-12.84421317356828 55.47967035917038 -30.948217788832256"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 6.577787449457986,289.0924497585153 c 131.55574898915933,-0.0 65.77787449457966,-236.8003481804868 131.55574898915933 -263.11149797831865"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="302.8588" stroke-opacity="1" viewBox="0 0 600 303" font-size="1" width="600.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 511.9818,129.7571 c 10.6062,25.0693 34.2055,55.8255 80.4872 86.6800"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 504.6600,99.6625 c 0.3347,8.2550 2.4134,18.4928 7.3218 30.0945"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 506.4937,85.2663 c -1.4641,2.9282 -2.1083,7.6248 -1.8337 14.3963"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 506.2084,85.5927 c 0.0678,-0.0768 0.2226,-0.2011 0.2853 -0.3265"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 502.6579,87.9357 c 1.0997,-0.4144 2.4469,-1.0919 3.5505 -2.3430"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 494.0623,87.5838 c 2.9458,1.3739 5.3820,1.5628 8.5956 0.3519"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.6962,83.7630 c 1.2338,2.0880 2.8653,3.1208 4.3661 3.8208"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.2796,82.9440 c 0.0773,0.3280 0.3025,0.6259 0.4166 0.8190"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 489.5449,85.0947 c -0.0520,-0.8562 -0.1242,-1.5525 -0.2653 -2.1507"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 488.8865,96.1054 c 0.6286,-4.6097 0.8286,-8.2083 0.6583 -11.0108"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 441.8492,221.4998 c 31.9297,-63.8595 44.0440,-103.4426 47.0374 -125.3943"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 453.6159,227.3831 c 131.5557,-263.1115 -65.7779,-131.5557 131.5557 -0.0000"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.7622,85.9675 c 0.0000,15.3291 0.6082,77.3813 61.9247 138.6978"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.7419,83.1393 c 0.0179,0.7021 0.0203,1.6834 0.0203 2.8282"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.6602,81.5631 c 0.0351,0.4104 0.0661,0.9641 0.0817 1.5762"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 364.0520,78.3408 c 0.1986,0.6455 0.4965,1.9158 0.6082 3.2223"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 361.6159,73.7760 c 0.7783,0.9536 1.8212,2.5663 2.4361 4.5649"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 357.1897,70.2580 c 1.5342,0.7533 3.0492,1.8307 4.4262 3.5179"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 349.9173,68.9840 c 2.6564,-0.2922 4.8750,0.0970 7.2724 1.2741"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 344.5074,70.8187 c 1.8905,-1.1435 3.6952,-1.6462 5.4099 -1.8348"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 341.9037,72.8755 c 0.8843,-0.8971 1.7979,-1.5694 2.6036 -2.0568"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 339.9429,75.3936 c 0.6567,-1.0763 1.4089,-1.9582 1.9608 -2.5180"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 338.2153,79.1592 c 0.5976,-1.6435 1.3914,-3.2147 1.7276 -3.7656"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 331.0209,99.9717 c 4.0362,-11.0996 6.1854,-18.0376 7.1945 -20.8125"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 274.0621,228.0844 c 32.5251,-65.0502 48.8275,-105.7517 56.9588 -128.1127"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 285.8288,233.9677 c 131.5557,-263.1115 0.0000,-131.5557 131.5557 -0.0000"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 243.5067,119.7182 c -3.7564,1.2749 -8.5010,2.1111 -14.3292 2.1111"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 255.1371,112.1979 c -2.6842,3.0676 -6.3579,5.7309 -11.6304 7.5203"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 258.9677,87.6101 c 3.4875,9.2999 2.2725,17.6129 -3.8306 24.5878"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 220.9552,62.6292 c 17.7972,-0.0000 33.5631,13.1160 38.0124 24.9808"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 193.4371,72.6278 c 9.3825,-7.3588 18.6876,-9.9985 27.5182 -9.9985"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 170.9681,103.1924 c 6.7677,-14.7658 14.6246,-24.4122 22.4689 -30.5647"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 150.2440,240.2295 c 0.0000,-68.4467 8.9598,-111.3696 20.7241 -137.0371"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 163.3996,240.2295 c 0.0000,-263.1115 131.5557,-131.5557 65.7779 -131.5557"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 107.3604,38.6930 c 6.4325,-12.1696 14.7608,-20.4761 25.8873 -24.9267"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4239,75.6318 c 2.8371,-14.2991 6.6878,-27.0089 11.9365 -36.9388"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 83.9792,165.6872 c 4.1423,-31.4811 6.2669,-63.9592 11.4447 -90.0554"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,0,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 62.0575,244.9887 c 12.6186,-21.3546 18.0391,-49.7933 21.9218 -79.3015"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 6.5778,275.9369 c 26.3331,-0.0000 44.7818,-12.8442 55.4797 -30.9482"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.197105416628175" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 6.5778,289.0924 c 131.5557,-0.0000 65.7779,-236.8003 131.5557 -263.1115"/></g></svg>
diagrams/src_Diagrams_TwoD_Offset_expandLoopExample.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="300.00000000000006" stroke-opacity="1" viewBox="0 0 300 300" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 36.363636363636374,286.3636363636364 h 113.63636363636363 c 6.027647496353275,-2.892321107515236e-15 11.80841824405711,-2.3944736446685924 16.070608663330628 -6.656664063942104l 113.63636363636363,-113.63636363636363 c 4.262190419273511,-4.262190419273516 6.656664063942097,-10.042961166977355 6.656664063942101 -16.070608663330628v -113.63636363636363 c 0.0,-12.551926132518032 -10.175346594754691,-22.727272727272727 -22.727272727272723 -22.727272727272727c -6.027647496353271,2.1541471862354763e-15 -11.80841824405711,2.394473644668591 -16.070608663330628 6.6566640639421015l -227.27272727272725,227.27272727272725 c -8.875552085256137,8.875552085256135 -8.87555208525614,23.265665241405113 -5.0464682937507114e-15 32.14121732666125c 4.262190419273514,4.262190419273512 10.042961166977355,6.656664063942098 16.07060866333063 6.656664063942117ZM 36.363636363636374,240.9090909090909 c -12.551926132518012,1.766263902812749e-14 -22.727272727272705,10.175346594754709 -22.727272727272705 22.727272727272737c -2.5232341468753557e-15,12.551926132518032 10.17534659475469,22.727272727272727 22.727272727272716 22.727272727272727c 6.027647496353271,-1.2616170734376779e-15 11.80841824405711,-2.3944736446685897 16.070608663330628 -6.656664063942099l 227.27272727272725,-227.27272727272725 c 8.875552085256135,-8.875552085256134 8.875552085256137,-23.265665241405113 0.0 -32.14121732666125c -8.875552085256134,-8.875552085256135 -23.265665241405113,-8.875552085256137 -32.14121732666125 -2.5232341468753557e-15c -4.262190419273512,4.262190419273517 -6.656664063942098,10.042961166977355 -6.6566640639421015 16.070608663330628v 113.63636363636363 c -2.5232341468753557e-15,12.551926132518032 10.17534659475469,22.727272727272727 22.72727272727272 22.72727272727273c 12.551926132518032,2.5232341468753557e-15 22.727272727272727,-10.17534659475469 22.72727272727273 -22.727272727272716c 2.5232341468753557e-15,-12.551926132518032 -10.175346594754686,-22.727272727272727 -22.727272727272712 -22.72727272727273c -6.027647496353271,1.2616170734376779e-15 -11.80841824405711,2.394473644668588 -16.070608663330628 6.656664063942097l -113.63636363636363,113.63636363636363 c -8.875552085256132,8.875552085256139 -8.875552085256128,23.265665241405113 1.0092936587501423e-14 32.14121732666125c 8.875552085256139,8.875552085256132 23.265665241405113,8.87555208525613 32.14121732666125 -7.569702440626068e-15c 8.875552085256134,-8.875552085256139 8.87555208525613,-23.265665241405113 -5.0464682937507114e-15 -32.14121732666124c -4.262190419273514,-4.262190419273507 -10.042961166977339,-6.656664063942092 -16.070608663330603 -6.656664063942101Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 36.363636363636374,263.6363636363636 h 113.63636363636363 l 113.63636363636363,-113.63636363636363 v -113.63636363636363 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="300.0000" stroke-opacity="1" viewBox="0 0 300 300" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 36.3636,286.3636 h 113.6364 c 6.0276,-0.0000 11.8084,-2.3945 16.0706 -6.6567l 113.6364,-113.6364 c 4.2622,-4.2622 6.6567,-10.0430 6.6567 -16.0706v -113.6364 c 0.0000,-12.5519 -10.1753,-22.7273 -22.7273 -22.7273c -6.0276,0.0000 -11.8084,2.3945 -16.0706 6.6567l -227.2727,227.2727 c -8.8756,8.8756 -8.8756,23.2657 -0.0000 32.1412c 4.2622,4.2622 10.0430,6.6567 16.0706 6.6567ZM 36.3636,240.9091 c -12.5519,0.0000 -22.7273,10.1753 -22.7273 22.7273c -0.0000,12.5519 10.1753,22.7273 22.7273 22.7273c 6.0276,-0.0000 11.8084,-2.3945 16.0706 -6.6567l 227.2727,-227.2727 c 8.8756,-8.8756 8.8756,-23.2657 0.0000 -32.1412c -8.8756,-8.8756 -23.2657,-8.8756 -32.1412 -0.0000c -4.2622,4.2622 -6.6567,10.0430 -6.6567 16.0706v 113.6364 c -0.0000,12.5519 10.1753,22.7273 22.7273 22.7273c 12.5519,0.0000 22.7273,-10.1753 22.7273 -22.7273c 0.0000,-12.5519 -10.1753,-22.7273 -22.7273 -22.7273c -6.0276,0.0000 -11.8084,2.3945 -16.0706 6.6567l -113.6364,113.6364 c -8.8756,8.8756 -8.8756,23.2657 0.0000 32.1412c 8.8756,8.8756 23.2657,8.8756 32.1412 -0.0000c 8.8756,-8.8756 8.8756,-23.2657 -0.0000 -32.1412c -4.2622,-4.2622 -10.0430,-6.6567 -16.0706 -6.6567Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 36.3636,263.6364 h 113.6364 l 113.6364,-113.6364 v -113.6364 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Offset_expandTrailExample.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="197.38302878166363" stroke-opacity="1" viewBox="0 0 600 197" font-size="1" width="600.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="12.98696646675048px" stroke="rgb(0,0,0)" stroke-width="1.376545341172593" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0,0.0,0.0,1.0,481.81818181818187,168.93062322782592)" stroke="none" text-anchor="middle">LineCapSquare</text></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 416.8830238425919,97.50165637702322 h -25.97393293350096 v 51.94786586700192 h 25.97393293350096 h 129.86966466750482 c 14.345007052300385,-8.783783485172937e-16 25.97393293350096,-11.628925881200574 25.973932933500958 -25.973932933500958c 0.0,-6.076251092058475 -2.130283781570332,-11.960201272862653 -6.020204939150425 -16.62810666195877l -64.93483233375241,-77.92179880050288 l -16.628106661958775,-19.953727994350533 l -39.907455988701045,33.25621332391755 l 16.628106661958775,19.953727994350533 l 64.93483233375241,77.92179880050288 c 9.183449727959651,11.020139673551585 25.561694982757718,12.509071060351415 36.5818346563093 3.325621332391765c 11.020139673551585,-9.183449727959651 12.509071060351415,-25.561694982757714 3.3256213323917683 -36.5818346563093c -4.934886876493225,-5.921864251791873 -12.245188268797088,-9.345826271542187 -19.95372799435053 -9.345826271542196Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.4413633529314827" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 416.8830238425919,123.47558931052419 h 129.86966466750482 l -64.93483233375241,-77.92179880050288 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="12.98696646675048px" stroke="rgb(0,0,0)" stroke-width="1.376545341172593" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0,0.0,0.0,1.0,287.01303353324954,163.62699800825928)" stroke="none" text-anchor="middle">LineCapRound</text></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 222.07787555765958,92.19803115745658 c -14.345007052300385,-8.783783485172937e-16 -25.97393293350096,11.628925881200571 -25.97393293350096 25.973932933500954c -1.7567566970345874e-15,14.345007052300385 11.628925881200571,25.97393293350096 25.97393293350095 25.97393293350096h 129.86966466750482 c 14.345007052300385,-8.783783485172937e-16 25.97393293350096,-11.628925881200574 25.973932933500958 -25.973932933500958c 0.0,-6.076251092058475 -2.130283781570332,-11.960201272862653 -6.020204939150425 -16.62810666195877l -64.93483233375241,-77.92179880050288 c -9.183449727959651,-11.020139673551583 -25.56169498275772,-12.50907106035141 -36.5818346563093 -3.3256213323917594c -11.020139673551583,9.183449727959651 -12.509071060351411,25.56169498275772 -3.3256213323917625 36.5818346563093l 64.93483233375241,77.92179880050288 c 9.183449727959651,11.020139673551585 25.561694982757718,12.509071060351415 36.5818346563093 3.325621332391765c 11.020139673551585,-9.183449727959651 12.509071060351415,-25.561694982757714 3.3256213323917683 -36.5818346563093c -4.934886876493225,-5.921864251791873 -12.245188268797088,-9.345826271542187 -19.95372799435053 -9.345826271542196Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.4413633529314827" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 222.07787555765958,118.17196409095754 h 129.86966466750482 l -64.93483233375241,-77.92179880050288 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="12.98696646675048px" stroke="rgb(0,0,0)" stroke-width="1.376545341172593" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0,0.0,0.0,1.0,105.19485171506776,158.95375923065066)" stroke="none" text-anchor="middle">LineCapButt</text></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.272727272727337,87.52479237984795 v 51.94786586700192 h 129.86966466750482 c 14.345007052300385,-8.783783485172937e-16 25.97393293350096,-11.628925881200574 25.973932933500958 -25.973932933500958c 0.0,-6.076251092058475 -2.130283781570332,-11.960201272862653 -6.020204939150425 -16.62810666195877l -64.93483233375241,-77.92179880050288 l -39.907455988701045,33.25621332391755 l 64.93483233375241,77.92179880050288 c 9.183449727959651,11.020139673551585 25.561694982757718,12.509071060351415 36.5818346563093 3.325621332391765c 11.020139673551585,-9.183449727959651 12.509071060351415,-25.561694982757714 3.3256213323917683 -36.5818346563093c -4.934886876493225,-5.921864251791873 -12.245188268797088,-9.345826271542187 -19.95372799435053 -9.345826271542196Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.4413633529314827" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.272727272727337,113.49872531334891 h 129.86966466750482 l -64.93483233375241,-77.92179880050288 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="197.3830" stroke-opacity="1" viewBox="0 0 600 197" font-size="1" width="600.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="12.98696646675048px" stroke="rgb(0,0,0)" stroke-width="1.376545341172593" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0000,0.0000,0.0000,1.0000,481.8182,168.9306)" stroke="none" text-anchor="middle">LineCapSquare</text></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 416.8830,97.5017 h -25.9739 v 51.9479 h 25.9739 h 129.8697 c 14.3450,-0.0000 25.9739,-11.6289 25.9739 -25.9739c 0.0000,-6.0763 -2.1303,-11.9602 -6.0202 -16.6281l -64.9348,-77.9218 l -16.6281,-19.9537 l -39.9075,33.2562 l 16.6281,19.9537 l 64.9348,77.9218 c 9.1834,11.0201 25.5617,12.5091 36.5818 3.3256c 11.0201,-9.1834 12.5091,-25.5617 3.3256 -36.5818c -4.9349,-5.9219 -12.2452,-9.3458 -19.9537 -9.3458Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.4413633529314827" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 416.8830,123.4756 h 129.8697 l -64.9348,-77.9218 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="12.98696646675048px" stroke="rgb(0,0,0)" stroke-width="1.376545341172593" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0000,0.0000,0.0000,1.0000,287.0130,163.6270)" stroke="none" text-anchor="middle">LineCapRound</text></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 222.0779,92.1980 c -14.3450,-0.0000 -25.9739,11.6289 -25.9739 25.9739c -0.0000,14.3450 11.6289,25.9739 25.9739 25.9739h 129.8697 c 14.3450,-0.0000 25.9739,-11.6289 25.9739 -25.9739c 0.0000,-6.0763 -2.1303,-11.9602 -6.0202 -16.6281l -64.9348,-77.9218 c -9.1834,-11.0201 -25.5617,-12.5091 -36.5818 -3.3256c -11.0201,9.1834 -12.5091,25.5617 -3.3256 36.5818l 64.9348,77.9218 c 9.1834,11.0201 25.5617,12.5091 36.5818 3.3256c 11.0201,-9.1834 12.5091,-25.5617 3.3256 -36.5818c -4.9349,-5.9219 -12.2452,-9.3458 -19.9537 -9.3458Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.4413633529314827" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 222.0779,118.1720 h 129.8697 l -64.9348,-77.9218 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="12.98696646675048px" stroke="rgb(0,0,0)" stroke-width="1.376545341172593" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0000,0.0000,0.0000,1.0000,105.1949,158.9538)" stroke="none" text-anchor="middle">LineCapButt</text></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(0,128,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.2727,87.5248 v 51.9479 h 129.8697 c 14.3450,-0.0000 25.9739,-11.6289 25.9739 -25.9739c 0.0000,-6.0763 -2.1303,-11.9602 -6.0202 -16.6281l -64.9348,-77.9218 l -39.9075,33.2562 l 64.9348,77.9218 c 9.1834,11.0201 25.5617,12.5091 36.5818 3.3256c 11.0201,-9.1834 12.5091,-25.5617 3.3256 -36.5818c -4.9349,-5.9219 -12.2452,-9.3458 -19.9537 -9.3458Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(255,255,255)" stroke-width="3.4413633529314827" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.2727,113.4987 h 129.8697 l -64.9348,-77.9218 "/></g></svg>
diagrams/src_Diagrams_TwoD_Offset_offsetTrailExample.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="185.1008379753402" stroke-opacity="1" viewBox="0 0 600 185" font-size="1" width="600.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="13.702641330909062px" stroke="rgb(0,0,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0,0.0,0.0,1.0,493.6874054156325,156.13320152555207)" stroke="none" text-anchor="middle">LineJoinBevel</text></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 414.64753810399236,135.57923952918844 h 137.02641330909063 l 21.0533213141897,-44.949717090309534 l -68.51320665454531,-82.21584798545437 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 414.64753810399236,108.17395686737032 h 137.02641330909063 l -68.51320665454531,-82.21584798545437 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="13.702641330909062px" stroke="rgb(0,0,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0,0.0,0.0,1.0,318.7290487876289,156.13320152555207)" stroke="none" text-anchor="middle">LineJoinRound</text></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 236.51320080217454,135.57923952918844 h 137.02641330909063 c 15.135519678924403,-9.267832864113272e-16 27.405282661818124,-12.269762982893718 27.40528266181812 -27.40528266181812c 0.0,-6.411096044960741 -2.247677674893909,-12.619294021209988 -6.3519613476284205 -17.54443442849141l -68.51320665454531,-82.21584798545437 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 236.51320080217454,108.17395686737032 h 137.02641330909063 l -68.51320665454531,-82.21584798545437 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="13.702641330909062px" stroke="rgb(0,0,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0,0.0,0.0,1.0,125.0416433719964,156.13320152555207)" stroke="none" text-anchor="middle">LineJoinMiter</text></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.27272727272728,135.57923952918844 h 137.02641330909063 h 58.51141888944763 l -37.45809757525794,-44.949717090309534 l -68.51320665454531,-82.21584798545437 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.27272727272728,108.17395686737032 h 137.02641330909063 l -68.51320665454531,-82.21584798545437 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="185.1008" stroke-opacity="1" viewBox="0 0 600 185" font-size="1" width="600.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="13.702641330909062px" stroke="rgb(0,0,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0000,0.0000,0.0000,1.0000,493.6874,156.1332)" stroke="none" text-anchor="middle">LineJoinBevel</text></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 414.6475,135.5792 h 137.0264 l 21.0533,-44.9497 l -68.5132,-82.2158 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 414.6475,108.1740 h 137.0264 l -68.5132,-82.2158 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="13.702641330909062px" stroke="rgb(0,0,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0000,0.0000,0.0000,1.0000,318.7290,156.1332)" stroke="none" text-anchor="middle">LineJoinRound</text></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 236.5132,135.5792 h 137.0264 c 15.1355,-0.0000 27.4053,-12.2698 27.4053 -27.4053c 0.0000,-6.4111 -2.2477,-12.6193 -6.3520 -17.5444l -68.5132,-82.2158 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 236.5132,108.1740 h 137.0264 l -68.5132,-82.2158 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" font-size="13.702641330909062px" stroke="rgb(0,0,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" font-family="Helvetica" stroke-miterlimit="10.0" font-weight="bold"><text dominant-baseline="middle" transform="matrix(1.0000,0.0000,0.0000,1.0000,125.0416,156.1332)" stroke="none" text-anchor="middle">LineJoinMiter</text></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.2727,135.5792 h 137.0264 h 58.5114 l -37.4581,-44.9497 l -68.5132,-82.2158 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 27.2727,108.1740 h 137.0264 l -68.5132,-82.2158 "/></g></svg>
diagrams/src_Diagrams_TwoD_Offset_offsetTrailLeftExample.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="154.67216693398285" stroke-opacity="1" viewBox="0 0 200 155" font-size="1" width="200.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,7.030553042453764 h 151.51451832306768 c 7.088955375224059,5.0464472042177966e-15 13.953559821257857,2.4853295947320184 19.399446190621173 7.023568235868117c 12.856821943491788,10.714018286243158 14.59390752436739,29.82195967587481 3.8798892381242314 42.678781619366596l -75.75725916153384,90.9087109938406 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.090909090909093,37.3334567070673 h 151.51451832306768 l -75.75725916153384,90.9087109938406 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="154.6722" stroke-opacity="1" viewBox="0 0 200 155" font-size="1" width="200.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,7.0306 h 151.5145 c 7.0890,0.0000 13.9536,2.4853 19.3994 7.0236c 12.8568,10.7140 14.5939,29.8220 3.8799 42.6788l -75.7573,90.9087 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 9.0909,37.3335 h 151.5145 l -75.7573,90.9087 "/></g></svg>
diagrams/src_Diagrams_TwoD_Offset_offsetTrailOuterExample.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="271.2911579538083" stroke-opacity="1" viewBox="0 0 300 271" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 232.44254819939374,239.47922220266116 l 48.70129870129868,-84.35312374523754 c 6.959719283925263,-12.054587406175445 6.959719283925263,-26.90645155486352 -1.2976632755358973e-14 -38.96103896103896l -48.7012987012987,-84.35312374523751 c -6.959719283925261,-12.054587406175434 -19.821810930244474,-19.480519480519472 -33.741249498095 -19.48051948051947l -97.4025974025974,-8.651088503572648e-15 c -13.919438567850529,-8.523197944023185e-16 -26.781530214169752,7.425932074344035 -33.74124949809501 19.480519480519483l -48.70129870129869,84.35312374523754 c -6.959719283925264,12.054587406175434 -6.959719283925272,26.906451554863505 -1.5139404881252133e-14 38.96103896103895l 48.70129870129866,84.35312374523754 c 6.959719283925264,12.054587406175457 19.821810930244496,19.48051948051951 33.741249498095044 19.480519480519497l 97.40259740259744,-3.460435401429059e-14 c 13.919438567850529,-8.523197944023185e-16 26.781530214169752,-7.425932074344039 33.74124949809496 -19.480519480519476Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 198.70129870129873,219.99870272214167 l 48.70129870129868,-84.35312374523754 l -48.7012987012987,-84.35312374523751 l -97.4025974025974,-8.651088503572648e-15 l -48.70129870129869,84.35312374523754 l 48.70129870129866,84.35312374523754 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="271.2912" stroke-opacity="1" viewBox="0 0 300 271" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,128,0)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 232.4425,239.4792 l 48.7013,-84.3531 c 6.9597,-12.0546 6.9597,-26.9065 -0.0000 -38.9610l -48.7013,-84.3531 c -6.9597,-12.0546 -19.8218,-19.4805 -33.7412 -19.4805h -97.4026 c -13.9194,-0.0000 -26.7815,7.4259 -33.7412 19.4805l -48.7013,84.3531 c -6.9597,12.0546 -6.9597,26.9065 -0.0000 38.9610l 48.7013,84.3531 c 6.9597,12.0546 19.8218,19.4805 33.7412 19.4805l 97.4026,-0.0000 c 13.9194,-0.0000 26.7815,-7.4259 33.7412 -19.4805Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,255)" stroke-width="3.0" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 198.7013,219.9987 l 48.7013,-84.3531 l -48.7013,-84.3531 h -97.4026 l -48.7013,84.3531 l 48.7013,84.3531 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_decagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="95.10565162951534" stroke-opacity="1" viewBox="0 0 100 95" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 86.7734997443158,74.27033728259734 l 8.681045710229654,-26.717511467839685 l -8.681045710229668,-26.717511467839678 l -22.727272727272723,-16.512330181940012 l -28.092454034086124,4.678333393029941e-15 l -22.72727272727272,16.51233018194002 l -8.681045710229657,26.717511467839685 l 8.681045710229665,26.717511467839678 l 22.727272727272723,16.512330181940015 l 28.092454034086124,-1.5594444643433139e-15 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="95.1057" stroke-opacity="1" viewBox="0 0 100 95" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 86.7735,74.2703 l 8.6810,-26.7175 l -8.6810,-26.7175 l -22.7273,-16.5123 l -28.0925,0.0000 l -22.7273,16.5123 l -8.6810,26.7175 l 8.6810,26.7175 l 22.7273,16.5123 l 28.0925,-0.0000 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_dodecagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="99.99999999999999" stroke-opacity="1" viewBox="0 0 100 100" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.45454545454545,62.17950874686919 l -5.408788415759074e-15,-24.35901749373842 l -12.179508746869214,-21.09552796080702 l -21.095527960807022,-12.179508746869208 l -24.35901749373842,3.917228775555017e-15 l -21.095527960807022,12.179508746869208 l -12.179508746869214,21.09552796080702 l -8.391907696167188e-15,24.35901749373842 l 12.1795087468692,21.095527960807026 l 21.095527960807015,12.179508746869216 l 24.35901749373842,-9.341094951469035e-16 l 21.095527960807015,-12.179508746869216 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="100.0000" stroke-opacity="1" viewBox="0 0 100 100" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4545,62.1795 l -0.0000,-24.3590 l -12.1795,-21.0955 l -21.0955,-12.1795 l -24.3590,0.0000 l -21.0955,12.1795 l -12.1795,21.0955 l -0.0000,24.3590 l 12.1795,21.0955 l 21.0955,12.1795 l 24.3590,-0.0000 l 21.0955,-12.1795 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_hendecagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="98.98214418809326" stroke-opacity="1" viewBox="0 0 100 99" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.45454545454545,57.04953832667333 l -3.6824569441366046,-25.612050621948153 l -16.94479989871783,-19.55534153624188 l -24.827288611691024,-7.289949684219485 l -24.827288611691028,7.289949684219488 l -16.94479989871783,19.55534153624188 l -3.6824569441365953,25.612050621948153 l 10.74904007121057,23.537114601287985 l 21.767792813036245,13.989311000023635 l 25.875425140597297,-7.181873190763937e-16 l 21.767792813036245,-13.989311000023637 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="98.9821" stroke-opacity="1" viewBox="0 0 100 99" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4545,57.0495 l -3.6825,-25.6121 l -16.9448,-19.5553 l -24.8273,-7.2899 l -24.8273,7.2899 l -16.9448,19.5553 l -3.6825,25.6121 l 10.7490,23.5371 l 21.7678,13.9893 l 25.8754,-0.0000 l 21.7678,-13.9893 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_heptagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="97.49279121818239" stroke-opacity="1" viewBox="0 0 100 97" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.45454545454545,61.660546544998155 l -9.00283019068918,-39.44397628341438 l -36.451715263856286,-17.554220883072162 l -36.451715263856286,17.55422088307217 l -9.002830190689167,39.44397628341438 l 25.22536964033506,31.631613031861065 l 40.4583516284208,-1.122944837906337e-15 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="97.4928" stroke-opacity="1" viewBox="0 0 100 97" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4545,61.6605 l -9.0028,-39.4440 l -36.4517,-17.5542 l -36.4517,17.5542 l -9.0028,39.4440 l 25.2254,31.6316 l 40.4584,-0.0000 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_hexagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="86.6025403784439" stroke-opacity="1" viewBox="0 0 100 87" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 72.72727272727272,82.66606127033282 l 22.72727272727274,-39.364791081110845 l -22.727272727272712,-39.36479108111086 l -45.45454545454546,-2.2709107321878204e-14 l -22.727272727272744,39.36479108111084 l 22.727272727272698,39.36479108111087 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="86.6025" stroke-opacity="1" viewBox="0 0 100 87" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 72.7273,82.6661 l 22.7273,-39.3648 l -22.7273,-39.3648 l -45.4545,-0.0000 l -22.7273,39.3648 l 22.7273,39.3648 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_hruleEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="48.00000000000001" stroke-opacity="1" viewBox="0 0 300 48" font-size="1" width="300.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.636363636363626,45.81818181818183 h 272.72727272727275 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 40.90909090909091,34.909090909090914 h 218.1818181818182 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 68.18181818181819,24.000000000000004 h 163.63636363636363 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.45454545454545,13.090909090909093 h 109.0909090909091 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 122.72727272727272,2.1818181818181834 h 54.54545454545455 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="48.0000" stroke-opacity="1" viewBox="0 0 300 48" font-size="1" width="300.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 13.6364,45.8182 h 272.7273 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 40.9091,34.9091 h 218.1818 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 68.1818,24.0000 h 163.6364 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4545,13.0909 h 109.0909 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 122.7273,2.1818 h 54.5455 "/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_nonagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="98.48077530122083" stroke-opacity="1" viewBox="0 0 100 98" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.97205643508258,73.8492081371451 l 5.482489019462867,-31.09274030233352 l -15.786197969720943,-27.342496941897323 l -29.668347484824512,-10.798395384342669 l -29.668347484824512,10.798395384342673 l -15.786197969720938,27.342496941897327 l 5.4824890194628795,31.09274030233352 l 24.185858465361633,20.294344917990855 l 31.57239593944188,5.257860137182526e-15 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="98.4808" stroke-opacity="1" viewBox="0 0 100 98" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 89.9721,73.8492 l 5.4825,-31.0927 l -15.7862,-27.3425 l -29.6683,-10.7984 l -29.6683,10.7984 l -15.7862,27.3425 l 5.4825,31.0927 l 24.1859,20.2943 l 31.5724,0.0000 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_octagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="99.99999999999999" stroke-opacity="1" viewBox="0 0 100 100" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.45454545454544,68.82788919877703 l -8.361262437429426e-15,-37.65577839755409 l -26.626656255768403,-26.6266562557684 l -37.65577839755409,6.0555110132310925e-15 l -26.6266562557684,26.626656255768403 l 3.74975958903276e-15,37.65577839755409 l 26.626656255768403,26.626656255768403 l 37.65577839755409,-1.4440081648344269e-15 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="100.0000" stroke-opacity="1" viewBox="0 0 100 100" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4545,68.8279 l -0.0000,-37.6558 l -26.6267,-26.6267 l -37.6558,0.0000 l -26.6267,26.6267 l 0.0000,37.6558 l 26.6267,26.6267 l 37.6558,-0.0000 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_pentagonEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="95.10565162951535" stroke-opacity="1" viewBox="0 0 100 95" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 78.09245403408613,91.23905704609697 l 17.362091420459322,-53.43502293567937 l -45.454545454545446,-33.02466036388004 l -45.45454545454545,33.02466036388003 l 17.36209142045932,53.43502293567937 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="95.1057" stroke-opacity="1" viewBox="0 0 100 95" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 78.0925,91.2391 l 17.3621,-53.4350 l -45.4545,-33.0247 l -45.4545,33.0247 l 17.3621,53.4350 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_rectEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="104.99999999999999" stroke-opacity="1" viewBox="0 0 150 105" font-size="1" width="150.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5019960159204453" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 143.1818181818182,100.22727272727272 l -1.5139404881252133e-14,-95.45454545454544 h -136.36363636363635 l -1.5139404881252133e-14,95.45454545454544 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="105.0000" stroke-opacity="1" viewBox="0 0 150 105" font-size="1" width="150.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5019960159204453" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 143.1818,100.2273 l -0.0000,-95.4545 h -136.3636 l -0.0000,95.4545 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_roundedRectEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="76.19047619047622" stroke-opacity="1" viewBox="0 0 400 76" font-size="1" width="400.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6982972487551757" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 381.81818181818187,55.41125541125544 v -17.31601731601732 c -19.126744582884626,-3.0758151178316683e-15 -34.63203463203464,-15.505290049150018 -34.63203463203464 -34.63203463203464h -51.94805194805195 c -19.126744582884626,-1.1711753265769319e-15 -34.63203463203464,15.505290049150009 -34.63203463203464 34.63203463203463v 34.63203463203464 h 103.89610389610392 c 9.563372291442313,1.5379075589158342e-15 17.31601731601732,-7.752645024575003 17.316017316017295 -17.31601731601731Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6982972487551757" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 225.97402597402595,55.41125541125544 v -34.632034632034646 c -9.563372291442313,-1.5379075589158342e-15 -17.31601731601732,-7.752645024575009 -17.31601731601732 -17.31601731601732h -51.94805194805196 c -2.3423506531538637e-15,9.563372291442313 -7.752645024575009,17.31601731601732 -17.31601731601732 17.316017316017316v 34.63203463203464 c 9.563372291442313,2.709082885492766e-15 17.31601731601732,7.75264502457501 17.316017316017316 17.31601731601732h 51.94805194805197 c 5.418165770985532e-15,-9.563372291442313 7.752645024575015,-17.316017316017316 17.31601731601731 -17.3160173160173Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6982972487551757" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 104.76190476190474,55.41125541125544 v -34.632034632034646 c 0.0,-9.563372291442313 -7.752645024575005,-17.31601731601732 -17.316017316017316 -17.31601731601732h -51.94805194805196 c -9.563372291442313,-5.855876632884659e-16 -17.31601731601732,7.7526450245750045 -17.31601731601732 17.316017316017316v 34.63203463203464 c -1.1711753265769319e-15,9.563372291442313 7.7526450245750045,17.31601731601732 17.316017316017316 17.316017316017327h 51.94805194805197 c 9.563372291442313,1.5379075589158342e-15 17.31601731601732,-7.752645024575003 17.31601731601731 -17.316017316017316Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="76.1905" stroke-opacity="1" viewBox="0 0 400 76" font-size="1" width="400.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6982972487551757" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 381.8182,55.4113 v -17.3160 c -19.1267,-0.0000 -34.6320,-15.5053 -34.6320 -34.6320h -51.9481 c -19.1267,-0.0000 -34.6320,15.5053 -34.6320 34.6320v 34.6320 h 103.8961 c 9.5634,0.0000 17.3160,-7.7526 17.3160 -17.3160Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6982972487551757" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 225.9740,55.4113 v -34.6320 c -9.5634,-0.0000 -17.3160,-7.7526 -17.3160 -17.3160h -51.9481 c -0.0000,9.5634 -7.7526,17.3160 -17.3160 17.3160v 34.6320 c 9.5634,0.0000 17.3160,7.7526 17.3160 17.3160h 51.9481 c 0.0000,-9.5634 7.7526,-17.3160 17.3160 -17.3160Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.6982972487551757" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 104.7619,55.4113 v -34.6320 c 0.0000,-9.5634 -7.7526,-17.3160 -17.3160 -17.3160h -51.9481 c -9.5634,-0.0000 -17.3160,7.7526 -17.3160 17.3160v 34.6320 c -0.0000,9.5634 7.7526,17.3160 17.3160 17.3160h 51.9481 c 9.5634,0.0000 17.3160,-7.7526 17.3160 -17.3160Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_squareEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="85.71428571428572" stroke-opacity="1" viewBox="0 0 200 86" font-size="1" width="200.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5237229365663817" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 190.90909090909093,81.81818181818181 l -8.651088503572648e-15,-77.92207792207792 h -77.92207792207792 l -8.651088503572648e-15,77.92207792207792 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5237229365663817" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0,68.83116883116884 l -5.767392335715099e-15,-51.94805194805195 h -51.94805194805195 l -5.767392335715099e-15,51.94805194805195 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5237229365663817" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 35.06493506493507,55.84415584415585 l -2.8836961678575494e-15,-25.974025974025974 h -25.974025974025974 l -2.8836961678575494e-15,25.974025974025974 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="85.7143" stroke-opacity="1" viewBox="0 0 200 86" font-size="1" width="200.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5237229365663817" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 190.9091,81.8182 l -0.0000,-77.9221 h -77.9221 l -0.0000,77.9221 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5237229365663817" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 100.0000,68.8312 l -0.0000,-51.9481 h -51.9481 l -0.0000,51.9481 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5237229365663817" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 35.0649,55.8442 l -0.0000,-25.9740 h -25.9740 l -0.0000,25.9740 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_triangleEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="86.60254037844383" stroke-opacity="1" viewBox="0 0 100 87" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.45454545454545,83.97822097303643 l -45.45454545454546,-78.72958216222166 l -45.45454545454544,78.72958216222166 Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="86.6025" stroke-opacity="1" viewBox="0 0 100 87" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4545,83.9782 l -45.4545,-78.7296 l -45.4545,78.7296 Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_unitSquareEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="100.0" stroke-opacity="1" viewBox="0 0 100 100" font-size="1" width="100.0" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.45454545454545,95.45454545454545 l -1.0092936587501423e-14,-90.9090909090909 h -90.9090909090909 l -1.0092936587501423e-14,90.9090909090909 Z"/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 51.99999999999999,50.0 c 0.0,-1.104569499661587 -0.895430500338413,-2.0 -1.9999999999999998 -2.0c -1.104569499661587,-6.76353751098178e-17 -2.0,0.8954305003384128 -2.0 1.9999999999999996c -1.352707502196356e-16,1.104569499661587 0.8954305003384126,2.0 1.9999999999999991 2.0c 1.104569499661587,2.029061253294534e-16 2.0,-0.8954305003384126 2.000000000000001 -1.9999999999999996Z"/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="100.0000" stroke-opacity="1" viewBox="0 0 100 100" font-size="1" width="100.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 95.4545,95.4545 l -0.0000,-90.9091 h -90.9091 l -0.0000,90.9091 Z"/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="1.0" stroke="rgb(0,0,0)" stroke-width="0.0" fill="rgb(255,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 52.0000,50.0000 c 0.0000,-1.1046 -0.8954,-2.0000 -2.0000 -2.0000c -1.1046,-0.0000 -2.0000,0.8954 -2.0000 2.0000c -0.0000,1.1046 0.8954,2.0000 2.0000 2.0000c 1.1046,0.0000 2.0000,-0.8954 2.0000 -2.0000Z"/></g></svg>
diagrams/src_Diagrams_TwoD_Shapes_vruleEx.svg view
@@ -1,3 +1,1 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" height="100.0" stroke-opacity="1" viewBox="0 0 50 100" font-size="1" width="50.00000000000001" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 47.727272727272734,4.545454545454547 v 90.9090909090909 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 38.63636363636364,9.090909090909086 v 81.81818181818183 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 29.545454545454547,13.636363636363633 v 72.72727272727273 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 20.454545454545457,18.18181818181818 v 63.63636363636364 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 11.363636363636365,22.727272727272723 v 54.545454545454554 "/></g><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 2.2727272727272734,27.27272727272727 v 45.45454545454546 "/></g></g></svg>+<svg xmlns="http://www.w3.org/2000/svg" height="100.0000" stroke-opacity="1" viewBox="0 0 50 100" font-size="1" width="50.0000" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="rgb(0,0,0)" version="1.1"><defs></defs><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 47.7273,4.5455 v 90.9091 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 38.6364,9.0909 v 81.8182 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 29.5455,13.6364 v 72.7273 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 20.4545,18.1818 v 63.6364 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 11.3636,22.7273 v 54.5455 "/></g><g stroke-linejoin="miter" stroke-opacity="1.0" fill-opacity="0.0" stroke="rgb(0,0,0)" stroke-width="0.5" fill="rgb(0,0,0)" stroke-linecap="butt" stroke-miterlimit="10.0"><path d="M 2.2727,27.2727 v 45.4545 "/></g></svg>
src/Diagrams/Angle.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TypeFamilies #-} -----------------------------------------------------------------------------@@ -33,19 +36,26 @@ -- ** Classes , HasTheta(..) , HasPhi(..)++ -- * Rotation+ , rotation, rotate ) where import Control.Applicative-import Control.Lens (AReview, Iso', Lens', iso, over, review, (^.))+import Control.Lens (AReview, Iso', Lens', iso, over,+ review, (^.)) import Data.Fixed-import Data.Monoid hiding ((<>))+import Data.Monoid hiding ((<>))+import Data.Monoid.Action import Data.Semigroup-import Text.Read import Prelude+import Text.Read -import Diagrams.Core (OrderedField)+import Diagrams.Core (OrderedField)+import Diagrams.Core.Transform import Diagrams.Core.V import Diagrams.Points+import Linear.V2 (V2 (..)) import Linear.Metric import Linear.Vector@@ -197,15 +207,58 @@ infixl 5 @@ --- | Compute the positive angle between the two vectors in their common plane.+-- | Compute the positive angle between the two vectors in their common+-- plane in the [0,pi] range. For a signed angle see+-- 'Diagrams.TwoD.Vector.signedAngleBetween'.+-- -- Returns NaN if either of the vectors are zero.-angleBetween :: (Metric v, Floating n) => v n -> v n -> Angle n-angleBetween v1 v2 = acosA (signorm v1 `dot` signorm v2)+angleBetween :: (Metric v, Floating n, Ord n) => v n -> v n -> Angle n+angleBetween v1 v2 = acosA (min 1 . max (-1) $ signorm v1 `dot` signorm v2) -- N.B.: Currently discards the common plane information. -- | Normalize an angle so that it lies in the [0,tau) range. normalizeAngle :: (Floating n, Real n) => Angle n -> Angle n normalizeAngle = over rad (`mod'` (2 * pi))++------------------------------------------------------------+-- Rotation++-- These functions are defined here (instead of in+-- Diagrams.TwoD.Transform) because the Action instance needs to go+-- here.++-- | Create a transformation which performs a rotation about the local+-- origin by the given angle. See also 'rotate'.+rotation :: Floating n => Angle n -> Transformation V2 n+rotation theta = fromLinear r (linv r)+ where+ c = cosA theta+ s = sinA theta+ r = rot c s <-> rot c (-s)+ rot co si (V2 x y) = V2 (co * x - si * y)+ (si * x + co * y)++-- | Rotate about the local origin by the given angle. Positive angles+-- correspond to counterclockwise rotation, negative to+-- clockwise. The angle can be expressed using any of the 'Iso's on+-- 'Angle'. For example, @rotate (1\/4 \@\@ 'turn')@, @rotate+-- (tau\/4 \@\@ rad)@, and @rotate (90 \@\@ deg)@ all+-- represent the same transformation, namely, a counterclockwise+-- rotation by a right angle. To rotate about some point other than+-- the local origin, see 'rotateAbout'.+--+-- Note that writing @rotate (1\/4)@, with no 'Angle' constructor,+-- will yield an error since GHC cannot figure out which sort of+-- angle you want to use. In this common situation you can use+-- 'rotateBy', which interprets its argument as a number of turns.++rotate :: (InSpace V2 n t, Transformable t, Floating n) => Angle n -> t -> t+rotate = transform . rotation++-- | Angles act on other things by rotation.+instance (V t ~ V2, N t ~ n, Transformable t, Floating n)+ => Action (Angle n) t where+ act = rotate ------------------------------------------------------------ -- Polar Coordinates
src/Diagrams/Attributes.hs view
@@ -55,6 +55,12 @@ , Opacity, _Opacity , getOpacity, opacity, _opacity + , FillOpacity, _FillOpacity+ , getFillOpacity, fillOpacity, _fillOpacity++ , StrokeOpacity, _StrokeOpacity+ , getStrokeOpacity, strokeOpacity, _strokeOpacity+ -- ** Converting colors , colorToSRGBA, colorToRGBA @@ -344,6 +350,58 @@ -- | Lens onto the opacity in a style. _opacity :: Lens' (Style v n) Double _opacity = atAttr . mapping _Opacity . non 1++-- fill opacity --------------------------------------------------------++-- | Like 'Opacity', but set the opacity only for fills (as opposed to strokes).+-- As with 'Opacity', the fill opacity is a value between 1+-- (completely opaque, the default) and 0 (completely transparent),+-- and is multiplicative.+newtype FillOpacity = FillOpacity (Product Double)+ deriving (Typeable, Semigroup)+instance AttributeClass FillOpacity++_FillOpacity :: Iso' FillOpacity Double+_FillOpacity = iso getFillOpacity (FillOpacity . Product)++getFillOpacity :: FillOpacity -> Double+getFillOpacity (FillOpacity (Product d)) = d++-- | Multiply the fill opacity (see 'FillOpacity') by the given value. For+-- example, @fillOpacity 0.8@ means \"decrease this diagram's fill opacity to+-- 80% of its previous value\".+fillOpacity :: HasStyle a => Double -> a -> a+fillOpacity = applyAttr . FillOpacity . Product++-- | Lens onto the fill opacity in a style.+_fillOpacity :: Lens' (Style v n) Double+_fillOpacity = atAttr . mapping _FillOpacity . non 1++-- stroke opacity --------------------------------------------------------++-- | Like 'Opacity', but set the opacity only for strokes (as opposed to fills).+-- As with 'Opacity', the fill opacity is a value between 1+-- (completely opaque, the default) and 0 (completely transparent),+-- and is multiplicative.+newtype StrokeOpacity = StrokeOpacity (Product Double)+ deriving (Typeable, Semigroup)+instance AttributeClass StrokeOpacity++_StrokeOpacity :: Iso' StrokeOpacity Double+_StrokeOpacity = iso getStrokeOpacity (StrokeOpacity . Product)++getStrokeOpacity :: StrokeOpacity -> Double+getStrokeOpacity (StrokeOpacity (Product d)) = d++-- | Multiply the stroke opacity (see 'StrokeOpacity') by the given value. For+-- example, @strokeOpacity 0.8@ means \"decrease this diagram's+-- stroke opacity to 80% of its previous value\".+strokeOpacity :: HasStyle a => Double -> a -> a+strokeOpacity = applyAttr . StrokeOpacity . Product++-- | Lens onto the stroke opacity in a style.+_strokeOpacity :: Lens' (Style v n) Double+_strokeOpacity = atAttr . mapping _StrokeOpacity . non 1 ------------------------------------------------------------------------ -- Line stuff
src/Diagrams/Backend/CmdLine.hs view
@@ -76,7 +76,7 @@ import Control.Lens (Lens', makeLenses, (&), (.~), (^.)) import Diagrams.Animation import Diagrams.Attributes-import Diagrams.Core hiding (output, value)+import Diagrams.Core hiding (output) import Diagrams.Util import Options.Applicative
src/Diagrams/BoundingBox.hs view
@@ -38,7 +38,7 @@ , boxExtents, boxCenter , mCenterPoint, centerPoint , boxTransform, boxFit- , contains, contains', boundingBoxQuery+ , contains, contains' , inside, inside', outside, outside' -- * Operations on bounding boxes@@ -55,7 +55,8 @@ import Diagrams.Core import Diagrams.Core.Transform import Diagrams.Path-import Diagrams.ThreeD.Shapes+import Diagrams.Query+import Diagrams.ThreeD.Shapes (cube) import Diagrams.ThreeD.Types import Diagrams.TwoD.Path () import Diagrams.TwoD.Shapes@@ -118,8 +119,12 @@ = fromMaybeEmpty (NonEmptyBoundingBox . mapT (moveOriginTo p) <$> getCorners b) +instance (Additive v, Foldable v, Ord n)+ => HasQuery (BoundingBox v n) Any where+ getQuery bb = Query $ Any . contains bb+ instance (Metric v, Traversable v, OrderedField n)- => Enveloped (BoundingBox v n) where+ => Enveloped (BoundingBox v n) where getEnvelope = getEnvelope . getAllCorners -- Feels like cheating.@@ -130,9 +135,8 @@ . getEnvelope instance TypeableFloat n => Traced (BoundingBox V3 n) where- getTrace = getTrace- . ((`boxFit` cube) . boundingBox :: Envelope V3 n -> D V3 n)- . getEnvelope+ getTrace bb = foldMap (\tr -> getTrace $ transform tr cube) $+ boxTransform (boundingBox cube) bb instance (Metric v, Traversable v, OrderedField n) => Alignable (BoundingBox v n) where defaultBoundary = envelopeP@@ -256,9 +260,6 @@ check (l, h) = F.and (liftI2 (<) l p) && F.and (liftI2 (<) p h) -boundingBoxQuery :: (Additive v, Foldable v, Ord n) => BoundingBox v n -> Query v n Any-boundingBoxQuery bb = Query $ Any . contains bb- -- | Test whether the first bounding box is contained inside -- the second. inside :: (Additive v, Foldable v, Ord n) => BoundingBox v n -> BoundingBox v n -> Bool@@ -310,4 +311,3 @@ -- function is just an alias for @mappend@. union :: (Additive v, Ord n) => BoundingBox v n -> BoundingBox v n -> BoundingBox v n union = mappend-
src/Diagrams/Combinators.hs view
@@ -35,11 +35,13 @@ , cat, cat' , CatOpts(_catMethod, _sep), catMethod, sep , CatMethod(..)+ , composeAligned ) where import Control.Lens hiding (beside, ( # )) import Data.Default.Class+import Data.Maybe (fromJust) import Data.Monoid.Deletable (toDeletable) import Data.Monoid.MList (inj) import Data.Proxy@@ -49,6 +51,7 @@ import Diagrams.Core import Diagrams.Core.Types (QDiagram (QD)) import Diagrams.Direction+import Diagrams.Names (named) import Diagrams.Segment (straight) import Diagrams.Util @@ -351,3 +354,45 @@ cat' v (CatOpts { _catMethod = Distrib, _sep = s }) = position . zip (iterate (.+^ (s *^ signorm v)) origin)++-- | Compose a list of diagrams using the given composition function,+-- first aligning them all according to the given alignment, /but/+-- retain the local origin of the first diagram, as it would be if+-- the composition function were applied directly. That is,+-- @composeAligned algn comp@ is equivalent to @translate v . comp+-- . map algn@ for some appropriate translation vector @v@.+--+-- Unfortunately, this only works for diagrams (and not, say, paths)+-- because there is no most general type for alignment functions,+-- and no generic way to find out what an alignment function does to+-- the origin of things. (However, it should be possible to make a+-- version of this function that works /specifically/ on paths, if+-- such a thing were deemed useful.)+--+-- <<diagrams/src_Diagrams_Combinators_alignedEx1.svg#diagram=alignedEx1&width=400>>+--+-- > alignedEx1 = (hsep 2 # composeAligned alignT) (map circle [1,3,5,2])+-- > # showOrigin+-- > # frame 0.5+--+-- <<diagrams/src_Diagrams_Combinators_alignedEx2.svg#diagram=alignedEx2&width=400>>+--+-- > alignedEx2 = (mconcat # composeAligned alignTL) [circle 1, square 1, triangle 1, pentagon 1]+-- > # showOrigin+-- > # frame 0.1+composeAligned+ :: (Monoid' m, Floating n, Ord n, Metric v)+ => (QDiagram b v n m -> QDiagram b v n m) -- ^ Alignment function+ -> ([QDiagram b v n m] -> QDiagram b v n m) -- ^ Composition function+ -> ([QDiagram b v n m] -> QDiagram b v n m)+composeAligned _ combine [] = combine []+composeAligned algn comb (d:ds) = (comb $ map algn (d:ds)) # moveOriginTo l+ where+ mss = ( (() .>> d) -- qualify first to avoid stomping on an existing () name+ # named () -- Mark the origin+ # algn -- Apply the alignment function+ )+ -- then find out what happened to the origin+ ^. subMap . _Wrapped . Control.Lens.at (toName ())+ l = location . head . fromJust $ mss+ -- the fromJust is Justified since we put the () name in
src/Diagrams/CubicSpline.hs view
@@ -8,24 +8,35 @@ -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com ----- A /cubic spline/ is a smooth, connected sequence of cubic curves--- passing through a given sequence of points. This module provides--- the 'cubicSpline' method, which can be used to create closed or--- open cubic splines from a list of points. For access to the--- internals of the spline generation algorithm (including in--- particular a solver for cyclic tridiagonal systems of linear--- equations), see "Diagrams.CubicSpline.Internal".+-- A /cubic spline/ is a smooth, connected sequence of cubic curves.+-- This module provides two methods for constructing splines. --+-- The 'cubicSpline' method can be used to create closed or open cubic+-- splines from a list of points. The resulting splines /pass through/+-- all the control points, but depend on the control points in a+-- "global" way (that is, changing one control point may alter the+-- entire curve). For access to the internals of the spline+-- generation algorithm, see "Diagrams.CubicSpline.Internal".+--+-- 'bspline' creates a cubic B-spline, which starts and ends at the+-- first and last control points, but does not necessarily pass+-- through any of the other control points. It depends on the control+-- points in a "local" way, that is, changing one control point will+-- only affect a local portion of the curve near that control point.+-- ----------------------------------------------------------------------------- module Diagrams.CubicSpline ( -- * Constructing paths from cubic splines cubicSpline+ , BSpline+ , bspline ) where import Control.Lens (view) import Diagrams.Core+import Diagrams.CubicSpline.Boehm import Diagrams.CubicSpline.Internal import Diagrams.Located (Located, at, mapLoc) import Diagrams.Segment
+ src/Diagrams/CubicSpline/Boehm.hs view
@@ -0,0 +1,147 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE TypeFamilies #-}++-----------------------------------------------------------------------------+-- |+-- Module : Diagrams.CubicSpline.Boehm+-- Copyright : (c) 2015 diagrams-lib team (see LICENSE)+-- License : BSD-style (see LICENSE)+-- Maintainer : diagrams-discuss@googlegroups.com+--+-- Boehm's algorithm for converting a cubic B-spline into a sequence+-- of cubic Bezier curves.+--+-- See+--+-- * Thomas W. Sederberg, /An Introduction to B-Spline Curves/,+-- <http://web.archive.org/web/20120227050519/http://tom.cs.byu.edu/~455/bs.pdf>+--+-- * Lyle Ramshaw, /Blossoming: A Connect-the-Dots Approach to Splines/,+-- <http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-19.pdf>+--+-----------------------------------------------------------------------------+module Diagrams.CubicSpline.Boehm+ ( BSpline+ , bsplineToBeziers+ , bspline+ ) where++import Data.List (sort, tails)+import Diagrams.Core (N, Point, V, origin)+import Diagrams.Located (at, loc, unLoc)+import Diagrams.Segment (FixedSegment (..), fromFixedSeg)+import Diagrams.TrailLike (TrailLike, fromLocSegments)+import Diagrams.Util (iterateN)+import Linear.Vector (Additive, lerp)++type BSpline v n = [Point v n]++-- | @affineCombo a b t x y@ computes an affine combination of x and y+-- which lies at parameter t, if x has parameter a and y has parameter b.+-- The usual @lerp@ arises by giving x parameter 0 and y parameter 1.+affineCombo :: (Additive f, Fractional a) => a -> a -> a -> f a -> f a -> f a+affineCombo a b t x y = lerp ((t-a)/(b-a)) y x++-- | @windows k xs@ yields all the length-@k@ windows from @xs@, e.g.+-- @windows 3 [a,b,c,d,e] == [[a,b,c], [b,c,d], [c,d,e]]@.+windows :: Int -> [a] -> [[a]]+windows k = takeWhile ((==k) . length) . map (take k) . tails++-- | @extend k xs@ extends @xs@ on both ends by prepending @k@ copies+-- of its head and appending @k@ copies of its last element. For example,+-- @extend 2 [1..5] == [1,1,1,2,3,4,5,5,5]@.+extend :: Int -> [a] -> [a]+extend k xs = replicate k (head xs) ++ xs ++ replicate k (last xs)++-- | A "polar point" is a point along with three knot values.+-- We consider the "blossom" of a cubic spline, a 3-ary symmetric+-- polynomial; a polar point consists of 3 values paired with the+-- output of the blossom at those input values. Blossoms have nice+-- affine properties so this makes it easy to keep track of how+-- points may be combined to yield other points of interest.+--+-- Invariant: knot values are in nondecreasing order.+data PolarPt v n = PP { unPP :: Point v n, _knots :: [n] }++mkPolarPt :: Ord n => Point v n -> [n] -> PolarPt v n+mkPolarPt pt kts = PP pt (sort kts)++-- | Precondition: the knots of the two polar points overlap, like abc+-- and bcd. The @Int@ should be 0 or 1, indicating which knot to+-- replicate (0 means to replicate b, yielding bbc, 1 means to+-- replicate c, yielding bcc).+combine+ :: (Additive v, Fractional n, Ord n)+ => Int -> PolarPt v n -> PolarPt v n -> PolarPt v n+combine k (PP pt1 kts1) (PP pt2 kts2)+ = mkPolarPt+ (affineCombo (head kts1) (last kts2) newKt pt1 pt2)+ (newKt : drop 1 kts1)+ where+ newKt = kts2 !! k++-- | Convert a uniform cubic B-spline to a sequence of cubic beziers.+-- (/Uniform/ refers to the fact that the knots are assumed to be+-- evenly spaced, with no duplicates.) The knots at the end are+-- replicated so the cubic spline begins and ends at the first and+-- last control points, tangent to the line from the end control+-- point to the next.+bsplineToBeziers+ :: (Additive v, Fractional n, Num n, Ord n)+ => BSpline v n+ -> [FixedSegment v n]+bsplineToBeziers controls = beziers+ where+ n = length controls+ numKnots = n + 2+ knots = iterateN numKnots (+1/(fromIntegral numKnots - 1)) 0++ -- The control points are P(a,b,c), P(b,c,d), P(c,d,e), and so on.+ controls' = zipWith mkPolarPt (extend 2 controls) (windows 3 $ extend 2 knots)++ -- The bezier internal control points are affine combinations of+ -- the spline control points.+ bezierControls = map combineC (windows 2 controls')+ combineC [pabc, pbcd] = (combine 0 pabc pbcd, combine 1 pabc pbcd)+ combineC _ = error "combineC must be called on a list of length 2"++ -- The bezier end points are affine combinations of the bezier+ -- control points.+ bezierEnds = map combineE (windows 2 bezierControls)+ combineE [(_,pabb),(pbbc,_)] = combine 0 pabb pbbc+ combineE _ = error "combineE must be called on a list of length 2"++ -- Finally, we actually put together the generated bezier segments.+ beziers = zipWith mkBezier (drop 1 bezierControls) (windows 2 bezierEnds)+ where+ mkBezier (paab,pabb) [paaa,pbbb]+ = FCubic (unPP paaa) (unPP paab) (unPP pabb) (unPP pbbb)+ mkBezier _ _ = error "mkBezier must be called on a list of length 2"++ -- Note that the above algorithm works in any dimension but is+ -- very specific to *cubic* splines. This can of course be+ -- generalized to higher degree splines but keeping track of+ -- everything gets a bit more complicated; to be honest I am not+ -- quite sure how to do it.++-- | Generate a uniform cubic B-spline from the given control points.+-- The spline starts and ends at the first and last control points,+-- and is tangent to the line to the second(-to-last) control point.+-- It does not necessarily pass through any of the other control+-- points.+--+-- <<diagrams/src_Diagrams_CubicSpline_Boehm_bsplineEx.svg#diagram=bsplineEx&width=300>>+--+-- > pts = map p2 [(0,0), (2,3), (5,-2), (-4,1), (0,3)]+-- > spot = circle 0.2 # fc blue # lw none+-- > bsplineEx = mconcat+-- > [ position (zip pts (repeat spot))+-- > , bspline pts+-- > ]+-- > # frame 0.5++bspline :: (TrailLike t, V t ~ v, N t ~ n) => BSpline v n -> t+bspline = fromLocSegments . fixup . map fromFixedSeg . bsplineToBeziers+ where+ fixup [] = [] `at` origin+ fixup (b1:rest) = (unLoc b1 : map unLoc rest) `at` loc b1
src/Diagrams/Direction.hs view
@@ -27,8 +27,8 @@ import Diagrams.Core import Linear.Affine-import Linear.Vector import Linear.Metric+import Linear.Vector -------------------------------------------------------------------------------- -- Direction@@ -76,11 +76,10 @@ fromDir (Dir v) = signorm v -- | compute the positive angle between the two directions in their common plane-angleBetweenDirs :: (Metric v, Floating n)+angleBetweenDirs :: (Metric v, Floating n, Ord n) => Direction v n -> Direction v n -> Angle n angleBetweenDirs d1 d2 = angleBetween (fromDirection d1) (fromDirection d2) -- | @dirBetween p q@ returns the directions from @p@ to @q@ dirBetween :: (Additive v, Num n) => Point v n -> Point v n -> Direction v n dirBetween p q = dir $ p .-. q-
src/Diagrams/Located.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE DeriveGeneric #-} ----------------------------------------------------------------------------- -- | -- Module : Diagrams.Located@@ -34,10 +35,14 @@ import Linear.Affine import Linear.Vector +import Diagrams.Align import Diagrams.Core import Diagrams.Core.Transform import Diagrams.Parametric +import GHC.Generics (Generic)+import Data.Serialize (Serialize)+ -- | \"Located\" things, /i.e./ things with a concrete location: -- intuitively, @Located a ~ (Point, a)@. Wrapping a translationally -- invariant thing (/e.g./ a 'Segment' or 'Trail') in 'Located' pins@@ -62,8 +67,10 @@ -- a @Located a@, -- discarding the -- location.- }+ } deriving (Generic) +instance (Serialize a, Serialize (V a (N a))) => Serialize (Located a)+ infix 5 `at` -- | Construct a @Located a@ from a value of type @a@ and a location.@@ -143,6 +150,9 @@ -- translated to the location. instance (Traced a, Num (N a)) => Traced (Located a) where getTrace (Loc p a) = moveTo p (getTrace a)++instance Alignable a => Alignable (Located a) where+ defaultBoundary v = defaultBoundary v . unLoc instance Qualifiable a => Qualifiable (Located a) where n .>> Loc p a = Loc p (n .>> a)
src/Diagrams/Path.hs view
@@ -11,6 +11,7 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE DeriveGeneric #-} ----------------------------------------------------------------------------- -- | -- Module : Diagrams.Path@@ -81,6 +82,9 @@ import Linear.Metric import Linear.Vector +import GHC.Generics (Generic)+import Data.Serialize (Serialize)+ ------------------------------------------------------------ -- Paths ------------------------------------------------- ------------------------------------------------------------@@ -90,12 +94,16 @@ -- and they form a monoid under /superposition/ (placing one path on -- top of another) rather than concatenation. newtype Path v n = Path [Located (Trail v n)]- deriving (Semigroup, Monoid+ deriving (Semigroup, Monoid, Generic #if __GLASGOW_HASKELL__ >= 707 , Typeable #endif ) +-- instance (OrderedField n, Metric v, Serialize (v n), Serialize (V n (N n))) =>+instance (OrderedField n, Metric v, Serialize (v n), Serialize (V (v n) (N (v n)))) =>+ Serialize (Path v n)+ #if __GLASGOW_HASKELL__ < 707 -- This should really be Typeable2 Path but since Path has kind -- (* -> *) -> * -> *@@ -188,6 +196,9 @@ instance ToPath (Trail v n) where toPath = pathFromTrail++instance ToPath (Trail' l v n) where+ toPath t = Path [Trail t `at` origin] instance ToPath (Located (Trail v n)) where toPath = pathFromLocTrail
src/Diagrams/Query.hs view
@@ -1,3 +1,7 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE MultiParamTypeClasses #-} ----------------------------------------------------------------------------- -- | -- Module : Diagrams.Query@@ -12,9 +16,78 @@ ----------------------------------------------------------------------------- module Diagrams.Query- ( Query(..), query, sample, value, resetValue, clearValue+ ( -- * Queries+ Query(..)+ , HasQuery (..)+ , sample+ , inquire - ) where+ -- ** Queries on diagrams+ , query+ , value+ , resetValue+ , clearValue+ ) where +import Data.Monoid+ import Diagrams.Core++-- | Types which can answer a 'Query' about points inside the geometric+-- object.+--+-- If @t@ and @m@ are both a 'Semigroup's, 'getQuery' should satisfy+--+-- @+-- 'getQuery' (t1 <> t2) = 'getQuery' t1 <> 'getQuery' t2+-- @+class HasQuery t m | t -> m where+ -- | Extract the query of an object.+ getQuery :: t -> Query (V t) (N t) m++instance HasQuery (Query v n m) m where+ getQuery = id++instance Monoid m => HasQuery (QDiagram b v n m) m where+ getQuery = query++-- | Test if a point is not equal to 'mempty'.+--+-- @+-- 'inquire' :: 'QDiagram' b v n 'Any' -> 'Point' v n -> 'Bool'+-- 'inquire' :: 'Query' v n 'Any' -> 'Point' v n -> 'Bool'+-- 'inquire' :: 'Diagrams.BoundingBox.BoundingBox' v n -> 'Point' v n -> 'Bool'+-- @+inquire :: HasQuery t Any => t -> Point (V t) (N t) -> Bool+inquire t = getAny . sample t++-- | Sample a diagram's query function at a given point.+--+-- @+-- 'sample' :: 'QDiagram' b v n m -> 'Point' v n -> m+-- 'sample' :: 'Query' v n m -> 'Point' v n -> m+-- 'sample' :: 'Diagrams.BoundingBox.BoundingBox' v n -> 'Point' v n -> 'Any'+-- 'sample' :: 'Diagrams.Path.Path' 'V2' 'Double' -> 'Point' v n -> 'Diagrams.TwoD.Path.Crossings'+-- @+sample :: HasQuery t m => t -> Point (V t) (N t) -> m+sample = runQuery . getQuery++-- | Set the query value for 'True' points in a diagram (/i.e./ points+-- \"inquire\" the diagram); 'False' points will be set to 'mempty'.+value :: Monoid m => m -> QDiagram b v n Any -> QDiagram b v n m+value m = fmap fromAny+ where fromAny (Any True) = m+ fromAny (Any False) = mempty++-- | Reset the query values of a diagram to @True@/@False@: any values+-- equal to 'mempty' are set to 'False'; any other values are set to+-- 'True'.+resetValue :: (Eq m, Monoid m) => QDiagram b v n m -> QDiagram b v n Any+resetValue = fmap toAny+ where toAny m | m == mempty = Any False+ | otherwise = Any True++-- | Set all the query values of a diagram to 'False'.+clearValue :: QDiagram b v n m -> QDiagram b v n Any+clearValue = fmap (const (Any False))
src/Diagrams/Segment.hs view
@@ -82,6 +82,8 @@ import Diagrams.Parametric import Diagrams.Solve.Polynomial +import Data.Serialize (Serialize)+import qualified Data.Serialize as Serialize ------------------------------------------------------------ -- Open/closed type tags ---------------------------------@@ -580,3 +582,48 @@ *: () +------------------------------------------------------------+-- Serialize instances+------------------------------------------------------------++instance (Serialize (v n)) => Serialize (Segment Open v n) where+ {-# INLINE put #-}+ put segment = case segment of+ Linear OffsetOpen -> Serialize.put True+ Cubic v w OffsetOpen -> do+ Serialize.put False+ Serialize.put v+ Serialize.put w++ {-# INLINE get #-}+ get = do+ isLinear <- Serialize.get+ case isLinear of+ True -> return (Linear OffsetOpen)+ False -> do+ v <- Serialize.get+ w <- Serialize.get+ return (Cubic v w OffsetOpen)++instance (Serialize (v n)) => Serialize (Segment Closed v n) where+ {-# INLINE put #-}+ put segment = case segment of+ Linear (OffsetClosed z) -> do+ Serialize.put z+ Serialize.put True+ Cubic v w (OffsetClosed z) -> do+ Serialize.put z+ Serialize.put False+ Serialize.put v+ Serialize.put w++ {-# INLINE get #-}+ get = do+ z <- Serialize.get+ isLinear <- Serialize.get+ case isLinear of+ True -> return (Linear (OffsetClosed z))+ False -> do+ v <- Serialize.get+ w <- Serialize.get+ return (Cubic v w (OffsetClosed z))
src/Diagrams/ThreeD.hs view
@@ -4,7 +4,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Diagrams.ThreeD--- Copyright : (c) 2013 diagrams-lib team (see LICENSE)+-- Copyright : (c) 2013-2015 diagrams-lib team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -40,17 +40,16 @@ -- highlights. ----------------------------------------------------------------------------- module Diagrams.ThreeD- (- module Diagrams.ThreeD.Align- , module Diagrams.ThreeD.Attributes- , module Diagrams.ThreeD.Camera- , module Diagrams.ThreeD.Deform- , module Diagrams.ThreeD.Light- , module Diagrams.ThreeD.Shapes- , module Diagrams.ThreeD.Transform- , module Diagrams.ThreeD.Types- , module Diagrams.ThreeD.Vector- ) where+ ( module Diagrams.ThreeD.Align+ , module Diagrams.ThreeD.Attributes+ , module Diagrams.ThreeD.Camera+ , module Diagrams.ThreeD.Deform+ , module Diagrams.ThreeD.Light+ , module Diagrams.ThreeD.Shapes+ , module Diagrams.ThreeD.Transform+ , module Diagrams.ThreeD.Types+ , module Diagrams.ThreeD.Vector+ ) where import Diagrams.ThreeD.Align import Diagrams.ThreeD.Attributes@@ -61,4 +60,3 @@ import Diagrams.ThreeD.Transform import Diagrams.ThreeD.Types import Diagrams.ThreeD.Vector-
src/Diagrams/ThreeD/Attributes.hs view
@@ -1,9 +1,9 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE MultiParamTypeClasses #-} ----------------------------------------------------------------------------- -- | -- Module : Diagrams.ThreeD.Attributes@@ -38,7 +38,7 @@ -- | @SurfaceColor@ is the inherent pigment of an object, assumed to -- be opaque. newtype SurfaceColor = SurfaceColor (Last (Colour Double))- deriving (Typeable, Semigroup)+ deriving (Typeable, Semigroup, Show) instance AttributeClass SurfaceColor @@ -59,7 +59,7 @@ -- Attribute. For physical reasonableness, @Diffuse@ should have a -- value between 0 and 1; this is not checked. newtype Diffuse = Diffuse (Last Double)- deriving (Typeable, Semigroup)+ deriving (Typeable, Semigroup, Show) instance AttributeClass Diffuse @@ -82,7 +82,7 @@ -- indirect lighting incident on that object and the diffuse -- reflectance. newtype Ambient = Ambient (Last Double)- deriving (Typeable, Semigroup)+ deriving (Typeable, Semigroup, Show) instance AttributeClass Ambient @@ -107,12 +107,12 @@ data Specular = Specular { _specularIntensity :: Double , _specularSize :: Double- }+ } deriving Show makeLenses ''Specular newtype Highlight = Highlight (Last Specular)- deriving (Typeable, Semigroup)+ deriving (Typeable, Semigroup, Show) instance AttributeClass Highlight @@ -136,4 +136,3 @@ -- 'Specular', setting this will do nothing. highlightSize :: Traversal' (Style v n) Double highlightSize = _highlight . _Just . specularSize-
src/Diagrams/ThreeD/Shapes.hs view
@@ -17,14 +17,32 @@ ----------------------------------------------------------------------------- module Diagrams.ThreeD.Shapes- (- Ellipsoid(..), sphere- , Box(..), cube- , Frustum(..) , frustum, cone, cylinder- ) where+ (+ -- * Skinned class+ Skinned(..) + -- * Basic 3D shapes+ , Ellipsoid(..)+ , sphere++ , Box(..)+ , cube++ , Frustum(..)+ , frustum+ , cone+ , cylinder++ -- * Constructive solid geometry+ , CSG(..)+ , union+ , intersection+ , difference+ ) where+ #if __GLASGOW_HASKELL__ < 710 import Control.Applicative+import Data.Foldable (foldMap) #endif import Control.Lens (review, (^.), _1) import Data.Typeable@@ -32,7 +50,9 @@ import Data.Semigroup import Diagrams.Angle import Diagrams.Core+import Diagrams.Core.Trace import Diagrams.Points+import Diagrams.Query import Diagrams.Solve.Polynomial import Diagrams.ThreeD.Types import Diagrams.ThreeD.Vector@@ -53,21 +73,20 @@ instance Fractional n => Renderable (Ellipsoid n) NullBackend where render _ _ = mempty +instance OrderedField n => Enveloped (Ellipsoid n) where+ getEnvelope (Ellipsoid tr) = transform tr . mkEnvelope $ \v -> 1 / norm v++instance OrderedField n => Traced (Ellipsoid n) where+ getTrace (Ellipsoid tr) = transform tr . mkTrace $ \(P p) v -> let+ a = v `dot` v+ b = 2 * (p `dot` v)+ c = (p `dot` p) - 1+ in+ mkSortedList $ quadForm a b c+ -- | A sphere of radius 1 with its center at the origin.-sphere :: (Typeable n, OrderedField n, Renderable (Ellipsoid n) b) => QDiagram b V3 n Any-sphere = mkQD (Prim $ Ellipsoid mempty)- (mkEnvelope sphereEnv)- (mkTrace sphereTrace)- mempty- (Query sphereQuery)- where- sphereEnv v = 1 / norm v- sphereTrace (P p) v = mkSortedList $ quadForm a b c- where- a = v `dot` v- b = 2 * (p `dot` v)- c = p `dot` (p - 1)- sphereQuery v = Any $ quadrance (v .-. origin) <= 1+sphere :: Num n => Ellipsoid n+sphere = Ellipsoid mempty data Box n = Box (Transformation V3 n) deriving Typeable@@ -76,36 +95,37 @@ type instance N (Box n) = n instance Fractional n => Transformable (Box n) where- transform t1 (Box t2) = Box (t1 <> t2)+ transform t1 (Box t2) = Box (t1 <> t2) instance Fractional n => Renderable (Box n) NullBackend where render _ _ = mempty --- | A cube with side length 1, in the positive octant, with one--- vertex at the origin.-cube :: (Typeable n, OrderedField n, Renderable (Box n) b) => QDiagram b V3 n Any-cube = mkQD (Prim $ Box mempty)- (mkEnvelope boxEnv)- (mkTrace boxTrace)- mempty- (Query boxQuery)- where- corners = mkR3 <$> [0,1] <*> [0,1] <*> [0,1]- boxEnv v = maximum (map (v `dot`) corners) / quadrance v- -- ts gives all intersections with the planes forming the box- -- filter keeps only those actually on the box surface- boxTrace p v = mkSortedList . filter (range . atT) $ ts where- (x0, y0, z0) = unp3 p- (vx, vy, vz) = unr3 v- intersections f d = case d of- 0 -> []- _ -> [-f/d, (1-f)/d]- ts = concat $ zipWith intersections [x0,y0,z0] [vx,vy,vz]- atT t = p .+^ (t*^v)+instance OrderedField n => Enveloped (Box n) where+ getEnvelope (Box tr) = transform tr . mkEnvelope $ \v ->+ maximum (map (v `dot`) corners) / quadrance v where+ corners = mkR3 <$> [0,1] <*> [0,1] <*> [0,1]++instance (Fractional n, Ord n) => Traced (Box n) where+ getTrace (Box tr) = transform tr . mkTrace $ \p v -> let+ (x0, y0, z0) = unp3 p+ (vx, vy, vz) = unr3 v+ intersections f d = case d of+ 0 -> []+ _ -> [-f/d, (1-f)/d]+ ts = concat $ zipWith intersections [x0,y0,z0] [vx,vy,vz]+ atT t = p .+^ (t*^v) range u = and [x >= 0, x <= 1, y >= 0, y <= 1, z >= 0, z <= 1] where (x, y, z) = unp3 u- boxQuery = Any . range+ in+ -- ts gives all intersections with the planes forming the box+ -- filter keeps only those actually on the box surface+ mkSortedList . filter (range . atT) $ ts where +-- | A cube with side length 1, in the positive octant, with one+-- vertex at the origin.+cube :: Num n => Box n+cube = Box mempty+ data Frustum n = Frustum n n (Transformation V3 n) deriving Typeable @@ -118,55 +138,190 @@ instance Fractional n => Renderable (Frustum n) NullBackend where render _ _ = mempty +instance (OrderedField n, RealFloat n) => Enveloped (Frustum n) where+ -- The plane containing v and the z axis intersects the frustum in a trapezoid+ -- Test the four corners of this trapezoid; one must determine the Envelope+ getEnvelope (Frustum r0 r1 tr) = transform tr . mkEnvelope $ \v ->let+ θ = v ^. _theta+ corners = [(r1,θ,1), (-r1,θ,1), (r0,θ,0), (-r0,θ,0)]+ in+ maximum . map (norm . project v . review r3CylindricalIso) $ corners++instance (RealFloat n, Ord n) => Traced (Frustum n) where+ -- The trace can intersect the sides of the cone or one of the end+ -- caps The sides are described by a quadric equation; substitute+ -- in the parametric form of the ray but disregard any+ -- intersections outside z = [0,1] Similarly, find intersections+ -- with the planes z=0, z=1, but disregard any r>r0, r>r1+ getTrace (Frustum r0 r1 tr) = transform tr . mkTrace $ \p v -> let+ (px, py, pz) = unp3 p+ (vx, vy, vz) = unr3 v+ ray t = p .+^ t *^ v+ dr = r1 - r0+ a = vx**2 + vy**2 - vz**2 * dr**2+ b = 2 * (px * vx + py * vy - (r0+pz*dr) * dr * vz)+ c = px**2 + py**2 - (r0 + dr*pz)**2+ zbounds t = ray t ^. _z >= 0+ && ray t ^. _z <= 1+ ends = concatMap cap [0,1]+ cap z = [ t | ray t ^. lensP . r3CylindricalIso . _1 < r0 + z * dr ]+ where+ t = (z - pz) / vz+ in+ mkSortedList $ filter zbounds (quadForm a b c) ++ ends+ -- | A frustum of a right circular cone. It has height 1 oriented -- along the positive z axis, and radii r0 and r1 at Z=0 and Z=1. -- 'cone' and 'cylinder' are special cases.-frustum :: (TypeableFloat n, Renderable (Frustum n) b) => n -> n -> QDiagram b V3 n Any-frustum r0 r1 = mkQD (Prim $ Frustum r0 r1 mempty)- (mkEnvelope frEnv)- (mkTrace frTrace)- mempty- (Query frQuery)- where- projectXY u = u ^-^ project unitZ u- frQuery p = Any $ x >= 0 && x <= 1 && a <= r where- (x, _, z) = unp3 p- r = r0 + (r1 - r0)*z- v = p .-. origin- a = norm $ projectXY v- -- The plane containing v and the z axis intersects the frustum in a trapezoid- -- Test the four corners of this trapezoid; one must determine the Envelope- frEnv v = maximum . map (norm . project v . review r3CylindricalIso) $ corners- where- θ = v ^. _theta- corners = [(r1,θ,1), (-r1,θ,1), (r0,θ,0), (-r0,θ,0)]- -- The trace can intersect the sides of the cone or one of the end- -- caps The sides are described by a quadric equation; substitute- -- in the parametric form of the ray but disregard any- -- intersections outside z = [0,1] Similarly, find intersections- -- with the planes z=0, z=1, but disregard any r>r0, r>r1- frTrace p v = mkSortedList $ filter zbounds (quadForm a b c) ++ ends- where- (px, py, pz) = unp3 p- (vx, vy, vz) = unr3 v- ray t = p .+^ t *^ v- dr = r1 - r0- a = vx**2 + vy**2 - vz**2 * dr**2- b = 2 * (px * vx + py * vy - (r0+pz*dr) * dr * vz)- c = px**2 + py**2 - (r0 + dr*pz)**2- zbounds t = ray t ^. _z >= 0- && ray t ^. _z <= 1- ends = concatMap cap [0,1]- cap z = [ t | ray t ^. lensP . r3CylindricalIso . _1 < r0 + z * dr ]- where- t = (z - pz) / vz+frustum :: Num n => n -> n -> Frustum n+frustum r0 r1 = Frustum r0 r1 mempty -- | A cone with its base centered on the origin, with radius 1 at the -- base, height 1, and it's apex on the positive Z axis.-cone :: (TypeableFloat n, Renderable (Frustum n) b) => QDiagram b V3 n Any+cone :: Num n => Frustum n cone = frustum 1 0 -- | A circular cylinder of radius 1 with one end cap centered on the -- origin, and extending to Z=1.-cylinder :: (TypeableFloat n, Renderable (Frustum n) b) => QDiagram b V3 n Any+cylinder :: Num n => Frustum n cylinder = frustum 1 1++-- | Types which can be rendered as 3D Diagrams.+class Skinned t where+ skin :: (Renderable t b, N t ~ n, TypeableFloat n) => t -> QDiagram b V3 n Any++instance (Num n, Ord n) => HasQuery (Ellipsoid n) Any where+ getQuery (Ellipsoid tr) = transform tr $+ Query $ \v -> Any $ quadrance (v .-. origin) <= 1++instance OrderedField n => Skinned (Ellipsoid n) where+ skin s = mkQD (Prim s) (getEnvelope s) (getTrace s) mempty (getQuery s)++instance (Num n, Ord n) => HasQuery (Box n) Any where+ getQuery (Box tr) = transform tr . Query $ Any . range where+ range u = and [x >= 0, x <= 1, y >= 0, y <= 1, z >= 0, z <= 1] where+ (x, y, z) = unp3 u++instance OrderedField n => Skinned (Box n) where+ skin s = mkQD (Prim s) (getEnvelope s) (getTrace s) mempty (getQuery s)++instance (OrderedField n) => HasQuery (Frustum n) Any where+ getQuery (Frustum r0 r1 tr)= transform tr $+ Query $ \p -> let+ z = p^._z+ r = r0 + (r1 - r0)*z+ v = p .-. origin+ a = norm $ projectXY v+ projectXY u = u ^-^ project unitZ u+ in+ Any $ z >= 0 && z <= 1 && a <= r++instance Skinned (Frustum n) where+ skin s = mkQD (Prim s) (getEnvelope s) (getTrace s) mempty (getQuery s)++-- The CSG type needs to form a tree to be useful. This+-- implementation requires Backends to support all the included+-- primitives. If that turns out to be a problem, we have several+-- options:+-- a) accept runtime errors for unsupported primitives+-- b) carry the set of primitives in a row type in the CSG type+-- c) implement CSG in Haskell, so Backends supporting triangle meshes+-- can fall back to those.+-- (c) is worth doing anyway; I'm ambivalent about the others. -DMB++-- | A tree of Constructive Solid Geometry operations and the primitives that+-- can be used in them.+data CSG n+ = CsgEllipsoid (Ellipsoid n)+ | CsgBox (Box n)+ | CsgFrustum (Frustum n)+ | CsgUnion [CSG n]+ | CsgIntersection [CSG n]+ | CsgDifference (CSG n) (CSG n)+ deriving Typeable++type instance V (CSG n) = V3+type instance N (CSG n) = n++instance Fractional n => Transformable (CSG n) where+ transform t (CsgEllipsoid p) = CsgEllipsoid $ transform t p+ transform t (CsgBox p) = CsgBox $ transform t p+ transform t (CsgFrustum p) = CsgFrustum $ transform t p+ transform t (CsgUnion ps) = CsgUnion $ map (transform t) ps+ transform t (CsgIntersection ps) = CsgIntersection $ map (transform t) ps+ transform t (CsgDifference p1 p2) = CsgDifference (transform t p1) (transform t p2)++-- | The Envelope for an Intersection or Difference is simply the+-- Envelope of the Union. This is wrong but easy to implement.+instance RealFloat n => Enveloped (CSG n) where+ getEnvelope (CsgEllipsoid p) = getEnvelope p+ getEnvelope (CsgBox p) = getEnvelope p+ getEnvelope (CsgFrustum p) = getEnvelope p+ getEnvelope (CsgUnion ps) = foldMap getEnvelope ps+ getEnvelope (CsgIntersection ps) = foldMap getEnvelope ps+ getEnvelope (CsgDifference p1 p2) = getEnvelope p1 <> getEnvelope p2+-- TODO after implementing some approximation scheme, calculate+-- correct (approximate) envelopes for intersections and difference.++instance (Floating n, Ord n) => HasQuery (CSG n) Any where+ getQuery (CsgEllipsoid prim) = getQuery prim+ getQuery (CsgBox prim) = getQuery prim+ getQuery (CsgFrustum prim) = getQuery prim+ getQuery (CsgUnion ps) = foldMap getQuery ps+ getQuery (CsgIntersection ps) =+ Any . getAll <$> foldMap (fmap (All . getAny) . getQuery) ps+ getQuery (CsgDifference p1 p2) = inOut <$> getQuery p1 <*> getQuery p2 where+ inOut (Any a) (Any b) = Any $ a && not b++instance (RealFloat n, Ord n) => Traced (CSG n) where+ getTrace (CsgEllipsoid p) = getTrace p+ getTrace (CsgBox p) = getTrace p+ getTrace (CsgFrustum p) = getTrace p+ -- on surface of some p, and not inside any of the others+ getTrace (CsgUnion []) = mempty+ getTrace (CsgUnion (s:ss)) = mkTrace t where+ t pt v = onSortedList (filter $ without s) (appTrace (getTrace (CsgUnion ss)) pt v)+ <> onSortedList (filter $ without (CsgUnion ss)) (appTrace (getTrace s) pt v) where+ newPt dist = pt .+^ v ^* dist+ without prim = not . inquire prim . newPt+ -- on surface of some p, and inside all the others+ getTrace (CsgIntersection []) = mempty+ getTrace (CsgIntersection (s:ss)) = mkTrace t where+ t pt v = onSortedList (filter $ within s) (appTrace (getTrace (CsgIntersection ss)) pt v)+ <> onSortedList (filter $ within (CsgIntersection ss)) (appTrace (getTrace s) pt v) where+ newPt dist = pt .+^ v ^* dist+ within prim = inquire prim . newPt+ -- on surface of p1, outside p2, or on surface of p2, inside p1+ getTrace (CsgDifference s1 s2) = mkTrace t where+ t pt v = onSortedList (filter $ not . within s2) (appTrace (getTrace s1) pt v)+ <> onSortedList (filter $ within s1) (appTrace (getTrace s2) pt v) where+ newPt dist = pt .+^ v ^* dist+ within prim = inquire prim . newPt++instance (RealFloat n, Ord n) => Skinned (CSG n) where+ skin s = mkQD (Prim s) (getEnvelope s) (getTrace s) mempty (getQuery s)++-- | Types which can be included in CSG trees.+class CsgPrim a where+ toCsg :: a n -> CSG n++instance CsgPrim Ellipsoid where+ toCsg = CsgEllipsoid++instance CsgPrim Box where+ toCsg = CsgBox++instance CsgPrim Frustum where+ toCsg = CsgFrustum++instance CsgPrim CSG where+ toCsg = id++union :: (CsgPrim a, CsgPrim b) => a n -> b n -> CSG n+union a b = CsgUnion [toCsg a, toCsg b]++intersection :: (CsgPrim a, CsgPrim b) => a n -> b n -> CSG n+intersection a b = CsgIntersection [toCsg a, toCsg b]++difference :: (CsgPrim a, CsgPrim b) => a n -> b n -> CSG n+difference a b = CsgDifference (toCsg a) (toCsg b)
src/Diagrams/ThreeD/Transform.hs view
@@ -50,9 +50,9 @@ import Diagrams.Angle import Diagrams.Direction+import Diagrams.Points import Diagrams.ThreeD.Types import Diagrams.Transform-import Diagrams.Points import Control.Lens (view, (&), (*~), (.~), (//~)) import Data.Semigroup@@ -138,18 +138,18 @@ -- without tilting, it will be, otherwise if only tilting is -- necessary, no panning will occur. The tilt will always be between -- ± 1/4 turn.-pointAt :: Floating n+pointAt :: (Floating n, Ord n) => Direction V3 n -> Direction V3 n -> Direction V3 n -> Transformation V3 n pointAt a i f = pointAt' (fromDirection a) (fromDirection i) (fromDirection f) -- | pointAt' has the same behavior as 'pointAt', but takes vectors -- instead of directions.-pointAt' :: Floating n => V3 n -> V3 n -> V3 n -> Transformation V3 n+pointAt' :: (Floating n, Ord n) => V3 n -> V3 n -> V3 n -> Transformation V3 n pointAt' about initial final = pointAtUnit (signorm about) (signorm initial) (signorm final) -- | pointAtUnit has the same behavior as @pointAt@, but takes unit vectors.-pointAtUnit :: Floating n => V3 n -> V3 n -> V3 n -> Transformation V3 n+pointAtUnit :: (Floating n, Ord n) => V3 n -> V3 n -> V3 n -> Transformation V3 n pointAtUnit about initial final = tilt <> pan where -- rotating u by (signedAngle rel u v) about rel gives a vector in the direction of v signedAngle rel u v = signum (cross u v `dot` rel) *^ angleBetween u v
src/Diagrams/Trail.hs view
@@ -56,6 +56,7 @@ , Trail(..) , _Line, _Loop+ , _LocLine, _LocLoop , wrapTrail, wrapLine, wrapLoop , onTrail, onLine @@ -81,7 +82,7 @@ , trailPoints, linePoints, loopPoints , trailVertices', lineVertices', loopVertices' , trailVertices, lineVertices, loopVertices- , trailLocSegments, fixTrail+ , trailLocSegments, fixTrail, unfixTrail -- * Modifying trails @@ -102,7 +103,7 @@ -- ** Extracting segments - , GetSegment(..), getSegment+ , GetSegment(..), getSegment, GetSegmentCodomain(..) ) where @@ -127,6 +128,9 @@ import Linear.Metric import Linear.Vector +import Data.Serialize (Serialize)+import qualified Data.Serialize as Serialize+ -- $internals -- -- Most users of diagrams should not need to use anything in this@@ -554,9 +558,10 @@ -- trail, respectively. -- -- The codomain for 'GetSegment', /i.e./ the result you get from--- calling 'atParam', 'atStart', or 'atEnd', is @Maybe (v, Segment--- Closed v, AnIso' n n)@. @Nothing@ results if--- the trail is empty; otherwise, you get:+-- calling 'atParam', 'atStart', or 'atEnd', is+-- 'GetSegmentCodomain', which is a newtype wrapper around @Maybe+-- (v, Segment Closed v, AnIso' n n)@. @Nothing@ results if the+-- trail is empty; otherwise, you get: -- -- * the offset from the start of the trail to the beginning of the -- segment,@@ -766,6 +771,14 @@ _Loop :: Prism' (Trail v n) (Trail' Loop v n) _Loop = _Wrapped' . _Right +-- | Prism onto a 'Located' 'Line'.+_LocLine :: Prism' (Located (Trail v n)) (Located (Trail' Line v n))+_LocLine = prism' (mapLoc Trail) $ located (preview _Line)++-- | Prism onto a 'Located' 'Loop'.+_LocLoop :: Prism' (Located (Trail v n)) (Located (Trail' Loop v n))+_LocLoop = prism' (mapLoc Trail) $ located (preview _Loop)+ instance Rewrapped (Trail v n) (Trail v' n') instance Wrapped (Trail v n) where type Unwrapped (Trail v n) = Either (Trail' Line v n) (Trail' Loop v n)@@ -1237,10 +1250,30 @@ select xs bs = map fst $ filter snd (zip xs bs) -- | Convert a concretely located trail into a list of fixed segments.+-- 'unfixTrail' is almost its left inverse. fixTrail :: (Metric v, OrderedField n) => Located (Trail v n) -> [FixedSegment v n] fixTrail t = map mkFixedSeg (trailLocSegments t) +-- | Convert a list of fixed segments into a located trail. Note that+-- this may lose information: it throws away the locations of all+-- but the first @FixedSegment@. This does not matter precisely+-- when each @FixedSegment@ begins where the previous one ends.+--+-- This is almost left inverse to 'fixTrail', that is, @unfixTrail+-- . fixTrail == id@, except for the fact that @unfixTrail@ will+-- never yield a @Loop@. In the case of a loop, we instead have+-- @glueTrail . unfixTrail . fixTrail == id@. On the other hand, it+-- is not the case that @fixTrail . unfixTrail == id@ since+-- @unfixTrail@ may lose information.+unfixTrail+ :: (Metric v, Ord n, Floating n)+ => [FixedSegment v n] -> Located (Trail v n)+unfixTrail = mapLoc trailFromSegments . takeLoc . map fromFixedSeg+ where+ takeLoc [] = [] `at` origin+ takeLoc xs@(x:_) = map unLoc xs `at` loc x+ -- | Convert a concretely located trail into a list of located segments. trailLocSegments :: (Metric v, OrderedField n) => Located (Trail v n) -> [Located (Segment Closed v n)]@@ -1311,3 +1344,38 @@ instance (Metric v, OrderedField n) => Reversing (Located (Trail v n)) where reversing = reverseLocTrail +------------------------------------------------------------+-- Serialize instances+------------------------------------------------------------++instance (Serialize (v n), OrderedField n, Metric v) => Serialize (Trail v n) where+ {-# INLINE get #-}+ get = do+ isLine <- Serialize.get+ case isLine of+ True -> do+ segTree <- Serialize.get+ return (Trail (Line segTree))+ False -> do+ segTree <- Serialize.get+ segment <- Serialize.get+ return (Trail (Loop segTree segment))++ {-# INLINE put #-}+ put (Trail (Line segTree)) = do+ Serialize.put True+ Serialize.put segTree++ put (Trail (Loop segTree segment)) = do+ Serialize.put False+ Serialize.put segTree+ Serialize.put segment++instance (OrderedField n, Metric v, Serialize (v n)) => Serialize (SegTree v n) where+ {-# INLINE put #-}+ put (SegTree fingerTree) = Serialize.put (F.toList fingerTree)++ {-# INLINE get #-}+ get = do+ fingerTree <- Serialize.get+ return (SegTree (FT.fromList fingerTree))
src/Diagrams/TwoD.hs view
@@ -181,7 +181,9 @@ -- * Text , text, topLeftText, alignedText, baselineText- , font, italic, oblique, bold, fontSize+ , font, italic, oblique, fontSize+ , bold, bolder, lighter, thinWeight+ , ultraLight, light, mediumWeight, heavy, semiBold, ultraBold , _font, _fontSizeR, _fontSize , fontSizeO, fontSizeL, fontSizeN, fontSizeG @@ -213,6 +215,7 @@ -- ** Reflection , reflectionX, reflectX , reflectionY, reflectY+ , reflectionXY, reflectXY , reflectionAbout, reflectAbout -- ** Shears , shearingX, shearX@@ -247,7 +250,7 @@ , centerX, centerY, centerXY -- * Snugging- , snugL, snugR, snugT, snugB, snugTL, snugTR, snugBL, snugBR+ , snugL, snugR, snugT, snugB , snugX, snugY , snugCenterX, snugCenterY, snugCenterXY
src/Diagrams/TwoD/Align.hs view
@@ -29,7 +29,6 @@ -- ** Align by trace , snugL, snugR, snugT, snugB- , snugTL, snugTR, snugBL, snugBR -- * Relative alignment , alignX, snugX, alignY, snugY@@ -83,14 +82,6 @@ alignBL = alignB . alignL alignBR = alignB . alignR -snugTL, snugTR, snugBL, snugBR- :: (InSpace V2 n a, Fractional n, Alignable a, Traced a, HasOrigin a)- => a -> a-snugTL = snugT . snugL-snugTR = snugT . snugR-snugBL = snugB . snugL-snugBR = snugB . snugR- -- | @alignX@ and @snugX@ move the local origin horizontally as follows: -- -- * @alignX (-1)@ moves the local origin to the left edge of the boundary;@@ -140,5 +131,3 @@ snugCenterXY :: (InSpace v n a, R2 v, Fractional n, Alignable a, Traced a, HasOrigin a) => a -> a snugCenterXY = snugCenterX . snugCenterY--
src/Diagrams/TwoD/Arrow.hs view
@@ -134,7 +134,7 @@ import Diagrams.TwoD.Arrowheads import Diagrams.TwoD.Attributes import Diagrams.TwoD.Path (stroke, strokeT)-import Diagrams.TwoD.Transform (reflectY, rotate, translateX)+import Diagrams.TwoD.Transform (reflectY, translateX) import Diagrams.TwoD.Types import Diagrams.TwoD.Vector (unitX, unit_X) import Diagrams.Util (( # ))@@ -321,9 +321,10 @@ ht = stroke ht' # applyStyle (styProj opts) j = stroke j' # applyStyle (colorJoint (opts^.shaftStyle)) --- | Make a trail with the same angles and offset as an arrow with tail width--- tw, head width hw and shaft of tr, such that the magnituted of the shaft--- offset is size. Used for calculating the offset of an arrow.+-- | @spine tr tw hw sz@ makes a trail with the same angles and offset+-- as an arrow with tail width @t@w, head width @hw@ and shaft @tr@,+-- such that the magnitude of the shaft offset is @sz@. Used for+-- calculating the offset of an arrow. spine :: TypeableFloat n => Trail V2 n -> n -> n -> n -> Trail V2 n spine tr tw hw sz = tS <> tr # scale sz <> hS where@@ -332,8 +333,9 @@ hS = if hw > 0 then hSpine else mempty tS = if tw > 0 then tSpine else mempty --- | Calculate the amount required to scale a shaft trail so that an arrow with--- head width hw and tail width tw has offset t.+-- | @scaleFactor tr tw hw t@ calculates the amount required to scale+-- a shaft trail @tr@ so that an arrow with head width @hw@ and tail+-- width @tw@ has offset @t@. scaleFactor :: TypeableFloat n => Trail V2 n -> n -> n -> n -> n scaleFactor tr tw hw t @@ -423,7 +425,7 @@ opts' = opts & headStyle %~ maybe id fillTexture globalLC & tailStyle %~ maybe id fillTexture globalLC- & shaftStyle %~ applyStyle sty+ & shaftStyle %~ applyStyle sty . transform tr -- The head size, tail size, head gap, and tail gap are obtained -- from the style and converted to output units.
src/Diagrams/TwoD/Image.hs view
@@ -43,7 +43,9 @@ import Diagrams.Attributes (colorToSRGBA) import Diagrams.TwoD.Path (isInsideEvenOdd)+import Diagrams.Path (Path) import Diagrams.TwoD.Shapes (rect)+import Diagrams.Query import Diagrams.TwoD.Types import Linear.Affine@@ -72,6 +74,12 @@ type instance V (DImage n a) = V2 type instance N (DImage n a) = n +instance RealFloat n => HasQuery (DImage n a) Any where+ getQuery (DImage _ w h _) = -- transform t $+ Query $ \p -> Any (isInsideEvenOdd r p)+ where+ r = rectPath (fromIntegral w) (fromIntegral h)+ instance Fractional n => Transformable (DImage n a) where transform t1 (DImage iD w h t2) = DImage iD w h (t1 <> t2) @@ -86,10 +94,14 @@ (getEnvelope r) (getTrace r) mempty- (Query $ \p -> Any (isInsideEvenOdd p r))+ (Query $ \p -> Any (isInsideEvenOdd r p)) where- r = rect (fromIntegral w) (fromIntegral h)+ r = rectPath (fromIntegral w) (fromIntegral h)+ -- should we use the transform here? DImage _ w h _ = img++rectPath :: RealFloat n => n -> n -> Path V2 n+rectPath = rect -- | Use JuicyPixels to read an image in any format and wrap it in a 'DImage'. -- The width and height of the image are set to their actual values.
src/Diagrams/TwoD/Path.hs view
@@ -13,7 +13,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Diagrams.TwoD.Path--- Copyright : (c) 2011 diagrams-lib team (see LICENSE)+-- Copyright : (c) 2011-2015 diagrams-lib team (see LICENSE) -- License : BSD-style (see LICENSE) -- Maintainer : diagrams-discuss@googlegroups.com --@@ -25,35 +25,37 @@ ----------------------------------------------------------------------------- module Diagrams.TwoD.Path- ( -- * Constructing path-based diagrams+ ( -- * Constructing path-based diagrams - stroke, stroke'- , strokePath, strokeP, strokePath', strokeP'- , strokeTrail, strokeT, strokeTrail', strokeT'- , strokeLine, strokeLoop- , strokeLocTrail, strokeLocT, strokeLocLine, strokeLocLoop+ stroke, stroke'+ , strokePath, strokeP, strokePath', strokeP'+ , strokeTrail, strokeT, strokeTrail', strokeT'+ , strokeLine, strokeLoop+ , strokeLocTrail, strokeLocT, strokeLocLine, strokeLocLoop - -- ** Stroke options+ -- ** Stroke options - , FillRule(..)- , getFillRule, fillRule, _fillRule- , StrokeOpts(..), vertexNames, queryFillRule+ , FillRule(..)+ , getFillRule, fillRule, _fillRule+ , StrokeOpts(..), vertexNames, queryFillRule - -- ** Inside/outside testing+ -- ** Inside/outside testing - , isInsideWinding, isInsideEvenOdd+ , Crossings (..)+ , isInsideWinding+ , isInsideEvenOdd - -- * Clipping+ -- * Clipping - , Clip(..), _Clip, _clip- , clipBy, clipTo, clipped+ , Clip(..), _Clip, _clip+ , clipBy, clipTo, clipped - -- * Intersections+ -- * Intersections - , intersectPoints, intersectPoints'- , intersectPointsP, intersectPointsP'- , intersectPointsT, intersectPointsT'- ) where+ , intersectPoints, intersectPoints'+ , intersectPointsP, intersectPointsP'+ , intersectPointsT, intersectPointsT'+ ) where import Control.Applicative (liftA2) import Control.Lens hiding (at, transform)@@ -70,6 +72,7 @@ import Diagrams.Located (Located, mapLoc, unLoc) import Diagrams.Parametric import Diagrams.Path+import Diagrams.Query import Diagrams.Segment import Diagrams.Solve.Polynomial import Diagrams.Trail@@ -107,14 +110,14 @@ -- | Enumeration of algorithms or \"rules\" for determining which -- points lie in the interior of a (possibly self-intersecting) -- path.-data FillRule = Winding -- ^ Interior points are those with a nonzero- -- /winding/ /number/. See- -- <http://en.wikipedia.org/wiki/Nonzero-rule>.- | EvenOdd -- ^ Interior points are those where a ray- -- extended infinitely in a particular- -- direction crosses the path an odd number- -- of times. See- -- <http://en.wikipedia.org/wiki/Even-odd_rule>.+data FillRule+ = Winding -- ^ Interior points are those with a nonzero+ -- /winding/ /number/. See+ -- <http://en.wikipedia.org/wiki/Nonzero-rule>.+ | EvenOdd -- ^ Interior points are those where a ray+ -- extended infinitely in a particular direction crosses+ -- the path an odd number of times. See+ -- <http://en.wikipedia.org/wiki/Even-odd_rule>. deriving (Show, Typeable, Eq, Ord) instance AttributeClass FillRule@@ -147,14 +150,13 @@ -- -- The default value is the empty list. -vertexNames :: forall a a'. Lens (StrokeOpts a) (StrokeOpts a') [[a]] [[a']]+vertexNames :: Lens (StrokeOpts a) (StrokeOpts a') [[a]] [[a']] -- | The fill rule used for determining which points are inside the path. -- The default is 'Winding'. NOTE: for now, this only affects the resulting -- diagram's 'Query', /not/ how it will be drawn! To set the fill rule -- determining how it is to be drawn, use the 'fillRule' function.-queryFillRule :: forall a. Lens' (StrokeOpts a) FillRule-+queryFillRule :: Lens' (StrokeOpts a) FillRule instance Default (StrokeOpts a) where def = StrokeOpts@@ -167,6 +169,13 @@ -- -- See also 'stroke'', which takes an extra options record allowing -- its behaviour to be customized.+--+-- @+-- 'stroke' :: 'Path' 'V2' 'Double' -> 'Diagram' b+-- 'stroke' :: 'Located' ('Trail' 'V2' 'Double') -> 'Diagram' b+-- 'stroke' :: 'Located' ('Trail'' 'Loop' 'V2' 'Double') -> 'Diagram' b+-- 'stroke' :: 'Located' ('Trail'' 'Line' 'V2' 'Double') -> 'Diagram' b+-- @ stroke :: (InSpace V2 n t, ToPath t, TypeableFloat n, Renderable (Path V2 n) b) => t -> QDiagram b V2 n Any stroke = strokeP . toPath@@ -212,7 +221,7 @@ (fromNames . concat $ zipWith zip (opts^.vertexNames) ((map . map) subPoint (pathVertices p)) )- (Query $ Any . flip (runFillRule (opts^.queryFillRule)) p)+ (Query $ Any . (runFillRule (opts^.queryFillRule)) p) -- | 'stroke'' specialised to 'Path'. strokePath' :: (TypeableFloat n, Renderable (Path V2 n) b, IsName a)@@ -279,7 +288,7 @@ -- Inside/outside testing ------------------------------------------------------------ -runFillRule :: RealFloat n => FillRule -> Point V2 n -> Path V2 n -> Bool+runFillRule :: RealFloat n => FillRule -> Path V2 n -> Point V2 n -> Bool runFillRule Winding = isInsideWinding runFillRule EvenOdd = isInsideEvenOdd @@ -296,14 +305,57 @@ _fillRule :: Lens' (Style V2 n) FillRule _fillRule = atAttr . non def --- XXX link to more info on this+-- | The sum of /signed/ crossings of a path as we travel in the+-- positive x direction from a given point.+--+-- - A point is filled according to the 'Winding' fill rule, if the+-- number of 'Crossings' is non-zero (see 'isInsideWinding').+--+-- - A point is filled according to the 'EvenOdd' fill rule, if the+-- number of 'Crossings' is odd (see 'isInsideEvenOdd').+--+-- This is the 'HasQuery' result for 'Path's, 'Located' 'Trail's and+-- 'Located' 'Loops'.+--+-- @+-- 'sample' :: 'Path' 'V2' 'Double' -> 'Point' 'V2' 'Double' -> 'Crossings'+-- 'sample' :: 'Located' ('Trail' 'V2' 'Double') -> 'Point' 'V2' 'Double' -> 'Crossings'+-- 'sample' :: 'Located' ('Trail'' 'Loop' 'V2' 'Double') -> 'Point' 'V2' 'Double' -> 'Crossings'+-- @+--+-- Note that 'Line's have no inside or outside, so don't contribute+-- crossings+newtype Crossings = Crossings Int+ deriving (Show, Eq, Ord, Num, Enum, Real, Integral) +instance Semigroup Crossings where+ Crossings a <> Crossings b = Crossings (a + b)++instance Monoid Crossings where+ mempty = Crossings 0+ mappend = (<>)++instance RealFloat n => HasQuery (Located (Trail V2 n)) Crossings where+ getQuery trail = Query $ \p -> trailCrossings p trail++instance RealFloat n => HasQuery (Located (Trail' l V2 n)) Crossings where+ getQuery trail' = getQuery (mapLoc Trail trail')++instance RealFloat n => HasQuery (Path V2 n) Crossings where+ getQuery = foldMapOf each getQuery+ -- | Test whether the given point is inside the given path, -- by testing whether the point's /winding number/ is nonzero. Note -- that @False@ is /always/ returned for paths consisting of lines -- (as opposed to loops), regardless of the winding number.-isInsideWinding :: RealFloat n => Point V2 n -> Path V2 n -> Bool-isInsideWinding p = (/= 0) . crossings p+--+-- @+-- 'isInsideWinding' :: 'Path' 'V2' 'Double' -> 'Point' 'V2' 'Double' -> 'Bool'+-- 'isInsideWinding' :: 'Located' ('Trail' 'V2' 'Double') -> 'Point' 'V2' 'Double' -> 'Bool'+-- 'isInsideWinding' :: 'Located' ('Trail'' 'Loop' 'V2' 'Double') -> 'Point' 'V2' 'Double' -> 'Bool'+-- @+isInsideWinding :: HasQuery t Crossings => t -> Point (V t) (N t) -> Bool+isInsideWinding t = (/= 0) . sample t -- | Test whether the given point is inside the given path, -- by testing whether a ray extending from the point in the positive@@ -311,23 +363,24 @@ -- number of times. Note that @False@ is /always/ returned for -- paths consisting of lines (as opposed to loops), regardless of -- the number of crossings.-isInsideEvenOdd :: RealFloat n => Point V2 n -> Path V2 n -> Bool-isInsideEvenOdd p = odd . crossings p---- | Compute the sum of /signed/ crossings of a path as we travel in the--- positive x direction from a given point.-crossings :: RealFloat n => Point V2 n -> Path V2 n -> Int-crossings p = F.sum . map (trailCrossings p) . op Path+--+-- @+-- 'isInsideEvenOdd' :: 'Path' 'V2' 'Double' -> 'Point' 'V2' 'Double' -> 'Bool'+-- 'isInsideEvenOdd' :: 'Located' ('Trail' 'V2' 'Double') -> 'Point' 'V2' 'Double' -> 'Bool'+-- 'isInsideEvenOdd' :: 'Located' ('Trail'' 'Loop' 'V2' 'Double') -> 'Point' 'V2' 'Double' -> 'Bool'+-- @+isInsideEvenOdd :: HasQuery t Crossings => t -> Point (V t) (N t) -> Bool+isInsideEvenOdd t = odd . sample t -- | Compute the sum of signed crossings of a trail starting from the -- given point in the positive x direction.-trailCrossings :: RealFloat n => Point V2 n -> Located (Trail V2 n) -> Int+trailCrossings :: RealFloat n => Point V2 n -> Located (Trail V2 n) -> Crossings -- non-loop trails have no inside or outside, so don't contribute crossings trailCrossings _ t | not (isLoop (unLoc t)) = 0 trailCrossings p@(unp2 -> (x,y)) tr- = sum . map test $ fixTrail tr+ = F.foldMap test $ fixTrail tr where test (FLinear a@(unp2 -> (_,ay)) b@(unp2 -> (_,by))) | ay <= y && by > y && isLeft a b > 0 = 1@@ -383,6 +436,12 @@ instance (OrderedField n) => Transformable (Clip n) where transform t (Clip ps) = Clip (transform t ps) +-- | A point inside a clip if the point is in 'All' invididual clipping+-- paths.+instance RealFloat n => HasQuery (Clip n) All where+ getQuery (Clip paths) = Query $ \p ->+ F.foldMap (All . flip isInsideWinding p) paths+ _Clip :: Iso (Clip n) (Clip n') [Path V2 n] [Path V2 n'] _Clip = _Wrapped @@ -420,7 +479,7 @@ -- or on boundary of p, inside d onSortedList (filter dInside) (appTrace (getTrace p) pt v) where newPt dist = pt .+^ v ^* dist- pInside dDist = runFillRule Winding (newPt dDist) p+ pInside dDist = runFillRule Winding p (newPt dDist) dInside pDist = getAny . sample d $ newPt pDist -- | Clip a diagram to the clip path taking the envelope and trace of the clip@@ -436,7 +495,7 @@ -- | Find the intersect points of two objects that can be converted to a path. intersectPoints :: (InSpace V2 n t, SameSpace t s, ToPath t, ToPath s, OrderedField n) => t -> s -> [P2 n]-intersectPoints = intersectPoints' 1e-10+intersectPoints = intersectPoints' 1e-8 -- | Find the intersect points of two objects that can be converted to a path -- within the given tolerance.@@ -446,7 +505,7 @@ -- | Compute the intersect points between two paths. intersectPointsP :: OrderedField n => Path V2 n -> Path V2 n -> [P2 n]-intersectPointsP = intersectPointsP' 1e-10+intersectPointsP = intersectPointsP' 1e-8 -- | Compute the intersect points between two paths within given tolerance. intersectPointsP' :: OrderedField n => n -> Path V2 n -> Path V2 n -> [P2 n]@@ -457,7 +516,7 @@ -- | Compute the intersect points between two located trails. intersectPointsT :: OrderedField n => Located (Trail V2 n) -> Located (Trail V2 n) -> [P2 n]-intersectPointsT = intersectPointsT' 1e-10+intersectPointsT = intersectPointsT' 1e-8 -- | Compute the intersect points between two located trails within the given -- tolerance.
src/Diagrams/TwoD/Polygons.hs view
@@ -67,7 +67,6 @@ import Diagrams.Points (centroid) import Diagrams.Trail import Diagrams.TrailLike-import Diagrams.TwoD.Transform import Diagrams.TwoD.Types import Diagrams.TwoD.Vector (leftTurn, unitX, unitY, unit_Y) import Diagrams.Util (tau, ( # ))@@ -222,6 +221,8 @@ orient v = orientPoints v . trailVertices orientPoints :: OrderedField n => V2 n -> [Point V2 n] -> Transformation V2 n+orientPoints _ [] = mempty+orientPoints _ [_] = mempty orientPoints v xs = rotation a where (n1,x,n2) = maximumBy (comparing (distAlong v . sndOf3))
src/Diagrams/TwoD/Text.hs view
@@ -21,23 +21,31 @@ module Diagrams.TwoD.Text ( -- * Creating text diagrams Text(..), TextAlignment(..)- , text, topLeftText, alignedText, baselineText, mkText+ , text, topLeftText, alignedText, baselineText+ , mkText, mkText' -- * Text attributes+ -- ** Font family , Font(..), _Font , getFont, font, _font+ -- ** Font size , FontSize(..), _FontSize- , getFontSize, fontSizeM, fontSize+ , fontSize, recommendFontSize , fontSizeN, fontSizeO, fontSizeL, fontSizeG+ , getFontSize, fontSizeM , _fontSizeR, _fontSize, _fontSizeU+ -- ** Font slant , FontSlant(..) , getFontSlant, fontSlant, italic, oblique, _fontSlant+ -- ** Font weight , FontWeight(..)- , getFontWeight, fontWeight, bold, _fontWeight+ , getFontWeight, fontWeight, bold, bolder, lighter, _fontWeight+ , thinWeight, ultraLight, light, mediumWeight, heavy, semiBold, ultraBold+ ) where import Control.Lens hiding (transform)@@ -88,20 +96,28 @@ -- | @TextAlignment@ specifies the alignment of the text's origin. data TextAlignment n = BaselineText | BoxAlignedText n n --- | Make a text from a 'TextAlignment'.+-- | Make a text from a 'TextAlignment', recommending a fill colour of+-- 'black' and 'fontSize' of @'local' 1@. mkText :: (TypeableFloat n, Renderable (Text n) b) => TextAlignment n -> String -> QDiagram b V2 n Any-mkText a t = recommendFillColor black- -- See Note [recommendFillColor]- . recommendFontSize (local 1)- -- See Note [recommendFontSize]+mkText a = recommendFillColor black+ -- See Note [recommendFillColor]+ . recommendFontSize (local 1)+ -- See Note [recommendFontSize]+ . mkText' a - $ mkQD (Prim $ Text mempty a t)- (pointEnvelope origin)- mempty- mempty- mempty+-- | Make a text from a 'TextAlignment' without any default size or fill+-- colour. This is useful is you want to recommend your own using+-- 'recommendFillColor' or 'recommendFontSize'.+mkText' :: (TypeableFloat n, Renderable (Text n) b)+ => TextAlignment n -> String -> QDiagram b V2 n Any+mkText' a t = mkQD (Prim $ Text mempty a t)+ (pointEnvelope origin)+ mempty+ mempty+ mempty + -- ~~~~ Note [recommendFillColor] -- The reason we "recommend" a fill color of black instead of setting@@ -123,10 +139,11 @@ -- user explicitly sets a fill color later it should override this -- recommendation; normally, the innermost occurrence of an attribute -- would override all outer occurrences.------ The reason we "recommend" a fill color of black instead of setting--- it directly (or instead of simply not specifying a fill color at +-- ~~~~ Note [recommendFontSize]+-- The reason we "recommend" a font size is so any local scales get+-- recorded.+ -- | Create a primitive text diagram from the given string, with center -- alignment, equivalent to @'alignedText' 0.5 0.5@. --@@ -234,11 +251,18 @@ getFontSize (FontSize (Commit (Last s))) = s -- | Set the font size, that is, the size of the font's em-square as--- measured within the current local vector space. The default size--- is @1@.+-- measured within the current local vector space. The default size+-- is @local 1@ (which is applied by 'recommendFontSize'). fontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a fontSize = applyMAttr . fmap (FontSize . Commit . Last) +-- | 'Recommend' a font size. Any use of 'fontSize' above this will+-- overwrite any recommended size. This should only be used with+-- 'mkText'', other text functions already has a recommended font+-- size so this will be ignored.+recommendFontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a+recommendFontSize = applyMAttr . fmap (FontSize . Recommend . Last)+ -- | A convenient synonym for 'fontSize (Global w)'. fontSizeG :: (N a ~ n, Typeable n, Num n, HasStyle a) => n -> a -> a fontSizeG = fontSize . global@@ -259,9 +283,6 @@ fontSizeM :: (N a ~ n, Typeable n, HasStyle a) => FontSizeM n -> a -> a fontSizeM = applyMAttr -recommendFontSize :: (N a ~ n, Typeable n, HasStyle a) => Measure n -> a -> a-recommendFontSize = applyMAttr . fmap (FontSize . Recommend . Last)- _fontSizeR :: (Typeable n, OrderedField n) => Lens' (Style v n) (Measured n (Recommend n)) _fontSizeR = atMAttr . anon def (const False) . _FontSizeM @@ -321,7 +342,17 @@ -- @FontWeightA@ attributes override outer ones. data FontWeight = FontWeightNormal | FontWeightBold- deriving (Eq, Ord, Show, Typeable)+ | FontWeightBolder+ | FontWeightLighter+ | FontWeightThin+ | FontWeightUltraLight+ | FontWeightLight+ | FontWeightMedium+ | FontWeightSemiBold+ | FontWeightUltraBold+ | FontWeightHeavy+ deriving (Eq,+ Ord, Show, Typeable) instance AttributeClass FontWeight @@ -336,7 +367,7 @@ getFontWeight :: FontWeight -> FontWeight getFontWeight = id --- | Specify the weight (normal or bold) that should be+-- | Specify the weight (normal, bolder, lighter or bold) that should be -- used for all text within a diagram. See also 'bold' -- for a useful special case. fontWeight :: HasStyle a => FontWeight -> a -> a@@ -345,6 +376,42 @@ -- | Set all text using a bold font weight. bold :: HasStyle a => a -> a bold = fontWeight FontWeightBold++-- | Set all text using a thin font weight.+thinWeight :: HasStyle a => a -> a+thinWeight = fontWeight FontWeightThin++-- | Set all text using a extra light font weight.+ultraLight :: HasStyle a => a -> a+ultraLight = fontWeight FontWeightUltraLight++-- | Set all text using a light font weight.+light :: HasStyle a => a -> a+light = fontWeight FontWeightLight++-- | Set all text using a medium font weight.+mediumWeight :: HasStyle a => a -> a+mediumWeight = fontWeight FontWeightMedium++-- | Set all text using a semi-bold font weight.+semiBold :: HasStyle a => a -> a+semiBold = fontWeight FontWeightSemiBold++-- | Set all text using an ultra-bold font weight.+ultraBold :: HasStyle a => a -> a+ultraBold = fontWeight FontWeightUltraBold++-- | Set all text using a heavy/black font weight.+heavy :: HasStyle a => a -> a+heavy = fontWeight FontWeightHeavy++-- | Set all text to be bolder than the inherited font weight.+bolder :: HasStyle a => a -> a+bolder = fontWeight FontWeightBolder++-- | Set all text to be lighter than the inherited font weight.+lighter :: HasStyle a => a -> a+lighter = fontWeight FontWeightLighter -- | Lens onto the font weight in a style. _fontWeight :: Lens' (Style v n) FontWeight
src/Diagrams/TwoD/Transform.hs view
@@ -23,7 +23,6 @@ T2 -- * Rotation , rotation, rotate, rotateBy, rotated- , rotationAround, rotateAround , rotationTo, rotateTo @@ -43,6 +42,7 @@ -- * Reflection , reflectionX, reflectX , reflectionY, reflectY+ , reflectionXY, reflectXY , reflectionAbout, reflectAbout -- * Shears@@ -63,34 +63,12 @@ import Data.Semigroup import Linear.Affine+import Linear.V2 import Linear.Vector -- Rotation ------------------------------------------------ --- | Create a transformation which performs a rotation about the local--- origin by the given angle. See also 'rotate'.-rotation :: Floating n => Angle n -> T2 n-rotation theta = fromLinear r (linv r)- where- r = rot theta <-> rot (negated theta)- rot th (V2 x y) = V2 (cosA th * x - sinA th * y)- (sinA th * x + cosA th * y)---- | Rotate about the local origin by the given angle. Positive angles--- correspond to counterclockwise rotation, negative to--- clockwise. The angle can be expressed using any of the 'Iso's on--- 'Angle'. For example, @rotate (1\/4 \@\@ 'turn')@, @rotate--- (tau\/4 \@\@ rad)@, and @rotate (90 \@\@ deg)@ all--- represent the same transformation, namely, a counterclockwise--- rotation by a right angle. To rotate about some point other than--- the local origin, see 'rotateAbout'.------ Note that writing @rotate (1\/4)@, with no 'Angle' constructor,--- will yield an error since GHC cannot figure out which sort of--- angle you want to use. In this common situation you can use--- 'rotateBy', which interprets its argument as a number of turns.-rotate :: (InSpace V2 n t, Transformable t, Floating n) => Angle n -> t -> t-rotate = transform . rotation+-- For the definitions of 'rotation' and 'rotate', see Diagrams.Angle. -- | A synonym for 'rotate', interpreting its argument in units of -- turns; it can be more convenient to write @rotateBy (1\/4)@ than@@ -205,6 +183,8 @@ => n -> t -> t translateY = transform . translationY ++ -- Reflection ---------------------------------------------- -- | Construct a transformation which flips a diagram from left to@@ -227,13 +207,25 @@ reflectY :: (InSpace v n t, R2 v, Transformable t) => t -> t reflectY = transform reflectionY +-- | Construct a transformation which flips the diagram about x=y, i.e.+-- sends the point (x,y) to (y,x).+reflectionXY :: (Additive v, R2 v, Num n) => Transformation v n+reflectionXY = fromSymmetric $ (_xy %~ view _yx) <-> (_xy %~ view _yx)++-- | Flips the diagram about x=y, i.e. send the point (x,y) to (y,x).+reflectXY :: (InSpace v n t, R2 v, Transformable t) => t -> t+reflectXY = transform reflectionXY+ -- | @reflectionAbout p d@ is a reflection in the line determined by -- the point @p@ and direction @d@. reflectionAbout :: OrderedField n => P2 n -> Direction V2 n -> T2 n reflectionAbout p d =- conjugate (rotationTo d <> translation (origin .-. p))+ conjugate (rotationTo (reflectY d) <> translation (origin .-. p)) reflectionY +++ -- | @reflectAbout p d@ reflects a diagram in the line determined by -- the point @p@ and direction @d@. reflectAbout :: (InSpace V2 n t, OrderedField n, Transformable t)@@ -280,4 +272,3 @@ -- @(1,0)@ to @(1,d)@. shearY :: (InSpace V2 n t, Transformable t) => n -> t -> t shearY = transform . shearingY-
src/Diagrams/TwoD/Vector.hs view
@@ -79,8 +79,14 @@ cross2 :: Num n => V2 n -> V2 n -> n cross2 (V2 x1 y1) (V2 x2 y2) = x1 * y2 - y1 * x2 +-- | Signed angle between two vectors. Currently defined as+--+-- @+-- signedAngleBetween u v = (u ^. _theta) ^-^ (v ^. _theta)+-- @ signedAngleBetween :: RealFloat n => V2 n -> V2 n -> Angle n signedAngleBetween u v = (u ^. _theta) ^-^ (v ^. _theta) +-- | Same as 'signedAngleBetween' but for 'Directions's. signedAngleBetweenDirs :: RealFloat n => Direction V2 n -> Direction V2 n -> Angle n signedAngleBetweenDirs u v = (u ^. _theta) ^-^ (v ^. _theta)
+ test/Diagrams/Test/Angle.hs view
@@ -0,0 +1,29 @@+-- |++module Diagrams.Test.Angle where+++import Test.Tasty+import Test.Tasty.QuickCheck+import Diagrams.Prelude+import Instances++tests :: TestTree+tests = testGroup "Angle" [+ testProperty "2π radians per turn" $+ \θ -> θ^.rad =~ θ^.turn*2*(pi :: Double)+ , testProperty "360 degrees per turn" $+ \θ -> θ^.deg =~ θ^.turn*(360 :: Double)+ , testProperty "Angle vector addition is commutative" $+ \θ φ -> (θ :: Angle Double) ^+^ φ =~ φ ^+^ θ+ , testProperty "Angle subtraction is the inverse of addition" $+ \θ φ -> (θ :: Angle Double) ^+^ φ ^-^ φ =~ θ+ , testProperty "Angle vector negation squared is identity" $+ \θ -> negated (negated (θ :: Angle Double)) =~ θ+ , testProperty "A negated angle is the additive inverse of the original" $+ \θ -> (θ :: Angle Double) ^+^ (negated θ) =~ 0@@turn+ , testProperty "A negated angle is the additive inverse of the original" $+ \θ -> (θ :: Angle Double) ^+^ (negated θ) =~ 0@@turn+++ ]
+ test/Diagrams/Test/Direction.hs view
@@ -0,0 +1,34 @@+-- |++module Diagrams.Test.Direction where+++import Diagrams.Direction+import Diagrams.Prelude+import Instances+import Test.Tasty+import Test.Tasty.QuickCheck++tests :: TestTree+tests = testGroup "Direction" [+ testProperty "Length does not effect from direction" $+ \(Positive f) (NonZero v) -> fromDirection(dir ((v :: V2 Double) ^* (f+0.001))) =~ fromDirection(dir v)+ , testProperty "HasTheta subtraction yeilds same result as anglebetween" $+ (anglebetsub)+ , testProperty "anglebetweenDirs is commutative" $+ \a b -> angleBetweenDirs (a :: Direction V2 Double) b =~ angleBetweenDirs b a+ , testProperty "fromdirection does not effect angleBetweenDirs" $+ \a b -> angleBetween (fromDirection (a :: Direction V2 Double)) (fromDirection b) =~ angleBetweenDirs a b++++ ]++if' :: Bool -> a -> a -> a+if' True x _ = x+if' False _ y = y++anglebetsub :: Direction V2 Double -> Direction V2 Double -> Bool+anglebetsub a b = (if' (abs (a ^. _theta^.rad - b ^. _theta^.rad) < pi)+ (abs ((a ^. _theta ^-^ b ^. _theta)^.rad))+ (2*pi - abs (a ^. _theta^.rad - b ^. _theta^.rad) ) =~ angleBetweenDirs a b ^.rad)
+ test/Diagrams/Test/Transform.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE FlexibleContexts #-}+++module Diagrams.Test.Transform where++import Test.Tasty+import Test.Tasty.QuickCheck+import Diagrams.Prelude+import Diagrams.Direction+import Instances++tests :: TestTree+tests = testGroup "Transform" [++ testProperty "rotating a vector by a number then its additive inverse will yield the original vector" $+ \θ a -> rotate ((θ * (-1)) @@ deg) (rotate ((θ :: Double) @@ deg) (a :: V2 Double)) =~ a+ , testProperty "under rotated allows scaling along an angle" $+ \θ f a -> under (rotated ((θ :: Double) @@ deg)) (scaleX (f :: Double)) (a :: V2 Double) == (rotate (negated (θ @@ deg)) . (scaleX f) . rotate (θ @@ deg)) a+ , testProperty "a rotation of 0 does nothing" $+ \a -> rotate (0 @@ deg) (a :: V2 Double) =~ a+ , testProperty "adding 360 degrees to a turn does nothing" $+ \c a -> rotate (((c :: Double) + 360) @@ deg) (a :: V2 Double) =~ rotate (c @@ deg) a+ , testProperty "over rotated allows scaling along x of a rotated shape" $+ \θ f a -> over (rotated ((θ :: Double) @@ deg)) (scaleX (f :: Double)) (a :: V2 Double) == (rotate (θ @@ deg) . (scaleX f) . rotate (negated (θ @@ deg))) a+ , testProperty "scaleX" $+ \f a b -> (scaleX (f :: Double)) (V2 (a :: Double) b) == V2 (a * f) b+ , testProperty "scaleY" $+ \f a b -> (scaleY (f :: Double)) (V2 (a :: Double) b) == V2 a (f * b)+ , testProperty "reflectX" $+ \a b -> reflectX (V2 (a :: Double) b) == V2 (a * (-1)) b+ , testProperty "reflectY" $+ \a b -> reflectY (V2 (a :: Double) b) == V2 a ((-1) * b)+ , testProperty "reflectXY" $+ \a b -> reflectXY (V2 (a :: Double) b) == V2 b a+ , testProperty "translate" $+ \a b c d -> translateX (a :: Double) (translateY b (P (V2 c d ))) == P (V2 (a + c) (b + d))+ , testProperty "shear" $+ \a b c d -> shearX (a :: Double) (shearY b (V2 c d)) == V2 ((c*b + d) * a + c) (c*b + d)+ , testProperty "(1,0) rotateTo some dir will return normalised dir" $+ \(NonZero a) b -> rotateTo (dir (V2 (a :: Double) b)) (V2 1 0) =~ signorm (V2 a b)+ , testProperty "rotates" $+ \a c -> rotate ((a :: Double)@@ deg) (c :: V2 Double) == rotate'' ((a :: Double)@@ deg) (c :: V2 Double) && rotate ((a :: Double)@@ deg) (c :: V2 Double) == rotate' ((a :: Double)@@ deg) (c :: V2 Double)+ , testProperty "reflectAbout works for a vector" $+ \a b c d e f -> reflectAbout (P (V2 (a :: Double) b)) (dir (V2 c d)) (V2 e f) =~ over (rotated (atan2A' d c)) reflectY (V2 e f)+ , testProperty "reflectAbout works for a point" $+ \a b c d e f -> reflectAbout (P (V2 (a :: Double) b)) (dir (V2 c d)) (P (V2 e f)) =~ translate (V2 a b) ((over (rotated (atan2A' d c)) reflectY) ((translate (V2 (-a) (-b)) ) (P (V2 e f))))+++ ]++--the original " '' " and a secondary " ' " rotate function for testing++rotation'' :: Floating n => Angle n -> T2 n+rotation'' theta = fromLinear r (linv r)+ where+ r = rot theta <-> rot (negated theta)+ rot th (V2 x y) = V2 (cosA th * x - sinA th * y)+ (sinA th * x + cosA th * y)++rotate'' :: (InSpace V2 n t, Transformable t, Floating n) => Angle n -> t -> t+rotate'' = transform . rotation''++rotation' :: Floating n => Angle n -> T2 n+rotation' theta = fromLinear r (linv r)+ where+ r = rot theta <-> rot (negated theta)+ rot th (V2 x y) = V2 (c * x - s * y)+ (s * x + c * y)+ where+ c = cosA th+ s = sinA th++rotate' :: (InSpace V2 n t, Transformable t, Floating n) => Angle n -> t -> t+rotate' = transform . rotation'
+ test/Diagrams/Test/TwoD.hs view
@@ -0,0 +1,53 @@+-- |++module Diagrams.Test.TwoD where++import Diagrams.Prelude+import Diagrams.Trail (linePoints)+import Instances+import Test.Tasty+import Test.Tasty.QuickCheck++newtype SmallAngle = SmallAngle (Angle Double)+ deriving (Eq, Ord, Show)++-- Generate random angles within a reasonably small range (+/- 5+-- turns).+instance Arbitrary SmallAngle where+ arbitrary = SmallAngle . (@@turn) <$> choose (-5, 5)++tests :: TestTree+tests = testGroup "TwoD"+ [ testGroup "TwoD.Arc" [+ testProperty "arc start point is at radius 1 in the starting direction" $ \d (SmallAngle a) ->+ pathVertices (arc d a :: Path V2 Double) ^? _head . _head =~ Just (origin .+^ fromDirection d )+ , testProperty "arc end point is at radius 1 in the ending direction" $ \d (SmallAngle a) ->+ pathVertices (arc d a :: Path V2 Double) ^? _head . _last =~ Just (origin .+^ fromDirection (rotate a d))+ ]+ , testGroup "TwoD.Types" [+ testProperty "R2 vector addition is commutative" $+ \u v -> (u :: V2 Double) ^+^ v =~ v ^+^ u+ , testProperty "R2 subtraction is the inverse of addition" $+ \u v -> u ^+^ v ^-^ v =~ (u :: V2 Double)+ , testProperty "R2 vector negation squared is identity" $+ \u -> negated (negated (u :: V2 Double)) =~ u+ ]+ , testGroup "cubicSpline" [+ testProperty "Open cubic spline interpolates all points" $+ \pts -> length pts > 1 ==> and (zipWith (=~) pts (cubicSpline False pts :: [P2 Double]))+ , testProperty "Closed cubic spline interpolates all points" $+ \pts -> length pts > 1 ==> and (zipWith (=~) pts (cubicSpline True pts :: [P2 Double]))+ ]+ , testGroup "Trail" [+ testProperty "glueLine . cutLoop === id" $+ \l -> glueLine (cutLoop l :: Trail' Line V2 Double) =~ l+ , testProperty "cutLoop ends at starting point" $+ \l -> let ps = linePoints (cutLoop (l :: Trail' Loop V2 Double) `at` origin) in (ps ^? _head) =~ (ps ^? _last)+ , testProperty "cutTrail makes a Line" $+ \t -> isLine (cutTrail (t :: Trail V2 Double))+ , testProperty "fromSegments . lineSegments === id" $+ \l -> fromSegments (lineSegments l) =~ (l :: Trail' Line V2 Double)+ , testProperty "lineSegments . fromSegments === id" $+ \segs -> lineSegments (fromSegments segs) =~ (segs :: [Segment Closed V2 Double])+ ]+ ]
+ test/Diagrams/Test/TwoD/Offset.hs view
@@ -0,0 +1,48 @@+module Diagrams.Test.TwoD.Offset+ (+ tests+ ) where++import Test.Tasty (TestTree)+import Test.Tasty.HUnit++import Diagrams.Prelude+import Diagrams.TwoD.Offset++tests :: [TestTree]+tests =+ [ testCase "line"+ (offsetTrailVertices+ [p2 (0, 0), p2 (1, 0)]+ [p2 (0, -1), p2 (1, -1)])+ , testCase "square"+ (offsetTrailVertices+ [p2 (0, 0), p2 (1, 0), p2 (1, 1), p2 (0, 1), p2 (0, 0)]+ [p2 (0, -1), p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, 0)])+ , testCase "square loop"+ (offsetTrailLoopVertices+ [p2 (0, 0), p2 (1, 0), p2 (1, 1), p2 (0, 1), p2 (0, 0)]+ [p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, -1)])+ , testCase "redundant line"+ (offsetTrailVertices+ [p2 (0, 0), p2 (0.5, 0), p2 (1, 0)]+ [p2 (0, -1), p2 (1, -1)])+ , testCase "redundant square"+ (offsetTrailVertices+ [p2 (0, 0), p2 (1, 0), p2 (1, 0.5), p2 (1, 1), p2 (0, 1), p2 (0, 0)]+ [p2 (0, -1), p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, 0)])+ , testCase "redundant square loop"+ (offsetTrailLoopVertices+ [p2 (0, 0), p2 (1, 0), p2 (1, 0.5), p2 (1, 1), p2 (0, 1), p2 (0, 0)]+ [p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, -1)])+ ]++offsetTrailVertices :: [Point V2 Double] -> [Point V2 Double] -> Assertion+offsetTrailVertices orig off =+ (trailVertices . offsetTrail 1 . fromVertices $ orig) @?= off++offsetTrailLoopVertices :: [Point V2 Double] -> [Point V2 Double] -> Assertion+offsetTrailLoopVertices orig off =+ (trailVertices . offsetTrail 1 . loopTrailFromVertices $ orig) @?= off+ where+ loopTrailFromVertices = (`at` origin) . wrapTrail . glueLine . lineFromVertices
− test/Diagrams/TwoD/OffsetTest.hs
@@ -1,48 +0,0 @@-module Diagrams.TwoD.OffsetTest- (- tests- ) where--import Test.Tasty (TestTree)-import Test.Tasty.HUnit--import Diagrams.Prelude-import Diagrams.TwoD.Offset--tests :: [TestTree]-tests =- [ testCase "line"- (offsetTrailVertices- [p2 (0, 0), p2 (1, 0)]- [p2 (0, -1), p2 (1, -1)])- , testCase "square"- (offsetTrailVertices- [p2 (0, 0), p2 (1, 0), p2 (1, 1), p2 (0, 1), p2 (0, 0)]- [p2 (0, -1), p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, 0)])- , testCase "square loop"- (offsetTrailLoopVertices- [p2 (0, 0), p2 (1, 0), p2 (1, 1), p2 (0, 1), p2 (0, 0)]- [p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, -1)])- , testCase "redundant line"- (offsetTrailVertices- [p2 (0, 0), p2 (0.5, 0), p2 (1, 0)]- [p2 (0, -1), p2 (1, -1)])- , testCase "redundant square"- (offsetTrailVertices- [p2 (0, 0), p2 (1, 0), p2 (1, 0.5), p2 (1, 1), p2 (0, 1), p2 (0, 0)]- [p2 (0, -1), p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, 0)])- , testCase "redundant square loop"- (offsetTrailLoopVertices- [p2 (0, 0), p2 (1, 0), p2 (1, 0.5), p2 (1, 1), p2 (0, 1), p2 (0, 0)]- [p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, -1)])- ]--offsetTrailVertices :: [Point V2 Double] -> [Point V2 Double] -> Assertion-offsetTrailVertices orig off =- (trailVertices . offsetTrail 1 . fromVertices $ orig) @?= off--offsetTrailLoopVertices :: [Point V2 Double] -> [Point V2 Double] -> Assertion-offsetTrailLoopVertices orig off =- (trailVertices . offsetTrail 1 . loopTrailFromVertices $ orig) @?= off- where- loopTrailFromVertices = (`at` origin) . wrapTrail . glueLine . lineFromVertices
+ test/Instances.hs view
@@ -0,0 +1,132 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ViewPatterns #-}++{-# OPTIONS_GHC -fno-warn-orphans #-}++-- | instances for QuickCheck Arbitrary and approximate equality++module Instances where++import Diagrams.Prelude+import Numeric.Extras+import Test.Tasty.QuickCheck++------------------------------------------------------------+ -- Approximate Comparison for Doubles, Points++epsilon :: Double+epsilon = 0.001++class Approx a where+ (=~) :: a -> a -> Bool++infix 4 =~++--instance (Fractional a, Ord a) => Approx a where+instance Approx Double where+ (=~) a b = abs (a - b) < epsilon++instance Approx Float where+ (=~) a b = abs (a - b) < 0.001++instance Approx n => Approx (V2 n) where+ z1 =~ z2 = (z1^._x) =~ (z2^._x) && (z1^._y) =~ (z2^._y)++instance Approx (v n) => Approx (Point v n) where+ p =~ q = view _Point p =~ view _Point q++instance (Approx n, RealExtras n) => Approx (Angle n) where+ a =~ b = normA (a^.rad) =~ normA (b^.rad) where+ normA ang = let ang' = ang `fmod` pi in if ang' >= 0 then ang' else ang'+pi++instance Approx n => Approx (Offset Closed V2 n) where+ OffsetClosed v0 =~ OffsetClosed v1 = v0 =~ v1++instance Approx n => Approx (Segment Closed V2 n) where+ Linear o0 =~ Linear o1 = o0 =~ o1+ Cubic c0 d0 o0 =~ Cubic c1 d1 o1 = c0 =~ c1 && d0 =~ d1 && o0 =~ o1+ _ =~ _ = False+ -- The above is conservative:+ -- Cubic never equals Linear even if they describe the same points++instance Approx n => Approx (Trail' Line V2 n) where+ l0 =~ l1 = and $ zipWith (=~) (lineSegments l0) (lineSegments l1)++instance Approx n => Approx (Trail' Loop V2 n) where+ l0 =~ l1 = fst (loopSegments l0) =~ fst (loopSegments l1)++instance (Approx n, Floating n, Ord n) => Approx (Trail V2 n) where+ t0 =~ t1 = and $ zipWith (=~) (trailSegments t0) (trailSegments t1)++instance (Approx a, Approx (Vn a), Num (N a), Additive (V a)) =>+ Approx (Located a) where+ a0 =~ a1 = (loc a0 .-. origin) =~ (loc a1 .-. origin) && unLoc a0 =~ unLoc a1++instance Approx a => Approx (Maybe a) where+ Nothing =~ Nothing = True+ Nothing =~ Just _ = False+ Just _ =~ Nothing = False+ Just l =~ Just r = l =~ r++-- These may be too general+instance Approx a => Approx [a] where+ a =~ b = and $ zipWith (=~) a b++instance (Approx a, Approx b) => Approx (a, b) where+ (a0, b0) =~ (a1,b1) = (a0 =~ a1) && (b0 =~ b1)++------------------------------------------------------------+-- Arbitrary instances for Points, Paths++instance Arbitrary n => Arbitrary (V2 n) where+ arbitrary = (^&) <$> arbitrary <*> arbitrary+ shrink (coords -> x :& y) = (^&) <$> shrink x <*> shrink y++instance Arbitrary (v n) => Arbitrary (Point v n) where+ arbitrary = P <$> arbitrary+ shrink (P v) = P <$> shrink v++instance Arbitrary n => Arbitrary (Angle n) where+ arbitrary = review rad <$> arbitrary++instance (Arbitrary n, Floating n) => Arbitrary (Direction V2 n) where+ arbitrary = rotate <$> arbitrary <*> pure xDir++-- -- | Not a valid Show instance because not valid Haskell input+-- instance (Show n, RealFloat n) => Show (Direction V2 n) where+-- show d = "Dir" <> ( show $ d ^. _theta . turn )++-- NOTE on shrinks: Adding definitions of 'shrink' below seems to work+-- in simple tests, but test case failures hang for a very long time+-- (presumably trying lots and lots of expensive shrinks). Not sure+-- how to make shrinking more tractable.++instance (Arbitrary a, Arbitrary (Vn a)) => Arbitrary (Located a) where+ arbitrary = at <$> arbitrary <*> arbitrary+-- shrink (viewLoc -> (p,a)) = uncurry at <$> shrink (a,p)++instance Arbitrary n => Arbitrary (Offset Closed V2 n) where+ arbitrary = OffsetClosed <$> arbitrary+-- shrink (OffsetClosed x) = OffsetClosed <$> shrink x++instance Arbitrary n => Arbitrary (Segment Closed V2 n) where+ arbitrary = oneof [Linear <$> arbitrary, Cubic <$> arbitrary <*> arbitrary <*> arbitrary]+ -- shrink (Linear x) = Linear <$> shrink x+ -- shrink (Cubic x y z) = Linear z+ -- : [Cubic x' y' z' | (x',y',z') <- shrink (x,y,z)]++instance (Arbitrary n, Floating n, Ord n) => Arbitrary (Trail' Line V2 n) where+ arbitrary = lineFromSegments <$> arbitrary+-- shrink (lineSegments -> segs) = lineFromSegments <$> shrink segs++instance (Arbitrary n, Floating n, Ord n) => Arbitrary (Trail' Loop V2 n) where+ arbitrary = closeLine <$> arbitrary+-- shrink (cutLoop -> l) = closeLine <$> shrink l++instance (Arbitrary n, Floating n, Ord n) => Arbitrary (Trail V2 n) where+ arbitrary = oneof [Trail <$> (arbitrary :: Gen (Trail' Loop V2 n)), Trail <$> (arbitrary :: Gen (Trail' Line V2 n))]+
+ test/Speed.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE FlexibleContexts #-}++module Main where++import Criterion+import Criterion.Main (defaultMain)++import Diagrams.Prelude+++main :: IO ()+main = defaultMain+ [ bgroup "rotates"+ [ bench "rotate" $ whnf (rotate (90 @@ deg :: Angle Double)) (V2 3 3)+ ,bench "rotate1" $ whnf (rotate' (90 @@ deg :: Angle Double)) (V2 3 3)+ ,bench "rotate2" $ whnf (rotate'' (90 @@ deg :: Angle Double)) (V2 3 3)+ ]+ ]++--the original " '' " and a secondary " ' " rotate function for comparing speed testing+--note: function time changes dramatically when function is in this file rather than imported+++rotation' :: Floating n => Angle n -> T2 n+rotation' theta = fromLinear r (linv r)+ where+ r = rot theta <-> rot (negated theta)+ rot th (V2 x y) = V2 (c * x - s * y)+ (s * x + c * y)+ where+ c = cosA th+ s = sinA th++rotate' :: (InSpace V2 n t, Transformable t, Floating n) => Angle n -> t -> t+rotate' = transform . rotation'++rotation'' :: Floating n => Angle n -> T2 n+rotation'' theta = fromLinear r (linv r)+ where+ r = rot theta <-> rot (negated theta)+ rot th (V2 x y) = V2 (cosA th * x - sinA th * y)+ (sinA th * x + cosA th * y)++rotate'' :: (InSpace V2 n t, Transformable t, Floating n) => Angle n -> t -> t+rotate'' = transform . rotation''
test/Test.hs view
@@ -1,10 +1,22 @@-import Test.Tasty (defaultMain, testGroup, TestTree)+import Test.Tasty (TestTree, defaultMain, testGroup) -import qualified Diagrams.TwoD.OffsetTest as TwoD.OffsetTest+import qualified Diagrams.Test.Angle as Angle+import qualified Diagrams.Test.Direction as Direction+import qualified Diagrams.Test.Transform as Transform+import qualified Diagrams.Test.TwoD as TwoD+import qualified Diagrams.Test.TwoD.Offset as TwoD.Offset +import qualified Diagrams.Test.Trail as Trail+ tests :: TestTree tests = testGroup "unit tests"- [ testGroup "TwoD.Offset" TwoD.OffsetTest.tests ]+ [ testGroup "TwoD.Offset" TwoD.Offset.tests+ , TwoD.tests+ , Angle.tests+ , Direction.tests+ , Transform.tests+ , Trail.tests+ ] main :: IO () main = defaultMain tests