Я много искал в googled, но все алгоритмы, которые я нашел, использовали уравнения для нахождения контрольных точек. Я подумал, что есть более простое решение для этого и нашел некоторую реализацию в исходном коде ExtJS: http://docs-devel.sencha.com/extjs/4.1.2/source/Draw.html#Ext-draw-Draw-method-getAnchors. Он использует углы между ближайшими точками линии для обнаружения контрольных точек и некоторых хаков.Алгоритм поиска контрольных точек кубического безье (подробности реализации)
Может ли кто-нибудь определить, какой алгоритм для поиска контрольных точек это? Я застрял в манипуляции с ПИ и углами. Может быть, есть более подробное и более чистое объяснение или общая идея для этого способа решения проблемы?
Можете ли вы описать, какие части кода соответствуют этапам алгоритма? Я все еще не могу описать, как часть 4 работает в коде Sencha. –
Ищите «Последняя корректировка, убедитесь, что контрольная точка привязки не проходит вертикально мимо» в файле, который вы связали –
Я читал статьи о Catmull-Rom, но не нашел объяснений, подобных вашим. Все формулы таковы: 0,5f * ((2 * p1) + (p2 - p0) * t + (2 * p0 - 5 * p1 + 4 * p2 - p3) * t * t + (3 * p1 -p0 - 3 * p2 + p3) * t * t * t); } Может быть, в коде Sencha используется не другая версия алгоритма? –