public RelevantPoint GetRelevantObjects(RelevantPoint point1, RelevantPoint point2, RelevantPoint point3, RelevantPoint point4) { // Get the vectors between the points var a = point2.Child - point1.Child; var b = point3.Child - point2.Child; var c = point4.Child - point3.Child; // Return null if any length is zero if (Math.Abs(a.X) < double.Epsilon && Math.Abs(a.Y) < double.Epsilon) { return(null); } if (Math.Abs(b.X) < double.Epsilon && Math.Abs(b.Y) < double.Epsilon) { return(null); } if (Math.Abs(c.X) < double.Epsilon && Math.Abs(c.Y) < double.Epsilon) { return(null); } // Calculate the next point var d1 = Vector2.ComplexQuotient(b, a); var d2 = Vector2.ComplexQuotient(c, b); var dd = Vector2.ComplexQuotient(d2, d1); Vector2 newPoint = Vector2.ComplexProduct(c, Vector2.ComplexProduct(d2, dd)) + point4.Child; return(new RelevantPoint(newPoint)); }
public RelevantPoint[] GetRelevantObjects(RelevantPoint point1, RelevantPoint point2) { var diff = point2.Child - point1.Child; var rotated = Vector2.Rotate(diff, Math.PI * 2 / 3); return new[] { new RelevantPoint(point1.Child - rotated), new RelevantPoint(point2.Child + rotated) }; }
public RelevantCircle[] GetRelevantObjects(RelevantPoint point1, RelevantPoint point2) { var radius = (point1.Child - point2.Child).Length; return(new[] { new RelevantCircle(new Circle(point1.Child, radius)), new RelevantCircle(new Circle(point2.Child, radius)) }); }
public RelevantPoint GetRelevantObjects(RelevantPoint point1, RelevantPoint point2) { // Get the vectors between the points var a = point2.Child - point1.Child; // Return null if length of a is zero if (Math.Abs(a.X) < double.Epsilon && Math.Abs(a.Y) < double.Epsilon) { return(null); } return(new RelevantPoint(point2.Child + a)); }
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)) }); }
public RelevantPoint GetRelevantObjects(RelevantPoint point1, RelevantPoint point2, RelevantPoint point3) { // Get the vectors between the points var a = point2.Child - point1.Child; var b = point3.Child - point2.Child; // Return null if length of a is zero if (Math.Abs(a.X) < double.Epsilon && Math.Abs(a.Y) < double.Epsilon) { return(null); } // Calculate the next point Vector2 newPoint = Vector2.ComplexProduct(b, Vector2.ComplexQuotient(b, a)) + point3.Child; return(new RelevantPoint(newPoint)); }
public RelevantPoint GetRelevantObjects(RelevantPoint point1, RelevantPoint point2) { // Any point can be the origin if (MySettings.OriginInputPredicate.Check(point1, this) && MySettings.OtherInputPredicate.Check(point2, this)) { return(new RelevantPoint(Matrix2.Mult(Matrix2.CreateRotation(MathHelper.DegreesToRadians(MySettings.Angle)), point2.Child - point1.Child) * MySettings.Scalar + point1.Child)); } if (MySettings.OriginInputPredicate.Check(point2, this) && MySettings.OtherInputPredicate.Check(point1, this)) { return(new RelevantPoint(Matrix2.Mult(Matrix2.CreateRotation(MathHelper.DegreesToRadians(MySettings.Angle)), point1.Child - point2.Child) * MySettings.Scalar + point2.Child)); } return(null); }
public RelevantPoint[] GetRelevantObjects(RelevantHitObject relevantHitObject) { var ho = relevantHitObject.HitObject; if (!ho.IsSlider) { return(null); } var numPoints = (int)(ho.PixelLength * ((SliderPathGeneratorSettings)Settings).PointDensity); var points = new RelevantPoint[numPoints]; var sliderPath = ho.GetSliderPath(); for (int i = 0; i < numPoints; i++) { points[i] = new RelevantPoint(sliderPath.PositionAt((double)i / (numPoints - 1))); } return(points); }
public RelevantPoint GetRelevantObjects(RelevantPoint point1, RelevantPoint point2, RelevantPoint point3) { return(new RelevantPoint((point1.Child + point2.Child + point3.Child) / 3)); }
public RelevantLine GetRelevantObjects(RelevantPoint point1, RelevantPoint point2) { return(new RelevantLine(Line2.FromPoints(point1.Child, point2.Child))); }
public RelevantLine GetRelevantObjects(RelevantPoint point1, RelevantPoint point2) { return(new RelevantLine(new Line2((point1.Child + point2.Child) / 2, (point2.Child - point1.Child).PerpendicularLeft))); }
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 RelevantCircle GetRelevantObjects(RelevantPoint point) { return(new RelevantCircle(new Circle(point.Child, MySettings.Radius))); }
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))); }
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))); }