![]() |
|
![]() ![]() ![]() |
|
Alexei |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 20.8.2003 Репутация: нет Всего: 4 |
Есть изображение 3д, в каком-нибудь 3д Максе, как получить его развертку?
|
|||
|
||||
Tatarin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 5.1.2004 Где: Россия Репутация: нет Всего: нет |
что значит развертку? проекции знаю, развертка - не знаю...
|
|||
|
||||
val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Развёртку я понимаю, как проецирование трёхмерного объекта на горизонтальные и вертикальные плоскости. В начерталке это называется тройным сечением или что-то типа этого... Добавлено @ 10:43 А вообще, отталкиваться надо от простого - проецирования отрезка в 2-ух мерной плости в декартовой системе координат, например, на ось Х. Тобишь спроецированная длина будет X*cos(alpha), где alpha- угол наклона прямой к оси Х... Ну дальшее обобщаем на N-мерное простанство... ![]() -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
для ентого тебе для начала надо сделать триангуляцию поверхности и от нею разбить все тело, после чего и разварачивать
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
А что это значит? -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
все-таки неплохо было бы знать, что автор понимает под разверткой объекта (хотя бы на примере)
насколько я знаю, приближение поверхности набором треугольников (это - как аппроксимация кривой с помощью ломаной) -------------------- qqq |
|||
|
||||
Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
![]()
![]() ![]() -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
Alexei |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 20.8.2003 Репутация: нет Всего: 4 |
Глобус, например,если его распороть по шву .
Никто не заругает? ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
как я понял, на 3D-объекте есть какой-то рисунок, который и является основной целью всего этого...
тогда можно что-нибудь вроде этого: 1. вписываем объекта в цилиндр (как его выбирать - это еще вопрос) 2. каждую точку объекта проектируем вдоль радиуса на поверхность цилиндра -------------------- qqq |
|||
|
||||
Mad |
|
|||
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: нет Всего: 19 |
Общий алгоритм можно представить так:
1 Выбераем грань. 2 поворачиваем обьект так, чтоб выбраная грань была паралельна плоскости проекции 3 проецируем грань на плоскость. 4 выбераем ребро на спроецированной грани. 5 вращаем обьект, относительно выбранного рера, так чтоб смежная грань стала паралельной плоскости проекции 6 проецирум грань. 7 повторяем 4 пока не будут спроецированны все грани. т.е какбы перекатываем обьект поплоскости ![]() |
|||
|
||||
skyboy |
|
||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
некрррропостеееер!!!
интересно, существуют ли алгоритмы выбора ребра, для, скажем, минимизации площади развертки. так чтоб без реализации полного перебора. кроме того, у алгоритма есть...хм, недостаток: развертка получается последовательностью полигонов, когда каждый полигон соединен с двумя: следующим и предыдущим. к примеру, такая развертка куба не получится:
получится только так:
|
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
думал, как же можно определить целевую функцию построения развертки, которую можно будет минимизировать/максимизировать. вот в голову пришло: минимизировать сумму длин "швов"(максимизировать длину "сгибов").
после чего пришла в голову идея: задача выбора последовательности полигонов может быть сведена к задаче коммивояжера, где узлами графа будет полигоны, ребрами - факт смежности двух полигонов, а весом можно взять разность между максимальной длиной ребра и длиной текущего ребра. в таком случае, минимизация суммы весов при проходе даст максимизацию суммы сгибов(при выборе определенного ребра мы генерируем последовательность полигон 1 + полигон 2, уже соединенных между собой). естевенно, после генерации последовательности надо будет проверить развертку на самопересечение и произвести разделение развертки на непересекающиеся сегменты или произвести поиск другого решения. что скажете? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
блин, чем я думал?
после триангуляции, каждый узел получаемого графа будет соединен с тремя соседями. следовательно, куча узлов с нечетным количеством ребер - гамильтонов цикл невозможен. это не задача коммивояжера. фактически, необходимо свести имеющийся граф к задаче коммивояжера, удалив часть ребер(на развертке они будут "швами" - не будут соединять две грани) с минимальной суммарной длиной, так чтоб в оставшемся графе можно было построить гамильтонов цикл. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |