Сплайны Безье

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 07.01.2010 (Чт) 20:34

Они все красивые.

В равной степени?
Если в равной, то самое подходящее решения для тебя, это брать случайные точки. Потому что я брал именно случайные.


Хакер Значит, ты вопрос понял с самого начала.
Так чего же ты приставал ко мне и к другим участникам по конкретике вопроса?

А что, был хоть грамм сомнений, что я его понял?

Я приставал чтобы ты своё понятие о красоте выразил математически, чтобы все остальные, независимо от их собственного понимания красивости, дали решение, соответствующее именно твоим критериям красивости.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Сплайны Безье

Сообщение Mikle » 07.01.2010 (Чт) 20:49

Понятие "красивый" имеет вполне объяснимый смысл, говорят, что красивые самолёты хорошо летают, и никакой "Хакер" не придирался к автору выражения с уточнениями. Красивый в данном случае - значит внешне соответствующий некоторому физическому критерию качества. Рисунок №2 Proxy назвал красивым, я с ним согласен - это похоже на параболу, кривую, соответствующую естественному изгибу предмета без изъянов (красивого).

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Сплайны Безье

Сообщение Александр Дмитриев » 07.01.2010 (Чт) 20:56

Кстати, когда Безье придумывал свои линии, он ведь тоже ставил перед собой не техническую, а творческую задачу. У него тоже было бесконечное кол-во вариантов. У него тоже не было математически строгого определения красивости. Он придумал алгоритм, который проводит линии через заданные точки заданным в какой-то степени способом так, чтобы ему, а также большинству других людей, линия показалась красивой. И то, что он разработал, принесло пользу обществу, а ведь он пользовался "новым модным подходом".

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 07.01.2010 (Чт) 21:10

Понятие "красивый" имеет вполне объяснимый смысл, говорят, что красивые самолёты хорошо летают, и никакой "Хакер" не придирался к автору выражения с уточнениями.

Самолёты делают такими, не потому, что это красиво. Самолёты делают такими, какими их делают, потому что это отвечает поставленное задаче: самолёт должен летать и обладать заданными аэродинамическими качествами.


Форма арок делается такой, чтобы нагрузка распределялась хорошим образом.

Шаболовская телебашня сделана такой, какой она сделана, не потому, что это красиво, а потому, что такая конструкция жесткая, для постройки требуются прямые элементы, соотношение прочность/вес/ветроустойчивость --- годное.

Все эти формы (поверхности самолёта, арки, гиперболоидные конструкции) хорошо описываются математически.
Указанная здесь красивость Безье-сплайнов пока никак математически не описана.

Александр Дмитриев, что у вас за повёрнутость на творчестве?

Безье ввёл эти кривые, чтобы иметь удобный способ характеризовать сложные кривые малым набором точек. А не из каких-то соображений красивости.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Сплайны Безье

Сообщение Proxy » 07.01.2010 (Чт) 21:14

Интересные факты:
Кривые Безье были разработаны в 60-х годах XX века независимо друг от друга Пьером Безье (Bеzier) из автомобилестроительной компании «Рено» и Полем де Кастелье (de Casteljau) из компании «Ситроен», где применялись для проектирования кузовов автомобилей.

Всёже задача была более техническая, нежели творческая.
Строили инженеры кривые и лекалом, и были определённые принципы построения (может формируемые с опытом, может просто устно оговорённые, например ни разу не видел авто с выступом на 5 метров при соединении 2х отрезков), а Безье просто пытался подобрать алгоритм построения наиболее схожих с тем самым лекалом кривых

Самолёты делают такими, не потому, что это красиво. Самолёты делают такими, какими их делают, потому что это отвечает поставленное задаче: самолёт должен летать и обладать заданными аэродинамическими качествами.

Не думаю, что это касается всех узлов самолёта. Окрасить технически самолёты было бы может рационально в шаховницу, на таком самолёте дефекты поверхностей было бы проще выявить. Ан нет, самолёты раскрашиваются иначе. Я бы свой самолёт покрасил полосочками чёрного и яркого и написал бы низкими широкими буквами "I hate my life" вдоль всего борта.
Последний раз редактировалось Anonymous 07.01.2010 (Чт) 21:24, всего редактировалось 1 раз.
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 07.01.2010 (Чт) 21:23

