Example #1
0
        /// <summary>
        /// In this class the second parameter is the number of paths
        /// </summary>
        /// <param name="pathdata"></param>
        /// <param name="increment"></param>
        /// <returns></returns>
        public ShapeCollection CreatePaths(PathData pathdata, double increment)
        {
            ShapeCollection pc = new ShapeCollection();

            pc.PatternName = pathdata.Name;
            if (pathdata.PathType == PatternType.barrel)
            {
                Barrel           b    = pathdata as Barrel;
                RadialOffsetPath path = b.OutlineAsOffsets((int)(1 / increment));
                Polygon          poly = CreatePolygonFrom(path, b.ToolPosition);
                (poly.RenderTransform as CompositeTransform).Rotation = b.Phase;
                pc.AddShape(poly);
            }
            return(pc);
        }
Example #2
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="path"></param> 
 /// <param name="x"></param>  X coordinate of starting point
 /// <param name="y"></param>  Y coordinate of starting point
 /// <returns></returns>
 public Polygon CreatePolygonFrom(RadialOffsetPath path, double rstart = 0)
 {
     Polygon p = new Polygon();
     CompositeTransform ct = new CompositeTransform();
     p.Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
     p.RenderTransform = ct;
     double lastR = rstart;
     for (int i = 0; i < path.NumPoints; i++)
     {
         double angle = i * path.Increment * 2 * Math.PI;
         double r = lastR + path[i];
         double x = Math.Round(r * Math.Cos(angle),3);
         double y = Math.Round(r * Math.Sin(angle), 3);
         Point nxtPoint = new Point(x,y );
         p.Points.Add(nxtPoint);
         lastR = r;
     }
     return p;
 }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="path"></param>
        /// <param name="x"></param>  X coordinate of starting point
        /// <param name="y"></param>  Y coordinate of starting point
        /// <returns></returns>
        public Polygon CreatePolygonFrom(RadialOffsetPath path, double rstart = 0)
        {
            Polygon            p  = new Polygon();
            CompositeTransform ct = new CompositeTransform();

            p.Stroke          = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
            p.RenderTransform = ct;
            double lastR = rstart;

            for (int i = 0; i < path.NumPoints; i++)
            {
                double angle    = i * path.Increment * 2 * Math.PI;
                double r        = lastR + path[i];
                double x        = Math.Round(r * Math.Cos(angle), 3);
                double y        = Math.Round(r * Math.Sin(angle), 3);
                Point  nxtPoint = new Point(x, y);
                p.Points.Add(nxtPoint);
                lastR = r;
            }
            return(p);
        }
Example #4
0
 public RadialOffsetPath OutlineAsOffsets(int nsteps)
 {
     RadialOffsetPath outline = new RadialOffsetPath();
     outline.NumPoints = nsteps;
     double inc = 1.0 / (nsteps - 1);
     outline.Increment = inc;
     double r = OffsetAt(0);
     double lastR = r;
     outline.Add(r);
     for (int i = 1; i < nsteps; i++)
     {
         r = OffsetAt(i * inc);
         outline.Add(r - lastR);
         lastR = r;
     }
     return outline;
 }