2009-04-18 4 views
7

Je cherche une fonction ou un exemple pour produire une liste de lignes représentant des contours à une hauteur spécifique dans une table de hauteur.Calcul des contours d'une heightmap 3D?

Par exemple,

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

Où Heights est un réseau de 512x512 valeurs à virgule flottante, HeightValue est la hauteur à laquelle doit être établi le contour. Les hauteurs peuvent contenir plusieurs lignes pour cette hauteur spécifique (par exemple, une selle ou une chaîne d'îlots)

Est-ce que quelqu'un a ou sait où trouver un algorithme pour générer ceci?

Répondre

2

Ce que vous essayez réellement de faire est de dessiner une iso-ligne.
voir my question about il ya un moment.
The link given dans l'une des réponses était très utile.

+0

Le lien vers la thèse est mort (404). – IAbstract

1

algorithme:

a) Trouver quels polygones ont des sommets au-dessus & en dessous de la hauteur que vous êtes intéressé par

b) Intersection les bords de ces polygones avec le plan pour obtenir des lignes sur le plan..

c) Joignez les lignes ensemble en bandes.

1

Jetez un oeil à Srtm2Osm, un outil que j'ai fait pour générer des contours à partir des données SRTM de la NASA. Vous pouvez trouver l'algorithme dans le code C#.