Мы здесь о геометрической красоте, а не о цвето-сочетаемости.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Сплайны Безье

Сообщение Proxy » 07.01.2010 (Чт) 21:30

И геометрически... У того же ТУ154 были образцы и с острым игловидным носом (большая аэродинамика) (в нете есть фотки), однако чувствуешь какие модификации всё же в небо полетели? -аэродинамика +эстетика
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 07.01.2010 (Чт) 21:53

Proxy писал(а):игловидным носом (большая аэродинамика)

Пруфлинк?

И, даже если это было, и даже если он действительно обладал лучшими качествами, с чего ты взял, что этот нос не применили по каким-то эстетическим соображениями, а не из-за того, что он мешал работе, скажем, "грозы"?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Сплайны Безье

Сообщение Александр Дмитриев » 07.01.2010 (Чт) 22:27

Хакер писал(а):Указанная здесь красивость Безье-сплайнов пока никак математически не описана.

Её и не нужно никому описывать. Поймешь ты это или нет? Описывать требования математически нужно только для технических задач, а это не техническая задача.

Хакер писал(а):Александр Дмитриев, что у вас за повёрнутость на творчестве?

Дело не в том, что я повёрнут на творчестве, а в том, что задача эта творческая. Я просто констатировал факт. Через набор точек можно провести бесконечное множество сплайнов Безье, для которых эти точки будут опорными. Поэтому задача выбора из них одного является творческой, так как не существует точного критерия выбора.

Хакер писал(а):Безье ввёл эти кривые, чтобы иметь удобный способ характеризовать сложные кривые малым набором точек. А не из каких-то соображений красивости.

Говоря твоим языком, у него всё-равно оставалось бесконечное кол-во вариантов. Можно придумать бесконечное кол-во кривых, которые зависят от малого кол-ва параметров и при этом "характеризуют" некие сложные кривые. Опять же "характеризуют" тоже не вполне точное понятие.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 07.01.2010 (Чт) 22:36

Исходная задача: "вычислить координаты". С каких это пор задачи на вычисление координат становятся творческими?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Сплайны Безье

Сообщение Александр Дмитриев » 07.01.2010 (Чт) 22:42

С тех пор как нету точного критерия правильности вычисления. Обычно такие задачи называют творческими.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 07.01.2010 (Чт) 22:49

Критерий есть, только автор издевательски избегает его сформулировать.

Большинству нравится вариант (1, 2), более того, этот вариант рисуется ПО в автоматическом режиме. Значит это не рисование от балды, а вполне описывающийся математически случай.

З.Ы. Ты гуманитарий?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Сплайны Безье

Сообщение Viper » 07.01.2010 (Чт) 23:14

Proxy писал(а):И геометрически... У того же ТУ154 были образцы и с острым игловидным носом (большая аэродинамика) (в нете есть фотки), однако чувствуешь какие модификации всё же в небо полетели? -аэродинамика +эстетика
Это не варианты ТУ-154, это летающие лаборатории на основе Ту-154. На них испытывались радары для боевых самолетов.
Красивость самолетов - побочный эффект от требований аэродинамики.
Весь мир матрица, а мы в нем потоки байтов!

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Сплайны Безье

Сообщение Александр Дмитриев » 07.01.2010 (Чт) 23:23

Хакер писал(а):Критерий есть

Если у тебя есть критерий, скажи его.
Хакер писал(а):З.Ы. Ты гуманитарий?

Я учился в гуманитарной школе в гуманитарном классе, но в институте учусь на математической специальности.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 07.01.2010 (Чт) 23:26

Автор должен сказать критерий.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Сплайны Безье

Сообщение Александр Дмитриев » 07.01.2010 (Чт) 23:40

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

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Сплайны Безье

Сообщение Debugger » 08.01.2010 (Пт) 0:40

Изначально, у меня возникали изломы на стыковках кривых безье. Повозившись с этим, решил создать тему с вопросом.
Надо провести красивую линию. Красивую с точки зрения человеческих чувств. Разве можно описать человеческие чувства формулами? Безусловно, задача творческая.
Если кто-то предложит формулу, и рисуемые ей кривые понравятся большинству форумчан, разве это не будет решением задачи?
Последний раз редактировалось Debugger 08.01.2010 (Пт) 1:05, всего редактировалось 1 раз.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 08.01.2010 (Пт) 0:45

