Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Evgeny Goljakov                      2:5020/2065.608 06 Apr 2003  02:29:28
 To : All
 Subject : Векторная заливка в 2D
 -------------------------------------------------------------------------------- 
 
 или просто поделится своими идеями.
 
 -Имеется список ломанных Линий, каждая задана 2 или более  Точками,
 последовательно соединенными прямыми.
 -Каждая Точка описана парой координат X,Y.
 -Пересекаясь, линии "режут" друг-друга. След. только  из первой или последней
 точки линии возможно разветвление.
 
  Hеобходимо из заданной старт Точки Т0 с любыми X,Y "разлить" чернила по
 области, ограниченной имеющимися линиями.
  Линии идентефицируются по порядковому номеру, поэтому начав
 обход периметра, заполняем номерани массив, далее после- довательно заполняем
 др. массив точками, которые будут
 являтьхя вершинами многоугольника-заливки)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 Появились вопросы, требующие однозначного решения:
 1.Как всегда начинать обход по час/против, ведь юзер может    поставить точку
 заливки произвольно, в будующем контуре.  Осложняется тем, что линии слагающие
 будующий контур имеют взаимно различную направленность Точек и произвольную
 форму.
 
 // Тут я пускаю луч на лево до подсечения ближайшей линии, в
 точке пересечения беру ближайшую точку с одной и др. стороны,
 сравниваю какая выше и принимаю данное направление за обход
 по час стрелке. 
   Часные случаи пока не волнуют. Типа горизонтальные линии,
  висячие концы, самопересечения и т.п.
 
 2. Hеобходимо выполнение условия выбора в точке развилки линии
    с наименьшим углом против направления обхода контура, что 
    будет соответствовать выбору фигуры с мин. периметром.
 
 Т.е. определить наименьший угол у развилки, (имея координаты:
     Т1(X,Y)-начало всех линий в месте развилки и
     Т2(X,Y)-вторыые точки, ломанных далее линий)
  по отношению к текущей линии контура, т.е. ее последней/первой
  точки Т1 и предпоследней/второй, т.к. за этим линейным   сегментом линия может 
 быть произвольно ломанна.
 
 // Я нахожу в лоб:
 -четверть (т.е. знак dx и dy) и
 -dx/dy (т.е. tg(угла наклона к оси абсцисс))
 для всех линий и беру наименьшую против час стрелки (ибо за
 направление обхода принял обход по час стрелке) по отношению
 к текущей линии контура.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 
  Возможно, вопросы здесь обсуждались, буду рад любой помощи.
 Для справки пишу на Avenue -среда разработки GIS ArcView3.x.
 Hайденные пару нужных сорцов на www.esri.com - зашифрованы :(
 
 Подобное как-то реализованно в автокаде или флэшке?
 
 Спасибо за внимание.
 
 --- Spencer Winset >m>
  * Origin: Скептис присутствует (2:5020/2065.608)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Векторная заливка в 2D   Evgeny Goljakov   06 Apr 2003 02:29:28 
 Векторная заливка в 2D   Georgy Udov   10 Apr 2003 13:06:04 
Архивное /ru.algorithms/534208110468.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional