2011-04-25 1 views
1

J'essaie de modéliser un objet composite constitué d'une ou de plusieurs formes. Pour la simplicité, je suppose que les formes sont tous des rectangles. Un composite pourrait ressembler à ceci (pardonnez mon art pauvre ASCII):Liste d'adjacence pour modéliser les relations entre des formes relativement positionnées?

 
+---+-------+---+ 
| | 2 | 5 | 
| +-------+---+ 
| 1 | 3 | | 
| +-------+ 6 | 
| | 4 | | 
+---+-------+---+ 

Wikipedia m'a fait la théorie des graphes, dont je me souviens à peine de l'université, et il semble comme une liste de contiguïté serait une bonne façon de modéliser les relations entre toutes ces formes.

Ma question est, puis-je indiquer les relations gauche, droite, haut et bas dans une liste d'adjacence? Il ne suffit pas de dire que 1 est adjacent à 2; Je dois dire que 1 est à gauche de 2 (et 3 est supérieur à 4, etc.).

Répondre

1

Bien sûr. Où votre liste de contiguïté normale pourrait ressembler à:

vertex { 
    neighbours: // list of neighbours 
} 

Pour inclure les positions relatives, chaque sommet pourrait avoir une liste de contiguïté pour chaque direction:

vertex { 
    left: ... 
    right: ... 
    up: ... 
    down: ... 
} 

Alors:

3 { 
    left: [1] 
    right: [6] 
    up: [2] 
    down: [4] 
} 

et

1 { 
    left: [] 
    right: [2,3,4] 
    up: [] 
    down: [] 
} 
+0

Doh! Pourquoi je n'y ai pas pensé? Pseudocode le fait paraître si simple. Merci! – ThisSuitIsBlackNot

Questions connexes