Создание кривой между двумя точками с нормализованными векторами

Поэтому мне нужен метод записи для создания кривой между двумя точками, где каждая точка имеет нормализованный вектор, указывающий в произвольном направлении. Я пытался разработать такой метод, но не смог обернуть мою голову по математике.

Здесь, поскольку картинка стоит тысячи слов, это то, что мне нужно:

введите описание изображения здесь

На рисунке векторы перпендикулярны красным линиям. Я считаю, что векторы должны быть одинаково взвешены с весом, эквивалентным расстоянию между точками. Это должно быть так, чтобы, когда две точки друг над другом были направлены в противоположные стороны, они все равно выглядели как одна плавная кривая (верхняя кривая на рисунке). Также мне нужно интегрировать кривые, чтобы найти их длины. Я не знаю, почему я не смог придумать, как все это рассчитать, но не смог.

Также я использую csharp, язык не имеет большого значения.

1 ответ

Решение

Cubic Bezier действительно достигнет запрошенного эффекта. Вам нужно четыре контрольных точки на сегмент кривой. Два определяют конечные точки, а два других - направления касательных в конечных точках. Осталось две степени свободы, указывающие, насколько далеко могут быть контрольные точки вдоль касательных.

Длина дуги не может быть рассчитана аналитически, и вам понадобятся численные методы. Этот другой вопрос дает вам полезную информацию.

введите описание изображения здесь

Другие вопросы по тегам