/// <summary> /// Translates the control points by the specified vector. /// </summary> /// <param name="vector">The vector.</param> public void Translate(ref FPVector2 vector) { for (int i = 0; i < ControlPoints.Count; i++) { ControlPoints[i] = FPVector2.Add(ControlPoints[i], vector); } }
public static FP DistanceBetweenPointAndLineSegment(ref FPVector2 point, ref FPVector2 start, ref FPVector2 end) { if (start == end) { return(FPVector2.Distance(point, start)); } FPVector2 v = FPVector2.Subtract(end, start); FPVector2 w = FPVector2.Subtract(point, start); FP c1 = FPVector2.Dot(w, v); if (c1 <= 0) { return(FPVector2.Distance(point, start)); } FP c2 = FPVector2.Dot(v, v); if (c2 <= c1) { return(FPVector2.Distance(point, end)); } FP b = c1 / c2; FPVector2 pointOnLine = FPVector2.Add(start, FPVector2.Multiply(v, b)); return(FPVector2.Distance(point, pointOnLine)); }