Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > "Отсекание" треугольников при помощи указателей.


Автор: FataList 4.7.2006, 10:43
Добрый день.

Есть полигон (многоугольник), который делю на треугольники. Координаты вершин находятся записываются в вектор (масссив вершин полигона).  
Код

vector<CPoint> Vertex_Polygon;

Написанный код нужно упростить, а именно отсекать треугольники, используя ссылки или указатели. Скорее указатели.
Меня посетила  мысль(я зевнул и перевернулся на другой бок  smile  )  : каждая точка в векторе будет иметь указатель на предыдущюю и последующую точки (вершины).
Во время выполнения кода, будут наступать моменты, когда одна из вершин полигона больше не пригодится, т.е. не сможет соединиться с другими вершинами. И тогда ее следует "отсечь" от исходного вектора. Например, убираем точку 2. На нее "указывают" 1-я и 3-я точка.
Делаем так, чтобы 1-я указывала на 3-ю, соответственно 3-я на 1-ю. 
Отсалось решить, как это реализовать.  Может сделать структуру в исходном векторе, и во время его заполнения, "направлять"  указатели. Но напрявлять указатели не знамо куда, то плохо. Промежуточные переменные использовать? 
Надо подумать.... 

Автор: Earnest 4.7.2006, 15:48
Храни треугольники как треугольники, т.е. объекты, состоящие из 3 вершин (можно использовать не точки, а индексы вершин в исходном полигоне). Для того, чтобы помечать некоторые вершины полигона как полностью обработанные, используй параллельный массив флагов. Что с чем можно соединить, определяется автоматически: пропускаем соседние вершины, пока стоят флаги. 
В данном случае усложненная структура данных ничем не обоснована: никакого выигрыша, только замутнение алгоритма. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)