Fit-Curve - это сплайн, а не кривая Безье.Однако вы можете сделать кривую Безье, похожую на ваш сплайн (у сплайнов нет контрольных точек).Я много искал по этой проблеме и представил / внедрил много слишком сложных алгоритмов для себя, и, наконец, я обнаружил, что задача намного проще, чем я предполагал (я чувствовал, что должен, клянусь :))
Вот лучшее описание этого, я возьму выдержку из этой статьи:
В большинстве реализаций функция рисования кривой Безье принимаетдве контрольные точки и сама точка (для сегмента) в качестве аргументов, поэтому все, что вам нужно, это просто итеративно находить контрольные точки для новых сегментов (я думаю, что лучше обновить последний сегмент и нарисовать новый в конце кривойдля каждой новой точки):
Вот код JavaScript (t
для простейшего случая - это постоянная плавность кривой):
function getControlPoints(x0,y0,x1,y1,x2,y2,t){
var d01=Math.sqrt(Math.pow(x1-x0,2)+Math.pow(y1-y0,2));
var d12=Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));
var fa=t*d01/(d01+d12);
var fb=t*d12/(d01+d12);
var p1x=x1-fa*(x2-x0);
var p1y=y1-fa*(y2-y0);
var p2x=x1+fb*(x2-x0);
var p2y=y1+fb*(y2-y0);
return [p1x,p1y,p2x,p2y];
}
Пожалуйста, прочитайте и поймитестатья, я думаю, самая лучшая, самая короткая и ясная.