# Geometria sòlida constructiva

La geometria sòlida constructiva (CSG; abans anomenada geometria sòlida binària computacional) és una tècnica utilitzada en el modelatge de sòlids. La geometria sòlida constructiva permet a un modelador crear una superfície o objecte complex mitjançant l'ús d'operadors booleans per combinar objectes més simples, potencialment generant objectes visualment complexos combinant-ne uns quants primitius.
En gràfics per ordinador 3D i CAD, CSG s'utilitza sovint en el modelatge procedimental. El CSG també es pot realitzar en malles poligonals, i pot ser o no procedimental i/o paramètric.
Contrast CSG amb modelatge de malla poligonal i modelatge de caixa.

## Treballs

Els objectes sòlids més simples utilitzats per a la representació s'anomenen primitives geomètriques. Normalment són els objectes de forma senzilla: cuboides, cilindres, prismes, piràmides, esferes, cons. El conjunt de primitives permeses està limitat per cada paquet de programari. Alguns paquets de programari permeten CSG en objectes corbats mentre que altres paquets no.
Un objecte es construeix a partir de primitives mitjançant operacions permeses, que normalment són operacions booleanes sobre conjunts: unió, intersecció i diferència, així com transformacions geomètriques d'aquests conjunts.
Una primitiva es pot descriure normalment mitjançant un procediment que accepta un cert nombre de paràmetres; per exemple, una esfera es pot descriure per les coordenades del seu punt central, juntament amb un valor de radi. Aquestes primitives es poden combinar en objectes compostos mitjançant operacions com aquestes:
Combinant aquestes operacions elementals, és possible construir objectes d'alta complexitat a partir d'altres senzills.
La representació de la geometria sòlida constructiva és particularment senzilla en el traçat de raigs. Els traçadors de raigs tallen un raig amb les dues primitives que s'estan operant, apliquen l'operador als intervals d'intersecció al llarg del raig 1D i després prenen el punt més proper a la càmera al llarg del raig com a resultat.

## Aplicacions

La geometria sòlida constructiva té una sèrie d'usos pràctics. S'utilitza en els casos en què es desitgen objectes geomètrics simples, o on la precisió matemàtica és important. Gairebé tots els paquets de CAD d'enginyeria utilitzen CSG (on pot ser útil per representar talls d'eines i funcions on les peces han d'encaixar).
El motor Quake i Unreal Engine utilitzen aquest sistema, igual que Hammer (l'editor de nivell de motor de font natiu) i Torque Game Engine / Torque Game Engine Advanced. CSG és popular perquè un modelador pot utilitzar un conjunt d'objectes relativament simples per crear geometries molt complicades. Quan el CSG és procedimental o paramètric, l'usuari pot revisar la seva geometria complexa canviant la posició dels objectes o canviant l'operació booleana utilitzada per combinar aquests objectes.
Un dels avantatges de CSG és que pot assegurar fàcilment que els objectes siguin "sòlids" o estancs a l'aigua si totes les formes primitives són estanques. Això pot ser important per a algunes aplicacions de computació de fabricació o enginyeria. En comparació, quan es crea una geometria basada en representacions de límits, calen dades topològiques addicionals, o s'han de realitzar comprovacions de coherència per assegurar-se que la descripció de límits especificada especifica un objecte sòlid vàlid.
Una propietat convenient de les formes CSG és que és fàcil classificar punts arbitraris com a dins o fora de la forma creada per CSG. El punt es classifica simplement contra totes les primitives subjacents i s'avalua l'expressió booleana resultant. Aquesta és una qualitat desitjable per a algunes aplicacions com ara el traçat de raigs.

## Referències

* ↑ Roth, Scott Computer Graphics and Image Processing, 18, 2, 1982, pàg. 109–144. DOI: 10.1016/0146-664X(82)90169-1.
* ↑ «Constructive Solid Geometry Methods» (en anglès). [Consulta: 10 febrer 2024].
* ↑ «Constructive Solid Geometry Concept» (en anglès). [Consulta: 10 febrer 2024].
* ↑ «ConstructiveSolidGeometry» (en anglès). [Consulta: 10 febrer 2024].