public override Complex Evaluate(double t) { // TBD scale t for lines so +/-pi -> infinity double aa = 2 * b.Re; double bb = 2 * b.Im; if (Accuracy.LengthIsZero(aa)) { return(new Complex(t, c / bb)); } if (Accuracy.LengthIsZero(bb)) { return(new Complex(c / aa, t)); } // double x = c / (aa * bb * bb * (1 / (aa * aa) + 1 / (bb * bb))); // return new ComplexPolar(t, LineAngle) + new Complex(x, (c - aa * x) / bb); Complex p0 = new Complex(c / aa, 0); Complex p1 = new Complex(0, c / bb); if (p1 == Complex.Zero) { p1 = Complex.CreatePolar(1, Angle); } return(p0 + (p1 - p0).Normalized * t); //return (p0 + p1) / 2 + (p1 - p0).Normalized * t; }
public static Mobius CreateRotation(double phi) { return(new Mobius(Complex.CreatePolar(1, phi), Complex.Zero, Complex.Zero, Complex.One)); }
public static Line Create(Complex point, double angle) { return(Create(point, point - Complex.CreatePolar(1, angle))); }
public override Complex Evaluate(double t) { return(Center + Complex.CreatePolar(Radius, t)); }