![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Приветствую!
Разыскивается алгоритм создания паралельных кривых. Исходные данные - замкнутая кривая Безье, необходимо получить кривую, отстоящую от исходной на заданое расстояние. В результате должна быть также замкнутая кривая Безье без "петель". Аналогичный инструмент в иллюстраторе называется inflate, в inkscape - inset Нужен либо открытый исходник, либо внятный алгоритм построения. На данный момент гугль ничем не помог ![]() В исходниках inkscape смотрел, но моих знаний по cpp для понимания не хватает. |
|
|||||
|
http://code.google.com/p/bezier/ пожалуй единственные изыскания в данной области
__________________
if (love is true) break my.heart; |
|
|||||
|
довольно легко разруливается вариант со сплайном Катмулла-Рома http://silin.su/trash/spline/bin/
такая ли параллельность и точность нужна и для чего это уже другой вопрос и еще с петлями там не всегда хорошо |
|
|||||
|
А кривая безье у вас по опорным точкам задана? Расстояние как мерять будем меж кривыми, по нормали в точке? В какой точке, на первоначальной кривой или на итоговой? Просто масштабировать ключевые точки и получить подобную фигуру меньшего размера вам не подходит?
__________________
:) |
|
|||||
|
Цитата:
Расстояние между кривыми неодинаковое даже при выпуклом контуре. Но спасибо за полезный пример. Можно применить для сглаживания контуров многоугольников. Добавлено через 14 минут Цитата:
Просто масштабирование не подойдет, возможно было бы масштабировать каждый отрезок кривой, но как тогда соединить отрезки итоговой кривой и как избавиться от петель. Последний раз редактировалось Idalgo; 11.02.2012 в 01:42. |
|
|||||
|
>> Расстояние между кривыми неодинаковое даже при выпуклом контуре.
ага, но это из-за того, что в примере точки для дубля считаются абы как - просто 'расширением' от геометрического центра если считать, отступая по нормали, то будет ровно http://silin.su/trash/spline/testSpline1.swf но непонятки с острыми загибами и петлями остаются канеш, хотя, имо, их все равно легче преодолеть, чем для безьевого варианта |
|
|||||
|
Цитата:
В чём проблема взять какие-то точки вашей кривой, найти в них касательные если они не известны и взять нормали, по нормалям отложить требуетмое расстояние и нарисовать такую же кривую по новым точкам. Другой вопрос если задача стоит как найти множество точек равноудалённых от заданной кривой, так там может быть много косяков, в частности на кривой без петель такая кривая, которая отстоит от заданной на одно и то же расстояние может получится с петлями. Вероятно возможны ещё какие нибудь косяки. А вам нельзя просто численно пройтись по кривой по точкам и просчитать нормали и посторить аппроксимацию достаточной точности?
__________________
:) |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|