Trouver le sharepoint contrôle pour le segment QuadraticBezier lorsque les valeurs de début, de fin et de 1 point se situant le long du sommier sont en C # – Interpolation à 3 points QuadraticBezier

C’est similaire à une question précédente que j’avais posée à propos du Cubic Bezier. J’ai un sharepoint départ, un point final et un sharepointstiné à se situer le long d’un Bézier quadratique. Compte tenu de ces trois points, je veux pouvoir dessiner un QuadraticBezierSegment dans WPF, mais j’ai besoin de la valeur unique ControlPoint (dans le QuadraticBezierSegment, c’est Point1) pour pouvoir la dessiner.

Existe-t-il un calcul ou un moyen permettant de déterminer cette valeur et d’attirer mon QuadraticBezier?

Merci!

    Le meilleur ajustement quadratique est plus simple que le meilleur ajustement cubique. Voici un code:

    static class DrawingUtility { static void bez3pts1(double x0, double y0, double x3, double y3, double x2, double y2, out double x1, out double y1) { // find chord lengths double c1 = Math.Sqrt((x3 - x0) * (x3 - x0) + (y3 - y0) * (y3 - y0)); double c2 = Math.Sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2)); // guess "best" t double t = c1 / (c1 + c2); // quadratic Bezier is B(t) = (1-t)^2*P0 + 2*t*(1-t)*P1 + t^2*P2 // solving gives P1 = [B(t) - (1-t)^2*P0 - t^2*P2] / [2*t*(1-t)] where P3 is B(t) x1 = (x3 - (1 - t) * (1 - t) * x0 - t * t * x2) / (2 * t * (1 - t)); y1 = (y3 - (1 - t) * (1 - t) * y0 - t * t * y2) / (2 * t * (1 - t)); } // pass in a PathFigure and it will append a QuadraticBezierSegment connecting the previous point to int1 and endPt static public void QuadraticBezierFromIntersection(PathFigure path, Point startPt, Point int1, Point endPt) { double x1, y1; bez3pts1(startPt.X, startPt.Y, int1.X, int1.Y, endPt.X, endPt.Y, out x1, out y1); path.Segments.Add(new QuadraticBezierSegment { Point1 = new Point(x1, y1), Point2 = endPt } ); } }