gebruikersoperaties onderscheiden we zogenaamde
,,update"-operaties op de constraintsgraaf; deze worden
automatisch uitgevoerd, nadat steeds een deel van de
(plan)topografie is gemuteerd. Met deze operaties wordt
de verzameling constraints consistent gehouden.
Uitgegaan wordt van mutaties in de vorm van atomaire
acties, zoals beschreven in [1] en [6]. Bij elk van deze
atomaire acties hoort een automatische update-operatie
op de constraintsgraaf. Beschadigingen van constraints
als gevolg van een atomaire actie moeten worden her
steld door een constraint-herstelmechanisme. Als bij
voorbeeld met een atomaire actie een knoop wordt toe
gevoegd op een segment (s1), wordt dit segment gesplitst
in twee deelsegmenten (s2 en s3). In de constraintsgraaf
moet elke evenwijdigheidsconstraint tussen s1 en een
ander segment (s4) worden vervangen door twee even-
wijdigheidsconstraints, tussen s2 en s4 en tussen s3 en
s4.
Op soortgelijke wijze moeten de constraints van elk van
de overige typen op (deel)element s1 worden vervangen
of verwijderd.
De update-operaties worden gespecificeerd op drie ni
veaus:
laag-3-operaties; dit betreft de aanpassing van de
constraintsgraaf na een atomaire actie;
laag-2-operaties;
het laten vervallen van elke constraint van een be
paald type op een bepaald (deel)element (fig. 5a);
het vervangen van elke constraint van een bepaald
type op een bepaald (deel)element door één
constraint van hetzelfde type op één nieuw (deel)-
element (fig. 5b);
het vervangen van elke constraint van een bepaald
type op een bepaald (deel)element door twee con
straints van hetzelfde type op twee nieuwe (deel)-
elementen (fig. 5c);
het bepalen van impliciete constraints in de con
straintsgraaf;
laag-1-operaties; dit betreft het toevoegen of verwijde
ren van één edge in de constraintsgraaf.
Operaties in een bepaalde laag zijn opgebouwd uit uit
sluitend operaties van de direct daaronder liggende laag.
Bij nadere beschouwing van de eerste laag-2-operatie
kan worden opgemerkt, dat de impliciete constraints die
afleidbaar waren uit een vervallen constraint en een
andere constraint over dat (deel)element, expliciet moe
ten worden gemaakt (activering). Deze activering be
tekent dat expliciete constraints zijn toegevoegd in de
graaf, en dus moeten de impliciete constraints worden
bepaald.
Bij de tweede laag-2-operatie kunnen geen impliciete
constraints ontstaan. Bij de derde laag-2-operatie kunnen
alleen impliciete constraints ontstaan tussen de twee
(nieuwe) (deel)elementen.
In fig. 6 is (plan)topografie weergegeven, waarop de
volgende constraints zijn gedefinieerd:
segment 1 is evenwijdig met segment 2;
segment 1 staat haaks op segment 5;
segment 1 heeft een bepaalde hoek met segment 3
(een cirkelsegment);
knoop 4 heeft een bepaalde afstand tot segment 1.
De bijbehorende constraintsgraaf (fig. 4) moet automa
tisch worden bijgewerkt, nadat in de (plan)topografie
knoop 16 is toegevoegd op het segment met identificatie
12
Fig. 6. (Plan)topografie.
1 met eindknopen 10 en 11. Hierdoor wordt segment 1
gesplitst in twee nieuwe segmenten met identificaties 7
en 8. Achtereenvolgens worden de constraints op (deel)-
element 1 van de typen KS, WH, EV en HA vervangen
(deze volgorde is willekeurig). De afzonderlijke stappen
zijn in fig. 7a, 7b, 7c en 7d weergegeven. Merk op dat in
fig. 7b geen WH-constraint tussen de (deel)elementen 7
en 3 is toegevoegd, omdat segment 7 niet aansluit aan
het cirkelsegment 3.
Merk verder op dat in fig. 7d constraint EV(7,8) het
resultaat is van de conjunctie van de edge EV(7,8) uit fig.
7c met de edge EV(7,8) uit fig. 7d. Edge EV(7,8) is afleid
baar uit de edges EV(2,7) en EV(2,8) van fig. 7c. Edge
EV(7,8) in fig. 7d is afleidbaar uit de in de laatste stap toe
gevoegde edges HA(5,7) en HA(5,8).
Constraint-herstelmechanisme
Het onderzochte mechanisme om beschadigde, geo
metrische constraints te herstellen, is gebaseerd op een
iteratief algoritme. In elke iteratieslag worden alle con
straints hersteld in een willekeurige volgorde. Omdat het
herstellen van een bepaalde constraint tot gevolg kan
hebben dat een, in deze iteratieslag eerder herstelde
constraint, weer wordt beschadigd, zal in het algemeen
na afloop van een iteratieslag niet aan alle constraints zijn
voldaan. In dat geval moet nog een iteratieslag worden
uitgevoerd. De iteratie eindigt als aan alle constraints is
voldaan, of na een vooraf bepaald maximum aantal
slagen. Het bereiken van het maximum aantal slagen
betekent, dat er nog beschadigde constraints kunnen
zijn.
Het mechanisme ondersteunt het herstel van KK-, WH-
en KS-constraints. Geometrische constraints van de
andere typen kunnen worden vertaald naar constraints
van één van deze drie typen. Het herstellen van een
constraint gebeurt door translatie van de betreffende
knopen, zodanig dat deze constraint in één keer wordt
gerepareerd. Om een indruk te krijgen van de perfor
mance van het mechanisme, is gewerkt met een regel-
370
NGT GEODESIA 91 - 9