Я использую кубическую логику кривой безье в моем приложении Android.
Я реализовал кубический код кривой безье на холсте в onDraw пользовательского вида.
// Path to draw cubic bezier curve
Path cubePath = new Path();
// Move to startPoint(200,200) (P0)
cubePath.moveTo(200,200);
// Cubic to with ControlPoint1(200,100) (C1), ControlPoint2(300,100) (C2) , EndPoint(300,200) (P1)
cubePath.cubicTo(200,100,300,100,300,200);
// Draw on Canvas
canvas.drawPath(cubePath, paint);
Я визуализирую код выше на следующем изображении.
[Обновлено]
Logic for selecting first control points, I've taken ,
baseX = 200 , baseY = 200 and curve_size = X of Endpoint - X of Start Point
Start Point : x = baseX and y = baseY
Control Point 1 : x = baseX and y = baseY - curve_size
Control Point 2 : x = baseX + curve_size and y = baseY - curve_size
End Point : x = baseX + curve_size and y = baseY
Я хочу разрешить пользователю изменять EndPoint кривой выше, и на основе новых конечных точек я аннулирую холст.
Но проблема в том, что Curve поддерживает две контрольные точки, которые необходимо пересчитывать при изменении в EndPoint.
Например, я просто хочу найти новые контрольные точки, когда значение EndPoint изменится с (300,200) до (250,250)
Как на следующем изображении:
Пожалуйста, помогите мне рассчитать два новых контрольных точки на основе новой конечной точки, чтобы форма кривой сохранялась так же, как и предыдущая конечная точка.
Я ссылаюсь на ссылочные ссылки во время поиска:
http://pomax.github.io/bezierinfo/
http://jsfiddle.net/hitesh24by365/jHbVE/3/
http://en.wikipedia.org/wiki/B%C3%A9zier_curve
Любая ссылка также была оценена в ответ на этот вопрос.