Был один треугольник, стало - ?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Был один треугольник, стало - ?

Сообщение d3drm » 18.01.2006 (Ср) 0:19

Такая ситуация. Надо разделить треугольник, путем вырезания из него другой фигуры. Для начала самый примитив, вырезать из треугольника - треугольник.

Как это выглядит:

Изображение

То есть по сути программа должна понимать с какими точками ей образовывать новые треугольники, чтобы заполнить оставшееся пространство... Есть мысли?
ХЎ

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.01.2006 (Ср) 1:46

Общий алгоритм в голове сложился... Вернее разложился на более мелкие вопросы. Один из них пока не могу решить. Видно, что при данной задаче треугольник деллится на 6. Также при этом каждая вершина начального треугольника соединяется с двумя вершинами вырезаемого. Как найти эти вершины?
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.01.2006 (Ср) 5:45

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

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 18.01.2006 (Ср) 6:21

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

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 18.01.2006 (Ср) 9:25

Уже проведенную линию можно пересечь, не пересекая сторон внутреннего треугольника можно тока в случае, когда стороны треугольников параллельны. А если треугольники подобны, то получается вообще интересный случай.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 18.01.2006 (Ср) 14:48

Matew писал(а):Уже проведенную линию можно пересечь, не пересекая сторон внутреннего треугольника можно тока в случае, когда стороны треугольников параллельны.

Не только.
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.01.2006 (Ср) 19:58

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


вот это какжется более-менее правдивым алгоритмом... можешь расписать подробнее? что есть третья сторона? противолежащая углу, чтоли?
ХЎ

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 18.01.2006 (Ср) 20:09

d3drm писал(а):Вот это какжется более-менее правдивым алгоритмом... можешь расписать подробнее? что есть третья сторона? противолежащая углу, чтоли?


Ну да. Есть три точки, берешь одну а для двух других вычисляешь уравнение прямой, потом уравнение прямой для выбранной точки и проверяемой вершины. Смотришь где пересечение (х например) если он не между иксами концов отрезка то покатит. Рисуешь прямую и записываешь её в проверяемые. Следущую проверяешь еще и на пересечение с ней.

Вот только назвать этот алгоритм лучшим я не могу. Может быть он и нечего, но не обещаю. ИМХО где-то должен быть лучше. Очень похожий может быть, но лучше.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.01.2006 (Вс) 0:52

Вот вроде довел алго до ума, прошу протестить пытливый народ.

В проге - левой кнопкой строить большой треугольник, правой - маленький. Трег. появляется после расстановки трех точек. Далее кнопкой CUT режем треугольник.

Маленький треугольник никакими своими частями не должен выезжать за границы большого. Это еще не сделано.

Ну а остальное прошу помочь протестить вас. Если на скрине линии будут заезжать за вырезаемый треугольник или будут пересекаться, прошу сообщать здесь с выложенным скрином...
Вложения
Project1.rar
Дырокол
(7.37 Кб) Скачиваний: 52
ХЎ

GDC
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 260
Зарегистрирован: 03.10.2005 (Пн) 22:22
Откуда: MoScOw

Сообщение GDC » 22.01.2006 (Вс) 14:13

У меня вопрос!!
КАК ПОЛЬЗОВАТЬСЯ?Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!
я открыл у меня белый лист и три кнопки, где при нажатии на CUT ощибка!!!
Народная былина:
Встретились на дысь двое пьянчуг, и начали они играть в пьяницу и была у них ничья...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 22.01.2006 (Вс) 18:20

Наверно я гений, но до мя доперло как пользоваться прогой :lol:
Левой кнопкой мыши делаются 3 точки большого треугольника, правой-маленького :)
Кст а от каждой вершины большого треугольника должно быть 2 к вершинам маленького линии или нет?
Если всё делать своими ручками, они скоро отвалятся !

GDC
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 260
Зарегистрирован: 03.10.2005 (Пн) 22:22
Откуда: MoScOw

Сообщение GDC » 22.01.2006 (Вс) 21:39

