示例#1
0
        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;
        }
示例#2
0
 public static Mobius CreateRotation(double phi)
 {
     return(new Mobius(Complex.CreatePolar(1, phi), Complex.Zero, Complex.Zero, Complex.One));
 }
示例#3
0
 public static Line Create(Complex point, double angle)
 {
     return(Create(point, point - Complex.CreatePolar(1, angle)));
 }
示例#4
0
 public override Complex Evaluate(double t)
 {
     return(Center + Complex.CreatePolar(Radius, t));
 }