Разве можео описать человеческие чувства формулами?

Можно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Сплайны Безье

Сообщение MIT » 08.01.2010 (Пт) 1:06

[offtop]
Хакер писал(а):
Разве можео описать человеческие чувства формулами?

Можно.

Хотелось бы увидеть формулы любви и счастья.
[/offtop]
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 08.01.2010 (Пт) 1:17

Мне тоже хотелось бы. Но вероятность этого стремится к нулю, в отличие от вероятностью получить формулу красивости Безье-сплайна.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Сплайны Безье

Сообщение Antonariy » 11.01.2010 (Пн) 16:06

Александр Дмитриев писал(а):Автор должен сказать критерий, если он формулирует техническую задачу, он же сформулировал творческую задачу.
Изначально автор сформулировал муть.
Реальная формулировка звучит так:
Debugger писал(а):у меня возникали изломы на стыковках кривых безье.
Но ее автор почему-то смог составить лишь к концу обсуждения.

А ваш спор насчет характеристики задачи гроша ломаного не стоит. Техника: из всего бесконечного множества решений отбросить те, которые не дают того, что даже с натяжкой можно назвать изломом (гарантированно не "уродливы"), а из оставшихся предложить автору несколько, выбранных случайным образом. Творчество: выбрать не случайно, а что-нибудь повеселей параболы.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 11.01.2010 (Пн) 22:31

из <...> множества <...> отбросить те, которые <...> (гарантированно не "уродливы"), а из оставшихся предложить автору

Т.е. предложить автору те, которые уроды?

Antonariy, ты понимаешь, что большинство программ чертят кривую так, как у показал в первой строке втором столбце. И большинству здесь это показалось лучшим вариантом. Значит критерий красивости сушествует, и попытка выбить его из автора стоит гораздо больше ломаного гроша.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Сплайны Безье

Сообщение Mikle » 12.01.2010 (Вт) 9:19

Хакер
Я с тобой согласен, автор неверно сформулировал вопрос изначально, но, хоть мы и программисты, а в жизни вынуждены :) общаться с обычными людьми, поэтому мы поняли, что имелось ввиду, и ты, думаю, тоже понял, но тебе важнее доказать, что "автор не прав".
А то, что автор не определил критерий красивости, это вполне нормально, это философский вопрос, гораздо более сложный, чем изначальная тема.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 12.01.2010 (Вт) 10:19

Нет, мне не надо доказаь, что "автор не прав", мне надо заставить автора напрячь мозг и сформулировать критерии. Как я сделал в соседней теме, например.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Сплайны Безье

Сообщение Antonariy » 12.01.2010 (Вт) 11:03

Хакер писал(а):Т.е. предложить автору те, которые уроды?
У кого-то из нас проблемы с формальной логикой. Если отбросить уродов, останутся не-уроды, и вот из них-то выбрать и предложить.
Хакер писал(а):Значит критерий красивости сушествует, и попытка выбить его из автора стоит гораздо больше ломаного гроша.
А я нигде и не говорил, что его нет, тем более автор его таки дал: отсутствие изломов. Я говорил о характеристике задачи.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 12.01.2010 (Вт) 12:25

У кого-то из нас проблемы с формальной логикой.

Ни у кого. У тебя проблемы с предложением. В нём дополнение-пояснение в скобках имеет противоположенный смысл по отношению к поясняемому объекту.

Вот так было бы нормально:
Техника: из всего бесконечного множества решений отбросить те, которые не дают того, что даже с натяжкой можно назвать изломом, а из оставшихся предложить автору несколько, выбранных случайным образом.


А иначе:
Техника: из всего бесконечного множества решений отбросить те, которые не дают того, что даже с натяжкой можно назвать изломом (гарантированно не "уродливы"), а из оставшихся предложить автору несколько, выбранных случайным образом.

К чему относится кусок {гарантировано не "уродливы"}? Кто ({они}) гарантировано не уродливы? Единственный вариант, толкования --- решения. Получается, что надо отбросить те решения, которорые не дают отсутствия изломов, они же, гарантированно не уродливы. Я понимаю, что у тебя скобка относится левой части только до первой запятой, но согласование по роду и числу преимущественно, чем смежность внутрискобочного выражения и придаточного предложения. Вот так вот.

тем более автор его таки дал: отсутствие изломов.

