2009-04-18 7 views
7

Ich suche nach einer Funktion oder einem Beispiel, um eine Liste von Linien zu erzeugen, die Konturen in einer bestimmten Höhe innerhalb einer Heightmap darstellen.Berechnung der Konturen einer 3D-Höhenkarte?

Eg,

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

Wo Heights ist ein 512x512-Array von Gleitkommazahlen ist HeightValue die Höhe, in der die Kontur gezeichnet werden soll. Höhen können mehrere Linien für diese spezifische Höhe enthalten (z. B. ein Sattel oder eine Inselkette)

Hat jemand oder weiß, wo man einen Algorithmus bekommt, um dies zu generieren?

Antwort

1

Algorithmus:

a) Finden Sie die Polygone haben Eckpunkte oben & unterhalb der Höhe der Sie interessiert

b) schneiden sich die Kanten dieser Polygone mit der Ebene Linien auf der Ebene zu bekommen..

c) Verbinden Sie die Linien in Streifen.

1

Werfen Sie einen Blick auf Srtm2Osm, ein Werkzeug, das ich gemacht habe, um Konturen von NASA SRTM Daten zu generieren. Sie können den Algorithmus im C# -Code finden.