|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.01.2010, 13:32 | #1 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
замкнутый произвольный контур
Что то ообразить не могу.
Дана двумерная булева матрица некой размерности, по некорорым элементам прошлись и получился замкнутый контур. мне нужно чтобы все, что внутри, включая элементы контура присвоить им true. ну это чем то напоминает заливку в графических редакторах. Что то не могу найти что находится внутри контура. Контур - это array of TPoint - в нем хранятся координаты каждой из точек, по которым прошлись.
Писано по д'Эльфийски
|
09.01.2010, 13:52 | #2 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Ну логично предположить, что нужно заполнить все Y значения, лежащие между одинаковыми X значениями.
Тобиш делаем так: берем значение X и ищем по всему TPoint такое же значение X. А далее от Y1 до Y2 заполняем все true. Код:
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
11.01.2010, 13:27 | #3 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
ма. это для выпуклого контура, я так тожк хотель только церед два while а вдруг контур "П" образный например? ну в общем если он не выпуклый.
Писано по д'Эльфийски
|
11.01.2010, 22:13 | #4 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 21
|
Проще говоря вот это залейте:
Короче тут прикол в том, что как ни крути заливать придётся с края. например с верхнего левого угла. И залить всё то, что не требует заливки. А потом инвертнуть.И в любом случае возникает вопрос о вложенных периметрах, пусть и замкнутых. Типа кольцо в кольце меньшего диаметра соприкасаются в одной точке. ... Такшта заливайте с краю. Последний раз редактировалось _bAd_; 11.01.2010 в 22:16. |
12.01.2010, 14:37 | #5 |
Регистрация: 22.12.2009
Сообщений: 4
|
Ну тут вот книжка есть про графику.
http://www.phatcode.net/res/224/files/html/index.html Chapter 38 The Polygon Primeval Drawing Polygons Efficiently and Quickly |
13.01.2010, 22:03 | #6 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
ну такие сложные фигуры вряд ли надо, но что то типа одной из конечностей такой звезды может быть, а может быть еще и что нибудь типа пятиконечной звезды... там две конечности получаются на одном уровне.... и как их красить а как это в графических редакторах реализовывают? например так
Писано по д'Эльфийски
Последний раз редактировалось Лубышев; 13.01.2010 в 22:07. |
14.01.2010, 18:51 | #7 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 21
|
Ну как как.
1 - В редакторах может быть сделано как в Паинте. Но там закрашивают имея не только контур, а еще точку с которой начинать. Это в разы упрощает задачу. А в твоих исходных условиях я про точку ничего не слышал. 2 - Либо если периметр не слишком плавный, имеет некоторые вершины, соединённые прямыми, то можешь обратиться к методу разбиения на треугольники. Тогда получив набор , естественно, выпуклых треугольников, каждый закрасиш по одиночке 3 - Либо как я сразу сказал - закрашивай "Из точки" как паинт, поставив точку в верхнем левом углу. Потом инвертируй. Получишь результат. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рассчитать контур заземления | HellMercenariess | Компьютерное железо | 10 | 22.05.2013 11:25 |
Произвольный клик мышью | Lime | Безопасность, Шифрование | 9 | 28.11.2009 18:23 |
произвольный доступ к файлам | StudentPolitech | Общие вопросы C/C++ | 7 | 06.06.2009 14:28 |
произвольный выбор из констант | Arhangel_bes | Помощь студентам | 11 | 12.10.2008 22:07 |