сплайны catmull-rom для Android

Я пытаюсь найти способ реализовать сплайны catmull-rom на платформе Android с целью плавного рисования линии через n точек. В идеале я мог бы адаптировать кубические кривые Безье с помощью Path и его метода cubicTo, как указано в этом потоке: Как нарисовать кривую через точки дерева в Android?

К сожалению, я не смог проследить за реализацией там, поэтому я надеюсь, что кто-то там уже сделал это и поделится несколькими строками примера кода.

Спасибо!


person Nick    schedule 09.04.2011    source источник


Ответы (2)


В этой библиотеке разработки игр для Android, похоже, есть сплайны Catmull-Rom реализовано: http://code.google.com/p/libgdx/.

p.s., вы отметили Безье, это неверно - это тип кривой, который использует контрольные точки вне кривой, которые имеют внешние влияния :)

person Chris Dennett    schedule 09.04.2011
comment
Спасибо :) Я подумал, что могу получить некоторую злобу для тега - только пометил его, потому что кажется, что на Android есть способ реализовать сплайн catmull rom с использованием кубической кривой Безье. - person Nick; 09.04.2011
comment
Кажется, это возможно, но уравнения, вероятно, настолько сложны, что вы не хотите туда идти :) Вы потеряете больше ЦП при преобразовании, чем при любом базовом ускорении (если таковое имеется). - person Chris Dennett; 09.04.2011
comment
Преобразование кривой Безье в кривую Катмулла-Рома (или наоборот) так же просто, как умножение на правильные матрицы. - person RustyTheBoyRobot; 28.03.2012
comment
@Rusty - у вас есть ссылка на что-то, что показало бы мне, как это сделать? - person Nick; 25.08.2012
comment
Я узнал об этом из книги «Основы компьютерной графики», в которой есть отличное пошаговое объяснение сплайнов. Быстрый поиск в Google привел меня к этому документу (стр. 12), который содержит матрицы преобразования тебе нужно. - person RustyTheBoyRobot; 26.08.2012

Я столкнулся с той же проблемой, и я нашел решение:

Гладкий сплайн Безье через заданные точки

Он реализован на JavaScript, но может быть легко переписан на Java - в результате получается естественный сплайн, нарисованный с помощью Path.quadTo ().

person Matěj Hrazdíra    schedule 16.04.2013
comment
Наконец-то у меня появилась возможность поиграть с предложенным там решением, но, к сожалению, это не годится. Хотя код действительно обеспечивает плавные линии, он создает линии, которые в зависимости от отношения каждой точки к другим могут значительно отклоняться или недооцениваться, что приводит к ложному представлению данных. - person Nick; 13.09.2013