Немного фона. У меня есть симуляция, которая использует кубические сплайны для 1D траекторий. В этом контексте кубический сплайн определяет позицию объекта, скорость, ускорение и рывок как функцию времени.
Если у вас есть:
- начальные и конечные значения для положение, скорость, ускорение и время
- ограничения постоянной стоимости на максимальная и минимальная скорость, ускорение и рывок
то существует уникальный сплайн. Если вы не укажете окончательное время, но вместо этого хотите использовать траекторию минимального времени, то есть также уникальный сплайн.
Тем не менее, нахождение этих сплайнов может быть королевской болью. В случае, когда указано время, сплайн будет состоять из 7 полиномов, а узлы (точки перехода между многочленами) не известны заранее.Это не обычный случай подгонки сплайна к набору данных, он создает сплайны из граничных условий и некоторые дополнительные ограничения. Я читал документы, в которых люди использовали подобные механизмы и имели схожие потребности, но я никогда не встречал никаких библиотек (или даже исходного кода), которые решали бы создание таких сплайнов. Я написал код, который обрабатывает большинство случаев, но он не очень надежный или быстрый. Я не очень беспокоюсь о том, что это быстро, но более надежным было бы здорово.
Существуют ли библиотеки, которые могут сделать это доступным? Открытый исходный код, даже если он не построен как библиотека? C, С++, Java или Python, но если он с открытым исходным кодом, другие языки по-прежнему будут полезны в качестве ссылки.