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(); }
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(); }
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; }