public RelevantLine[] GetRelevantObjects(RelevantPoint point, RelevantCircle circle)
        {
            var c = circle.Child.Centre;
            var d = Vector2.Distance(point.Child, c);
            var r = circle.Child.Radius;

            var b = r / (d * Math.Sqrt(1 - r * r / (d * d)));

            var v = (point.Child - c).PerpendicularLeft * b;

            return(new[] {
                new RelevantLine(Line2.FromPoints(point.Child, c + v)),
                new RelevantLine(Line2.FromPoints(point.Child, c - v))
            });
        }
Ejemplo n.º 2
0
 public IEnumerable <RelevantPoint> GetCircleCircleIntersection(RelevantCircle circle1, RelevantCircle circle2)
 {
     return(Circle.Intersection(circle1.Child, circle2.Child, out var intersections) ? intersections.Select(o => new RelevantPoint(o)) : null);
 }
Ejemplo n.º 3
0
 public IEnumerable <RelevantPoint> GetLineCircleIntersection(RelevantLine line, RelevantCircle circle)
 {
     return(Circle.Intersection(circle.Child, line.Child, out var intersections) ? intersections.Select(o => new RelevantPoint(o)) : null);
 }
Ejemplo n.º 4
0
 public RelevantCircle GetRelevantObjects(RelevantLine axis, RelevantCircle circle)
 {
     return(!MySettings.AxisInputPredicate.Check(axis, this) || !MySettings.OtherInputPredicate.Check(circle, this) ? null :
            new RelevantCircle(new Circle(Vector2.Mirror(circle.Child.Centre, axis.Child), circle.Child.Radius)));
 }
Ejemplo n.º 5
0
 public RelevantCircle GetRelevantObjects(RelevantPoint origin, RelevantCircle circle)
 {
     return(!MySettings.OriginInputPredicate.Check(origin, this) || !MySettings.OtherInputPredicate.Check(circle, this) ? null :
            new RelevantCircle(new Circle(Matrix2.Mult(Matrix2.CreateRotation(MathHelper.DegreesToRadians(MySettings.Angle)), circle.Child.Centre - origin.Child) * MySettings.Scalar + origin.Child, circle.Child.Radius * MySettings.Scalar)));
 }