О боже, опять двадцать пять. Да это не условие красивости, это условие гладкости. Можно нарисовать сплайн, не нарушающий условия гладкости (которую большинство здесь присутствующих, включая тебя, и, что даже более парадоксально, сам автор выдают за красивость), но при этом чудовищно некрасивый.

Например, я думаю, все без исключения скажут, что левый вариант лучше правого (хотя оба гладкие):
bezier_auto_and_manual.png
bezier_auto_and_manual.png (2.58 Кб) Просмотров: 3503


И это совсем не потому, что линия слева короче, чем линия справа. В следующем случае линия справа короче:
bezier_auto_and_manual2.png
bezier_auto_and_manual2.png (1.38 Кб) Просмотров: 3505


И несмотря на это, линия слева всё-равно считается более красивой: значение имеет не длина, а форма.
Кстати, заранее, если-кто-то не верит, что справа сплайн, не угол из двух отрезков:
bezier_manual2_magnified.png
bezier_manual2_magnified.png (18.26 Кб) Просмотров: 3503


А критерий красивости (несмотря на всю субъективность и философию) математически формуируется достаточно просто: представь, как поведёт себя стальной пруток/тросик, если его продеть через кольца, свободно вращающиеся вокруг осей, параллельных друг другу и перпендикулярных плоскости тросика.

Вот этой мой критерий, и, по-моему, он предельно близок к тому, что изображалось на всех моих картинках в качестве красивого варианта. У автора может быть свой критерий, отличный от этого. Важно то, чтобы он его сформулировал и выложил.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Сплайны Безье

Сообщение Antonariy » 12.01.2010 (Вт) 13:02

Ни у кого.
У меня. Перемудрил с отрицаниями.

Да это не условие красивости, это условие гладкости.
Почему бы условию гладкости не быть условием красивости? Одним из составляющих, в первом приближении?
Например, я думаю, все без исключения скажут, что левый вариант лучше правого (хотя оба гладкие):
Значит я исключение. Мне больше нравится правый.
В следующем случае линия справа короче:
А так же нарушает первое условие: ее верхнюю часть можно с натяжкой назвать изломом. Теперь левый вариант рулит.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Сплайны Безье

Сообщение Хакер » 12.01.2010 (Вт) 13:10

Нет, если с красивостью можно поспорить, то излом --- чисто математическое понятие. Изломов здесь нет нигде.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Сплайны Безье

Сообщение Proxy » 12.01.2010 (Вт) 17:52

Может проще создать другую ветку и там попытаться выявить, по каким критериям средний человек оценивает кривые Безье красивыми или "уродливыми". Это кажется более разумным, чем цепляться к словам, доказывать чью-то неправоту... никто ж не слушает даже.
Надо из группы кривых выбрать ту, которую люди считают красивой и найти в ней какие-то характерные соотношения параметров. Что-то вроде небольшой исследовательской работы. Откинуть маргиналов и сделать статистическое исследование.

Ну или пусть автор однозначно сформулирует то, что он ожидает услышать.
Follow the white rabbit.

MishaMP
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 15.09.2010 (Ср) 16:14

Re: Сплайны Безье

Сообщение MishaMP » 15.09.2010 (Ср) 16:23

Я приношу вибаченя за те, що відкрив достатньо стару тему, і вибачайте за правила які я порушую...
На російській я повідомлення писати не буду (не хочете не бачити - видаляйте)
я ж для вас пишу дослідження які провів.

я досить молодий програміст, мій стаж тільки 1 рік
і починаючи з грудня 2009 року я вивчав криві Безьє

Питання, як провести сплайн з кубічних кривих через N точок... ой як непросте.
але воно розв'язане уже більше 10ти років тому.
Компанія Adobe в славнозвісному CorelDraw продемонструвала хороший результат. Нажаль Adobe тримає свої коди в таємниці, тому до цього розв'язка доступу немає. :(

Потрібно крутись своїми силами.

Взагалі кажучи якщо точок буде 4 то це задача перетворюється в примітивну:
беремо матрицю Бернштейна з множиною коефіцієнтів (t0=0 , t1 , t2 , t4=1) і справа записуємо координати точок через які бажаємо провести криву

Якщо зведемо ліву матрицю до одиничної, то отримаємо контрольні точки, які потрібно взяти для того щоб крива проходила через 4 точки.
Изображение
Q і - це контрольні точкий які ми отримаємо

