![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дайет совет!! [D6]
Frozzen © (2004-11-17 08:12:00)Господа
ситуация такая: построил изолинии, сейчас необходимо раскрасить облости между ними. Я думаю нужно получить полигоны, а затем их раскрашивать. Дак вот, не могу придумать алгоритм построения полигонов по имеющимся линиям.
Подскажите чего-нибуть!
Frozzen (2004-11-17 14:16:00) [1]стала проблема избежания двойного построения региона
Frozzen (2004-11-17 12:28:00) [2]все вроди встало все на свои места
Frozzen (2004-11-17 12:20:00) [3]на границе точек нет
Frozzen (2004-11-17 12:19:00) [4]не, проблема выбрать именно ту точку, которая действительно является следующей
PVOzerski (2004-11-17 12:17:00) [5]Проверяй точку на вхождение в уже созданные спски точек. Не входит - значит, новая.
Frozzen (2004-11-17 11:48:00) [6]не у меня все проще получается
ходиш либо по изолинии
либо по границе карты
основная сложность когда выходиш на границу найти точку следующей изолинии
Frozzen (2004-11-17 11:44:00) [7]уверен
PVOzerski (2004-11-17 11:38:00) [8]В принципе, у меня именно при решении проблемы по такому пути всё получалось. Важно было только правильно задать начальное направление "тыканья" для самой первой точки. И "щупать" не 4 направления, а все 8.
Кстати, уверен, что и ты сейчас, и я несколько лет назад занимались изобретением велосипеда, наверняка эти алгоритмы хорошо разработаны и где-нибудь в сети валяются.
Frozzen (2004-11-17 11:23:00) [9]отображать не моя задача
моя задача из массива точек изолиний получить массив точек региона
ну я тоже думал так: берем первую изолинию и начинаем обход по часовой стрелке с ее первой точки, доходим до границы(либо приходим в начальную точку) и стает задача поиска точки следующей изолинии из имеющихся
кароче че то все не тревиально выходит
PVOzerski (2004-11-17 11:18:00) [10]Ну, для моих задач идеально Polygon подходил. Думаю, кстати, что при разумном порядке раскраски и здесь подойти может.
Frozzen (2004-11-17 11:14:00) [11]а уж как нарисовать контур эт второе дело
PVOzerski (2004-11-17 11:14:00) [12]Ну, и бегай по границе цветов... Крутись, скажем, по часовой стрелке: уперся вверх - пробуем вверх-вправо и т. д. Я когда-то такое писал, жаль, не сохранил исходники, а то бы поделился...
Frozzen (2004-11-17 11:05:00) [13]Задача и стоит получить точки, принадлежащие i-му контуру, т.е. выделить из точек, образующих границы карты и изолинии - точки, пренадлежащие конкретному контуру
Rem (2004-11-17 10:54:00) [14]>>А что, бывают особые "векторные" мониторы?
В свое время были такие. Вымерли, правда, давно, как динозавры. Но кое-где еще можно найти таких рептилий...
Кстати, лазерные проекционные установки (на концертах такие используют) используют как раз векторный принцип построения изображения. Так что, весьма возможно, что обговариваемое здесь решение будет использоваться как раз для таких целей.
;)
Rem (2004-11-17 10:49:00) [15]TCanvas.Polygon(Points: array of TPoint);
Use Polygon to draw a closed, many-sided shape on the canvas, using the value of Pen. After drawing the complete shape, Polygon fills the shape using the value of Brush.
PVOzerski (2004-11-17 10:43:00) [16]>не мне нужно это все в своей структуре хранить,
Конечно, для этого используются файлы и оперативная память, а не программисты :^)
> т. к. потом это все векторно отображаться будет
А что, бывают особые "векторные" мониторы?
Теперь серьезнее. Есть 2 аспекта проблемы: 1) в каком виде хранить; 2) какими средствами сохраненное потом отображать на экране. Не надо это смешивать. Никто не заставляет сохранять в файле цвет каждого пикселя, но на этапе рисования тем или иным способом будет краситься именно каждый пиксель (пусть даже код, используемый для этого, "зарыт" в системе, а то и в "железе").
Непонятно из изложенного: а что, исходное (незакрашенное) изображение уже растровое, координаты точек, образующих изолинии, надо восстанавливать? Мне почему-то показалось, что они всё-таки известны. Тогда все советы уже даны.
Frozzen (2004-11-17 10:18:00) [17]не мне нужно это все в своей структуре хранить, т. к. потом это все векторно отображаться будет
Frozzen (2004-11-17 10:11:00) [18]непонял
REA (2004-11-17 10:11:00) [19]BeginPath, EndPath еще посмотри
Frozzen (2004-11-17 09:21:00) [20]ща попытаюсь поискать