public static CubicBezier Interpolate(DblPoint2 Pa, DblPoint2 P0, DblPoint2 P1, DblPoint2 Pb) { var result = new CubicBezier(); result.P0 = P0; result.P1 = P1; result.C0 = InterpolateControlPoint(Pa, P0, P1); result.C1 = InterpolateControlPoint(Pb, P1, P0); return result; }
public static CubicBezier[] Interpolate(DblPoint2[] Points, DblPoint2 prePoint, DblPoint2 postPoint) { if (Points.Length < 2) throw new ArgumentException("Too few points to interpolate"); var beziersNecessary = Points.Length - 1; var result = new CubicBezier[beziersNecessary]; for (int i = 0; i < beziersNecessary; i++) { DblPoint2 Pa, Pb; if (i == 0) Pa = prePoint; else Pa = Points[i - 1]; if (i == beziersNecessary - 1) Pb = postPoint; else Pb = Points[i + 2]; result[i] = Interpolate(Pa, Points[i], Points[i + 1], Pb); } return result; }