public RelevantLine[] GetRelevantObjects(RelevantLine line1, RelevantLine line2) { if (!Line2.Intersection(line1.Child, line2.Child, out var intersection)) { return(null); } var dir1Norm = Vector2.Normalize(line1.Child.DirectionVector); var dir2Norm = Vector2.Normalize(line2.Child.DirectionVector); return(new[] { new RelevantLine(new Line2(intersection, dir1Norm + dir2Norm)), new RelevantLine(new Line2(intersection, dir1Norm - dir2Norm)) }); }
public RelevantLine GetRelevantObjects(RelevantLine line1, RelevantLine line2) { // Any line can be the axis if (MySettings.AxisInputPredicate.Check(line1, this) && MySettings.OtherInputPredicate.Check(line2, this)) { return(new RelevantLine(Line2.FromPoints(Vector2.Mirror(line2.Child.PositionVector, line1.Child), Vector2.Mirror(line2.Child.PositionVector + line2.Child.DirectionVector, line1.Child)))); } if (MySettings.AxisInputPredicate.Check(line2, this) && MySettings.OtherInputPredicate.Check(line1, this)) { return(new RelevantLine(Line2.FromPoints(Vector2.Mirror(line1.Child.PositionVector, line2.Child), Vector2.Mirror(line1.Child.PositionVector + line1.Child.DirectionVector, line2.Child)))); } return(null); }
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); }
public RelevantPoint GetLineLineIntersection(RelevantLine line1, RelevantLine line2) { return(Line2.Intersection(line1.Child, line2.Child, out var intersection) ? new RelevantPoint(intersection) : null); }
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))); }
public RelevantPoint GetRelevantObjects(RelevantLine axis, RelevantPoint point) { return(!MySettings.AxisInputPredicate.Check(axis, this) || !MySettings.OtherInputPredicate.Check(point, this) ? null : new RelevantPoint(Vector2.Mirror(point.Child, axis.Child))); }
public RelevantLine GetRelevantObjects(RelevantLine line, RelevantPoint point) { return(new RelevantLine(new Line2(point.Child, line.Child.DirectionVector))); }
public RelevantLine GetRelevantObjects(RelevantPoint origin, RelevantLine line) { return(!MySettings.OriginInputPredicate.Check(origin, this) || !MySettings.OtherInputPredicate.Check(line, this) ? null : new RelevantLine(Line2.FromPoints(Matrix2.Mult(Matrix2.CreateRotation(MathHelper.DegreesToRadians(MySettings.Angle)), line.Child.PositionVector - origin.Child) * MySettings.Scalar + origin.Child, Matrix2.Mult(Matrix2.CreateRotation(MathHelper.DegreesToRadians(MySettings.Angle)), line.Child.PositionVector + line.Child.DirectionVector - origin.Child) * MySettings.Scalar + origin.Child))); }