це реаліцованно в файлі: Matrix_Ber.rar (знизу)

але якщо точок більше 4х що тоді?

Переважно такі програми, які не мають алгоритму CorelDraw беруть всі точки через які провели мишкою, розріджують алгоритмом Дугласа-Пеккера (це алгоритм який будує ламану по послідовності точок)
а далі проводить через точки ланцюга алгоритм який в цьому пості уже згадувався, і запропонований тут - http://www.antigrain.com/research/bezie ... ERPOLATION
Відповідно до ступеня згладжування алгоритмом Дугласа-Пеккера, отримаємо порівняну не дуже ввелику кількість кривих і в той же час все гладко.
Ну але алгоритм далеко не ідеальний - спробуйте провести ідеально прямокутник ... завжди отримаєте щось назразок овалу :)

в файлі lastik.rar ви побачите реалізацію цього алгоритму в якості олівця

але от те що ви говорите "Красиво проходить через точки" математично можна сформуювати так:
побудувати криву таким чином, щоб сумма відстаней від точок до кривої, була мінімальна

питання: як знайти дистанцію до кривої?
ну це питання не таке і складне, можна різними способами... але мені найкраще себе показав алгоритм (чисельними методами):
виписати рівнняня дистанції, до кривої і потім його розвз'язувати.
Якщо ви вважаєте що рівняння дистанції до кривої дуже складне - ви помиляєтесь.
(просто потрібно зробити кілька підстановок, я це рівняння розвязав сам без чиєї небуть допомоги)
Якщо ви вважаєте, що рівнняня 6го степеня. Я ввас втішу - ні, це рівнняня 5ї степені
(рівнняня не парних степенів завжди має хоч 1 розв'язок, рівнняня парних може не мати дійсних коренів.
А дистанція вона то завжди існує, тобто це рівняння обовзязково непарної степені :) )
ну виписувати його я не буду, но повірте наслово дуже просто виглядає. Але рішити 5ту степінь потрібно тільки Чисельними Методами з деяким коефіцієнтом точності.
Я на той час мав і інші способи розвязку (також сам вигадував)
В файлі Min_D.rar (знахоження дистанції від точки до кривої)
В файлі BZMin_Time.rar - тестовий приклад (перевіряв на швидкодію алгоритм чисельних методів)

Чисильними методами я навіть рішив як можна знайти перетин кривої і Еліпса
Згодом я цю ідею використав для ластіка, який витирає олівець.
Файл: bz_&_elipse.rar

Між іншим я на гуглив був один математичний алгоритм (http://www.immsp.kiev.ua/publications/a ... 4_2004.pdf) , розібрався в ньому і зараз можу продемонструвати в файлі: Iteration.rar

це деякий Ітераційний алгоритм, в основі брати Матриці Точок, Матрицу Берштейна і звести до матриці яку можна буде мінімізувати методом Гауса.
В результаті отримаємо деяку систему з 4х невідомих... цими невідомими і буде знечення координат контрольних точок.
Алгоритм складається з двох частин, перший - побудова кривої з зазделегідь взятими коефіцієгтами t. Другий етам мінімізувати по коефіцієнтах (іншими словами знайти мінімальну, відстать)



от тільки недолік поки цього алгоритму , це те що він проводить всьоголише одну криву.
Але оскільки все зводиться до деякої системи:
a11 p1.x + a12 p2.x = R1
a21 p1.x + a12 p2.x = R2
то з відси видно, що можна зафіксувати одну з точок і рішити цю систему для однієї з точок.
Одже відповідно можна спробувати ділити ланцюг на право-побудовані точки, і ліво-побудовані точки.
Реалізації цієї ідеї я поки не маю. :(



PS: якби цей пост нагуглив би раніше, тоді би відповів своєчасно :)
Вложения
Min_D.rar
(207.72 Кб) Скачиваний: 98
BZMin_Time.rar
(209.48 Кб) Скачиваний: 99
bz&ellipse.rar
(206.77 Кб) Скачиваний: 99
lastik.rar
(207.33 Кб) Скачиваний: 99
Iteration.rar
(167.28 Кб) Скачиваний: 110
Последний раз редактировалось MishaMP 07.10.2010 (Чт) 19:15, всего редактировалось 1 раз.

Пред.След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 46

    TopList  
cron