示例#1
0
        public MarkGeometryPath(MarkGeometryCircle circle, double minimumFacetLength)
            : base()
        {
            int nSegments = (int)Math.Floor(GeometricArithmeticModule.CalculatePerimeter(circle) / minimumFacetLength);

            Points.AddRange(GeometricArithmeticModule.Explode(circle, nSegments + 1));
            CentrePoint = circle.CentrePoint;

            Update();
        }
示例#2
0
        public MarkGeometryPath(MarkGeometryArc arc, double minimumFacetLength)
            : base()
        {
            int nSegments = (int)Math.Floor(GeometricArithmeticModule.CalculatePerimeter(arc) / minimumFacetLength);

            Points.AddRange((MarkGeometryPoint[])arc);
            CentrePoint = arc.CentrePoint;
            Fill        = arc.Fill;
            Stroke      = arc.Stroke;

            Update();
        }
示例#3
0
        public override void SetExtents()
        {
            Extents.MinX = Math.Min(StartPoint.X, EndPoint.X);
            Extents.MaxX = Math.Max(StartPoint.X, EndPoint.X);

            Extents.MinY = Math.Min(StartPoint.Y, EndPoint.Y);
            Extents.MaxY = Math.Max(StartPoint.Y, EndPoint.Y);

            Extents.MinZ = Math.Min(StartPoint.Z, EndPoint.Z);
            Extents.MaxZ = Math.Max(StartPoint.Z, EndPoint.Z);

            Length    = GeometricArithmeticModule.CalculatePerimeter(this);
            Perimeter = Length; // don't use perimeter of a rectangle {2 * (Length + Double.Epsilon)} - the perimeter of a line should be its length;
            Area      = Length * Double.Epsilon;
        }