Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 31.01.2013, 15:55   #1
Serega
Оператор ЭВМ
 
Аватар для Serega
 
Регистрация: 19.09.2008
Сообщений: 21
Написано одно полезное сообщение
(для 2 участников)
Объединение многоугольников

Что-то типа программы для черчения. На рисунке 2 нарисован план дома, стены состоят из прямоугольников, каждый прямоугольник можно выделить отдельно и отредактировать(толщина стен и т.п.), при продолжении стены на стыне отображаются грани соседнего прямоугольника( на рисунке будет понятнее в красных кружках) . Ну и собственно вопрос как нарисовать план дома чтоб стены были как на рисунке 1, без перегородок при стыке. Может есть идеи, алгоритм?
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 1172
Размер:	129.3 Кб
ID:	18561  Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 1119
Размер:	136.1 Кб
ID:	18562  
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 16:16   #2
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Объединение многоугольников

Как то так: Сначала расставить/настроить все прямоугольники, а потом создать из них картинку где участок на котором лежит прямоугольник не прозрачный, а пространство самой комнаты прозрачное и сверху наложить другую картинку с диагональными линиями.
Но в Блитз3д стандартные картинки не поддерживают прозрачность так что надо подключать FastLibs.
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 18:27   #3
Serega
Оператор ЭВМ
 
Аватар для Serega
 
Регистрация: 19.09.2008
Сообщений: 21
Написано одно полезное сообщение
(для 2 участников)
Ответ: Объединение многоугольников

Так наверно можно, но должен быть способ полегче, например в 3d редакторах можно объединить несколько наложенных друг на друга плоских полигонов(многоугольников) в один, рассчитываются точки пересечения, внутренняя часть отбрасывается, а внешний контур остаётся. Смотрел алгоритмы оверлея многоугольников, так там то они либо не должны самопересекаться, с дырками или без, ещё всякие условия, не сильно разобрался в этом. Ну как-то так?
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 18:36   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Объединение многоугольников

вот так
боковые и нижние фейсы можно убрать
Миниатюры
Нажмите на изображение для увеличения
Название: pprpror.jpg
Просмотров: 1168
Размер:	72.5 Кб
ID:	18574  
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Igor (01.02.2013)
Старый 31.01.2013, 19:33   #5
Serega
Оператор ЭВМ
 
Аватар для Serega
 
Регистрация: 19.09.2008
Сообщений: 21
Написано одно полезное сообщение
(для 2 участников)
Ответ: Объединение многоугольников

Mr_F_ , как мне получить результат как на твоей картинке (top view), я хочу попробывать реализовать это всё в 2d (если смогу конечно), без применения 3d, только пока не соображу путь к решению. Думаю создать тип каждого прямоугольника со своими параметрами(координаты, размеры), присоединить с привязкой стены друг к другу думаю могу, а если стенку будут пересекать много остальных и вдоль и поперёк немогу ничего придумать. коряво выложил мысли
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 20:10   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Объединение многоугольников

2D оно в блице медленное все равно, а со всякими трюками будет ещё медленнее, юзай ортографик 3D.
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 20:28   #7
Serega
Оператор ЭВМ
 
Аватар для Serega
 
Регистрация: 19.09.2008
Сообщений: 21
Написано одно полезное сообщение
(для 2 участников)
Ответ: Объединение многоугольников

Ортографик 3d -это как? А на счёт скорости - не главное, мне понять бы принцип как сделать , подскажите только), а дальше дело пойдёт легче
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 20:41   #8
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Объединение многоугольников

это 3д и камера в ортографическом режиме (без перспективы)
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 22:18   #9
Serega
Оператор ЭВМ
 
Аватар для Serega
 
Регистрация: 19.09.2008
Сообщений: 21
Написано одно полезное сообщение
(для 2 участников)
Ответ: Объединение многоугольников

делать программу для 2d черчения через 3d наверно не совсем правильно, хотя может ошибаюсь, но вопрос остаётся в силе, как в blitz3d или pure basic(любой язык подойдёт с моим примером ) объединить многоугольники
(Offline)
 
Ответить с цитированием
Старый 31.01.2013, 22:36   #10
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Объединение многоугольников

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

как-то так
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Serega (31.01.2013)
Старый 01.02.2013, 00:00   #11
Serega
Оператор ЭВМ
 
Аватар для Serega
 
Регистрация: 19.09.2008
Сообщений: 21
Написано одно полезное сообщение
(для 2 участников)
Ответ: Объединение многоугольников

Примерно так?
type прямоугольник: - стена состоит из 4 стен независимых отрезков

1---x1(1000)-координата х 1го отрезка
y1(1000)-координата y 1го отрезка

2---x2(1000)-координата х 2го отрезка
y2(1000)-координата y 2го отрезка

3---x3(1000)-координата х 3го отрезка
y3(1000)-координата y 3го отрезка

4---x4(1000)-координата х 4го отрезка
y4(1000)-координата y 4го отрезка

каждый отрезок может состоять из 1000 маленьких
начало 1го отрезка будет x1(n),y1(n) а конец x1(n+1),y1(n+1)
затем проверяем пересекает ли 1й отрезок 2й прямоугольник:
-если пересекает линию 2го значит перестаём рисовать, проверяем дальше если опять пересекает линию 2го, начинаем рисовать
Написал вроде правильно но непонятно
В массиве первые будут стоять полные длины отрезков чтоб сравнивать границы до куда рисовать эти сран...е кусочки, чёта совсем запутался(
(Offline)
 
Ответить с цитированием
Старый 01.02.2013, 00:41   #12
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Объединение многоугольников

есть массив отрезков у тебя. есть отрезок в котором не должно быть линий.
для каждого из отрезков в массиве смотришь. попадает ли он в тот отрезок в котором не должно его быть:
если попал то соответственно текущий отрезок либо совсем исчезает, либо становится короче либо бьется на два отрезка.
соответственно в результате либо удаляем элемент из массива, либо меняем, либо меняем и добавляем. вроде довольно просто.
(Offline)
 
Ответить с цитированием
Старый 01.02.2013, 17:47   #13
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Объединение многоугольников

Делаешь как Mr_F_ предложил, но в 2д - рисуешь чёрные прямоугольники (заполненные внутри), потом чуть потоньше белые
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 01.02.2013, 19:32   #14
Serega
Оператор ЭВМ
 
Аватар для Serega
 
Регистрация: 19.09.2008
Сообщений: 21
Написано одно полезное сообщение
(для 2 участников)
Ответ: Объединение многоугольников

Нифига себе идея: рисую вначале все прямоугольники полностью черные и заполненые чёрным цветом, потом по тем же координатам прямоугольники белые и заполненые белым цветом? фиг бы догадался Белые прямоугольники рисовать с небольшим смещением и меньшим размером, чем будут они тоньше, тем толще будет линия обводки (толщина линий окантовки). Я правильно понял?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com