Была глупость!!!!

Мне очень стыдно! :oops: :oops:
Последний раз редактировалось GDC 24.01.2006 (Вт) 16:34, всего редактировалось 1 раз.
Народная былина:
Встретились на дысь двое пьянчуг, и начали они играть в пьяницу и была у них ничья...

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 22.01.2006 (Вс) 21:45

GDC
Человек тестирует алгоритм, а не делает мега прогу по нарезке треугольников. ИМХО это нормальное состояние.

Писать интерфейс на тест... ну скажем глупо.

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

Сообщение Хакер » 23.01.2006 (Пн) 0:56

Этот человек видимо делает что-то вроде 3d редактора, а в данный момент делает возможность редактировать полигоны.

Я экстоsense :D
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 23.01.2006 (Пн) 18:25

GDC, Kovu дятлизм не излечим.

d3drm писал(а):...В проге - левой кнопкой строить большой треугольник, правой - маленький. Трег. появляется после расстановки трех точек. Далее кнопкой CUT режем треугольник. ...


А что должно получиться написано и нарисовано выше.

Верно, как раз 3D редактор я и делаю, а данный алгоритм - это часть модуля вырезания "фигур из других фигур". В идеале треугольники должны резаться в произвольном положении исходного и вырезаемого, но вырезаение треугольника, когда он полностью находится внутри исходного оказалось самой сложной задачей. Помимо этого уже реализовано 5 случаев другого расположения треугольников (когда, например пересекаются две грани каждого; когда треугольники образуют собой шестиконечную звезду и т.д.)


Снова дятлам:
Если бы у меня было время писать интерфейс и хелп к данной программе, а также исключение ошибок, которые возникают в случае запрещенных (на словах) действий, то я бы лучше написал бота, проверяющего правильность построения геометрии и не выкладывал бы сюда программу.
ХЎ

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 23.01.2006 (Пн) 19:07

d3drm
ну так от каждой вершины большого треугольника должно быть 2 линии к вершинам маленького или нет? :)
Если всё делать своими ручками, они скоро отвалятся !

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 23.01.2006 (Пн) 22:13

d3drm
А не лучше тогда сразу в пространстве задачу решать? Честно говоря тоже думал что это 3д редактор будет )

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 24.01.2006 (Вт) 12:36

Kovu, да, так оно и должно быть =)

GAGArin, я чесс говоря с 3D редакторами мало дела имел, поэтому изобретаю колесо, не зная. что оно круглое. Данный инструмент будет работать в окне проекции, то есть вырезаться будут спроецированные модели. До полного вырезания фигур в 3Д пока еще не дорос =)
ХЎ

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 24.01.2006 (Вт) 16:21

Тогда держи баг :)
Вложения
455.rar
(15.04 Кб) Скачиваний: 30
Если всё делать своими ручками, они скоро отвалятся !

GDC
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 260
Зарегистрирован: 03.10.2005 (Пн) 22:22
Откуда: MoScOw

Сообщение GDC » 24.01.2006 (Вт) 16:30

d3drm Че-то сглупил!!! Приношу извенения, тогда все понятно!!!
:oops:
Народная былина:
Встретились на дысь двое пьянчуг, и начали они играть в пьяницу и была у них ничья...

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 24.01.2006 (Вт) 16:33

d3drm
Вообще если разобрался с 2д то разберешься и с 3д принципиальной разницы нет. Плоскости вместо прямых, прямые вместо точек. Точки вместо... Ну вобщем точки сами по себе )) Писать восстановление 3д по проекциям ИМХО сложнее чем просто помнить 3д и отрисовывать проекции по нему.

Kovu
Не думаю что это баг ) Ни один редактор лучше не разрежет. :roll:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 24.01.2006 (Вт) 16:46

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

Kovu, да, на самом деле это - фича 8) Одна сторона преграждает доступ к двум маленьким, поэтому приходится соединять по другому. Вырожденный случай. Но спасибо все равно =)
ХЎ


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 104

    TopList  
cron