# Constructieve ruimtemeetkunde

Constructieve ruimtemeetkunde CRM, beter bekend onder de Engelse naam Constructive Solid Geometry CSG, is een methode om ruimtelijke figuren of lichamen met elkaar te combineren tot samengestelde lichamen. Het dient dus als een methode om complexe geometrische lichamen te kunnen definiëren door daarbij van eenvoudiger lichamen uit te gaan. De techniek wordt in de computergraphics en CAD gebruikt. Lichaam en ruimtelijke figuur zijn synoniem.
De eenvoudige lichamen waarmee de complexere uit opgebouwd worden heten de primitieven. Dit zijn over het algemeen lichamen met een eenvoudige vorm zoals een balk, cilinder, prisma, piramide, bol en een kegels. De verzameling toegestane primitieven kan worden beperkt, gebogen oppervlakken kunnen bijvoorbeeld worden uitgesloten.
Een primitieve wordt gezien als een verzameling van punten in de ruimte. Gesteld wordt dat een object wordt opgebouwd uit primitieven door middel van toegestane bewerkingen die overeenkomen met de bewerkingen in de booleaanse algebra: het nemen van de vereniging, doorsnede en het verschil.

## Bewerkingen

De primitieven kunnen in grafische programma's eerst worden gedefinieerd. Zij kunnen eventueel met een aantal parameters worden beschreven. Een bol kan bijvoorbeeld worden beschreven door de coördinaten van het middelpunt gecombineerd met een straal. Deze primitieven kunnen door bewerkingen tot samengestelde lichamen worden gecombineerd. Dat zijn:
bewerkingen in constructieve ruimtemeetkunde :
| vereniging | verschil | doorsnede |
| samenvoegen | verschil nemen | doorsnede nemen |
Er kunnen bij het uitvoeren van de bewerkingen geïsoleerde zijvlakken, ribben en hoekpunten ontstaan. Dit kan bijvoorbeeld gebeuren door twee kubussen precies tegen elkaar aan te leggen en hier de doorsnede van te nemen, het raakvlak behoort tot beide objecten. Vanwege de nauwkeurigheid zal er bovendien altijd een bepaald randgebied zijn waarin onzeker is of een punt binnen of buiten een lichaam valt. Dit wordt opgelost door de definities aan te passen, op een manier die met de analyse in de wiskunde overeenkomt:
* Een punt $P$ behoort tot het inwendige van een lichaam als er een omgeving van $P$ is te vinden, in de vorm van een bol, hoe klein ook, die 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.

## Representaties

Een lichaam dat volgens de genoemde regels is samengesteld, kan in een computergeheugen geïmplementeerd worden door de representatie van de afzonderlijke primitieven plus de gebruikte bewerkingen. Veelal worden +, * en − gebruikt voor respectievelijk de vereniging, de doorsnede en het verschil. Een voorbeeld is (a+b)*c, wat betekent dat de primitieven a en b worden verenigd waarna de doorsnede met c wordt genomen.
Binnen programma's wordt een dergelijke expressie vaak bijgehouden in de vorm van een binaire boom. De boom voor het bovenstaande voorbeeld ziet er als volgt uit:

## Toepassingen

Constructieve ruimtemeetkunde heeft een aantal praktische toepassingen. Doordat de wiskunde van de afzonderlijke objecten eenvoudig wordt gehouden, is het goed mogelijk het te implementeren. Desondanks is het goed mogelijk complexe objecten te modelleren. Het is dan ook een populaire methode in CAD en wordt veel in computergraphics gebruikt als representatie van weer te geven objecten. De 3D-motor van het spel Unreal maakt er bijvoorbeeld gebruik van.