У меня есть функция для рисования Bezier Curve через три точки. У меня уже есть 2 точки (начало и конец) - A и B. Как мне рассчитать среднюю точку между этими двумя точками, поскольку средняя точка всегда будет немного выше или ниже, чем линейная функция этих двух точек.
Пример:
Любые формулы, идеи были бы велики!
Если кто-то использует кубический Безье с двумя контрольными точками, я нашел этот кодовый пост очень полезен для нахождения середины. tkit 16.05.2019
Ниже показано, что я использую, чтобы получить контрольную точку квадратной кривой Безье. Это должно работать для вашей проблемы, где контрольная точка находится на кривой. Это в Swift, но вы сможете легко конвертировать его на другой язык. По сути, в середине линии (точками которой являются точка 1 и точка 2) я строю перпендикулярную линию заданной длины. Параметр "По часовой стрелке" определяет, на какую сторону линии должна падать точка.
Ниже показано, как это будет отображаться на буквы вашей диаграммы:
c = getControlPointWithPoint1(a, point2:b, length:h, clockwise:true)
Ответ 3 · shakram02
после ответа Марка вот фрагмент на С#
public static Path DrawBezeireUsingTwoPoints(Point startPoint, Point endPoint)
{
Path path = new Path();
PathFigure pathFigure = new PathFigure();
// Set up the Path to insert the segments
PathGeometry pathGeometry = new PathGeometry();
BezierSegment bezeireSeg;
// Draw an ellipse passing by the 2 points and let the path cross it
Point beziereMidPoint = CalculateBezierePoint(startPoint, endPoint, true);
bezeireSeg = new BezierSegment(startPoint, beziereMidPoint, endPoint, true);
pathFigure.StartPoint = startPoint;
pathFigure.IsClosed = false;
pathFigure.Segments.Add(bezeireSeg);
pathGeometry.Figures.Add(pathFigure);
path.Data = pathGeometry;
path.Stroke = Brushes.Brown;
path.StrokeThickness = 2;
return path;
}