Example #1
0
        private Point FindIntersection(Line3Points tangent, Point center)
        {
            var Np = new Line3Points(tangent.Ay, -tangent.Bx, 0);

            var Fp = new Line3Points(Np.Ay * Np.Bx, -(Np.Ay * center.Y + Np.Bx * center.X), 0);

            var x = (Pow(tangent.Bx) * center.X - tangent.Ay * (tangent.Bx * center.Y + tangent.C)) /
                    (Pow(tangent.Ay) + Pow(tangent.Bx));
            var point = GetY(tangent, (int) x);

            Console.WriteLine($"{Fp.Ay}a - {Fp.Bx} - {Fp.C}");
            Console.WriteLine($"{point}, center: {center}");
            return point;
        }
Example #2
0
        private Point FindIntersectionWithoutDividing(Line3Points tangent, Point center, int r)
        {
            var vector = new Vector2(tangent.Ay, -tangent.Bx);

            var v2 = new Vector2(center.X - 0, center.Y - tangent.C);

            var skal = Vector2.Dot(vector, v2);

            vector = Vector2.Normalize(vector) * r;

            if (skal > 0)
            {
                vector.X -= center.X;
                vector.Y -= center.Y;
            }
            else
            {
                vector.X += center.X;
                vector.Y += center.Y;
            }

            return new Point((int) vector.X, (int) vector.Y);
        }
Example #3
0
 private Point GetY(Line3Points tangent, int x)
 {
     return tangent.Bx.Equals(0)
         ? new Point(x, (int) (tangent.Ay * x + tangent.C))
         : new Point(x, (int) -((tangent.Ay * x + tangent.C) / tangent.Bx));
 }