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"); }
//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); }
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); }
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); }
private static SolverPoint ToRect(double r, double a) { return(SolverPoint.FromPolar(r, a)); }