Exemple #1
0
        public void Run(IExportClient cl)
        {
            var len = 50d;
            var p1  = new SolverPoint(0, 0);
            var p2  = new SolverPoint(len, 0);
            var p3  = new SolverPoint(len * Math.Cos(Angle * Deg2Rad), len * Math.Sin(Angle * Deg2Rad));

            cl.Line(p1, p2, 1, "base");
            cl.Line(p1, p3, 0, "base");
        }
Exemple #2
0
        //def checkLimit(x,y,maxrad,minrad,offset):
        //    r, a = toPolar(x, y)
        //    if (r > maxrad) or (r < minrad):
        //            r = r - offset
        //            x, y = toRect(r, a)
        //    return x, y
        private SolverPoint CheckLimit(double x, double y, double maxrad, double minrad, double offset)
        {
            var ra = ToPolar(x, y);
            var r  = ra.D;
            var a  = ra.Angle;

            var result = new SolverPoint(x, y);

            if (r > maxrad || r < minrad)
            {
                r      = r - offset;
                result = ToRect(r, a);
            }
            return(result);
        }
Exemple #3
0
        public void Run(IExportClient cl)
        {
            double start = -100;
            double end   = 100;
            double step  = 0.1;

            var p1 = new SolverPoint(start, F(start));

            for (double x = start; x <= end; x += step)
            {
                double y  = F(x);
                var    p2 = new SolverPoint(x, y);
                cl.Line(p1, p2, 0, "base");

                p1 = p2;
            }
        }
        protected override SolverPoint GetCircularPoint(int step, double angleRads, IExportClient cl)
        {
            var v = (A - B) / B * angleRads;

            var centerX = (A - B) * Math.Cos(angleRads);
            var centerY = (A - B) * Math.Sin(angleRads);
            var x       = centerX + B * Math.Cos(v);
            var y       = centerY - B * Math.Sin(v);

            var result = new SolverPoint(x, y);


            if (step % (NumSteps / 20) == 0)
            {
                cl.Circle(new SolverPoint(centerX, centerY), B, 1, "circles");
                cl.Point(result, 5, "points");
            }


            return(result);
        }
Exemple #5
0
        public void Run(IExportClient cl)
        {
            mClient = cl;

            BeforeCircle(cl);

            SolverPoint last = null;

            for (int i = 0; i < NumSteps; ++i)
            {
                var angle = (MaxAngle - MinAngle) / NumSteps * i + MinAngle;
                var r     = angle * Deg2Rad;
                var p     = GetCircularPoint(i, r, cl);

                if (last != null)
                {
                    cl.Line(last, p, 0, "base");
                }
                last = p;
            }

            AfterCircle(cl);
        }
Exemple #6
0
 private static SolverPoint ToRect(double r, double a)
 {
     return(SolverPoint.FromPolar(r, a));
 }