Как интерполировать NSBezierPath / UIBezierPath и получить нормальный вектор в местоположении? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть NSBezierPath.Я хотел бы интерполировать таким образом, чтобы

interpolate (0) = starting point
interpolate (1) = end point
interpolate (0.5) = middlePoint. 

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

Я видел много кусочков головоломки во время поиска, но никто не предлагал полного решения в кратчайшие сроки.Ключевые проблемы:

  • Как я могу убедиться, что интерполяция (0.5) действительно находится в середине пути?Нужно ли учитывать длину общего пути?Всегда ли это будет середина среднего отрезка пути?Я сомневаюсь, что.Тем не менее, хорошие аппроксимации приветствуются!
  • как получить вектор нормали в такой точке?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 26 февраля 2019

В основном я использовал эту библиотеку: https://github.com/louisdh/bezierpath-length/blob/master/Source/BezierPath%2BLength.swift

Это дало мне хорошее приближение x, которое необходимо для выполнения интерполяции после небольшого изменения.С этим x и этим объяснением: https://medium.com/@adrian_cooney/bezier-interpolation-13b68563313a я смог найти нормальный вектор (последняя интерполяция идет по касательной, поэтому мне нужен был только ортогональный вектор из этой последней интерполяции).

Мой код все еще немного грязный.Я мог бы опубликовать позже.Но это работает!

...