Вычисление контуров трехмерной карты высот? - PullRequest
7 голосов
/ 18 апреля 2009

Я ищу функцию или пример для создания списка линий, представляющих контуры на определенной высоте в карте высот.

Например,

Lines[] = GetContours(Heights[512,512], HeightValue) 

Где Heights - массив значений с плавающей запятой 512x512, HeightValue - высота, на которой должен быть нарисован контур. Высота может содержать несколько строк для этой конкретной высоты (например, седло или цепочка островов)

Кто-нибудь имеет или знает, где взять алгоритм для генерации этого?

Ответы [ 4 ]

2 голосов
/ 18 апреля 2009

На самом деле вы пытаетесь нарисовать изо-линию.
см. мой вопрос о давно.
Ссылка, данная в одном из ответов, была очень полезной.

1 голос
/ 18 апреля 2009

Взгляните на Srtm2Osm , инструмент, который я создал для создания контуров из данных SRTM НАСА. Вы можете найти алгоритм в коде C #.

1 голос
/ 18 апреля 2009

Алгоритм:

a) Найдите, какие полигоны имеют вершины выше и ниже интересующей вас высоты.

b) Пересеките края этих многоугольников с плоскостью, чтобы получить линии на плоскости.

в) Соедините линии в полосы.

1 голос
/ 18 апреля 2009

Стандартный алгоритм марширующие квадраты .

...