Создание кривой между двумя точками с нормализованными векторами
Поэтому мне нужен метод записи для создания кривой между двумя точками, где каждая точка имеет нормализованный вектор, указывающий в произвольном направлении. Я пытался разработать такой метод, но не смог обернуть мою голову по математике.
Здесь, поскольку картинка стоит тысячи слов, это то, что мне нужно:
На рисунке векторы перпендикулярны красным линиям. Я считаю, что векторы должны быть одинаково взвешены с весом, эквивалентным расстоянию между точками. Это должно быть так, чтобы, когда две точки друг над другом были направлены в противоположные стороны, они все равно выглядели как одна плавная кривая (верхняя кривая на рисунке). Также мне нужно интегрировать кривые, чтобы найти их длины. Я не знаю, почему я не смог придумать, как все это рассчитать, но не смог.
Также я использую csharp, язык не имеет большого значения.
1 ответ
Cubic Bezier действительно достигнет запрошенного эффекта. Вам нужно четыре контрольных точки на сегмент кривой. Два определяют конечные точки, а два других - направления касательных в конечных точках. Осталось две степени свободы, указывающие, насколько далеко могут быть контрольные точки вдоль касательных.
Длина дуги не может быть рассчитана аналитически, и вам понадобятся численные методы. Этот другой вопрос дает вам полезную информацию.