Constructieve ruimtemeetkunde

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Constructieve ruimtemeetkunde (CRM), beter bekend onder de Engelse naam Constructive Solid Geomtry (CSG), is een geometrische modelleermethode. Het dient als methode om complexe geometrische lichamen te kunnen definiëren uit een combinatie van eenvoudiger lichamen. Het is een procedurele modelleertechniek die in de computergraphics en CAD gebruikt wordt.

De eenvoudige lichamen waarmee de complexere uit opgebouwd worden heten primitieven. Dit zijn over het algemeen lichamen met een eenvoudige vorm: balken, cilinders, prisma's, piramides, bollen, kegels. De verzameling toegestane primitieven kan beperkt worden, bijvoorbeeld gebogen oppervlakken kunnen uitgesloten worden.

Een primitieve wordt gezien als een verzameling van (oneindig veel) punten in de ruimte. Gesteld wordt dat een object wordt opgebouwd uit primitieven door middel van toegestane bewerkingen die normaliter booleanse bewerkingen op de verzameling punten zijn: vereniging, doorsnede en verschil.

Operatoren[bewerken]

In modelleerpakketten zijn eenvoudige geometrische objecten zoals de kubus, blok, bol, torus en andere objecten die door wiskundige formules beschreven kunnen worden beschikbaar als primitieven. Deze objecten kunnen normaliter beschreven worden door een procedure die een aantal parameters meekrijgt. Bijvoorbeeld een bol kan beschreven worden door de coördinaten van het middelpunt gecombineerd met een straal. Deze primitieven kunnen worden gecombineerd tot samengestelde lichamen door operatoren als deze:

Bewerkingen in constructieve ruimtemeetkunde
Booleaanse vereniging Booleaans verschil Booleaanse doorsnede
Demonstratie van vereniging in CRM Demonstratie van verschil in CRM Demonstratie van doorsnede in CRM
Samenvoeging van twee objecten tot één. Twee objecten van elkaar afgetrokken. De ruimte welke tot beide primitieven behoort.

Reguliere verzamelingsoperatoren[bewerken]

Bij het uitvoeren van CRM-bewerkingen ontstaan vaak bengelende of geïsoleerde zijvlakken, zijden en hoekpunten. Dit kan bijvoorbeeld gebeuren door twee kubussen exact tegen elkaar aan te leggen en hier de doorsnede van te nemen, de raaklijn behoort tot beide objecten.

Vanwege rekenkundige precisie zal er bovendien altijd een bepaald randgebied zijn waarin onzeker is of een punt binnen of buiten een lichaam valt.

Dit wordt opgelost door in plaats van wiskundige operatoren reguliere operatoren te gebruiken. Hiervoor definiëren we het volgende:

  • Een punt behoort tot het inwendige van een lichaam als het mogelijk is een bolletje met oneindig kleine straal om dat punt heen genomen kan worden dat volledig binnen het lichaam ligt.
  • Een punt ligt in de afsluiting van een lichaam als iedere omgeving van dat punt een element van het lichaam bevat.

De reguliere verzamelingsoperatoren leveren dat deel van het lichaam geconstrueerd door de bijbehorende wiskundige verzamelingsoperatoren op, dat aan beide criteria voldoet.

In de praktijk zal men de criteria benaderen, bijvoorbeeld in plaats van een oneindig kleine straal zal men een zeer kleine straal van het bolletje nemen.

Representaties[bewerken]

Een lichaam dat samengesteld is met CRM kan in een computergeheugen gerepresenteerd worden door de representatie van de afzonderlijke primitieven, plus een booleaanse expressie. Vaak worden de operatoren +, * en - gebruikt voor respectievelijk vereniging, doorsnede en verschil. Een voorbeeld van zo'n expressie is:

(a+b)*c ,

wat betekent dat de primitieven a en b verenigd worden waarna de doorsnede met c wordt genomen. Hoe de primitieven a, b en c gerepresenteerd worden is voor CRM zelf niet belangrijk.

Binnen programma's wordt een dergelijke expressie vaak bijgehouden in de vorm van een zogenaamde CRM-boom. Dit is een binaire boom die de expressie weergeeft. Voor het bovenstaand voorbeeld zou zo'n boom er als volgt uitzien:

    /*\
   /   \
  /+\   c
 /   \
a     b

hetgeen wederom betekent dat a en b verenigd worden, waarna het resultaat doorsneden wordt met c.

Toepassingen van CRM[bewerken]

Constructieve ruimtemeetkunde heeft een aantal praktische toepassingen. Doordat de wiskunde van de afzonderlijke objecten eenvoudig gehouden wordt, blijft de programmatische complexiteit om CRM te implementeren binnen de perken. Desondanks is het met CRM uitstekend mogelijk complexe objecten te modelleren, zelfs als de hoeveelheid primitieven beperkt is. CRM is dan ook een populaire ontwerpmethode in CAD, en wordt graag in de computergraphics gebruikt als representatie van weer te geven objecten. Ook in computerspellen wordt het gebruikt; de 3D-motor van het spel Unreal maakt er bijvoorbeeld gebruik van.