# Operaciones booleanas geométricas

Los métodos *Intersect*, *Trim* y *SelectTrim* se utilizan principalmente en geometrías dimensionales inferiores como puntos, curvas y superficies. Por otra parte, la geometría sólida cuenta con un conjunto adicional de métodos para modificar la forma después de su creación, tanto sustrayendo material de forma similar a *Trim* como combinando elementos para formar un todo mayor.

### Unión

El método *Union* utiliza dos objetos sólidos para crear un único objeto sólido a partir del espacio cubierto por ambos objetos. El espacio solapado entre los objetos se combina en la forma final. Este ejemplo combina una esfera y un cubo en una forma de esfera-cubo sólida:

![](https://4010443943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F34TIEzzNzA4rkNWukVIo%2Fuploads%2Fgit-blob-6b8338b9d9afdfdd3643f952c82262ea014920fd%2FGeometricBooleans_01.png?alt=media)

```js
s1 = Sphere.ByCenterPointRadius(
    CoordinateSystem.Identity().Origin, 6);

s2 = Sphere.ByCenterPointRadius(
    CoordinateSystem.Identity().Origin.Translate(4, 0,
    0), 6);

combined = s1.Union(s2);
```

### Diferencia

El método *Difference*, al igual que *Trim*, resta el contenido del sólido de la herramienta de entrada del sólido base. En este ejemplo, se extrae una pequeña hendidura de una esfera:

![](https://4010443943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F34TIEzzNzA4rkNWukVIo%2Fuploads%2Fgit-blob-c79870bf07df076b5978d7b655700cf93a951525%2FGeometricBooleans_02.png?alt=media)

```js
s = Sphere.ByCenterPointRadius(
    CoordinateSystem.Identity().Origin, 6);

tool = Sphere.ByCenterPointRadius(
    CoordinateSystem.Identity().Origin.Translate(10, 0,
    0), 6);

result = s.Difference(tool);
```

### Intersecar

El método *Intersect* devuelve el sólido solapado entre dos entradas sólidas. En el siguiente ejemplo, *Difference* se ha cambiado a *Intersect* y el sólido resultante es el vacío que falta que se ha eliminado inicialmente:

![](https://4010443943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F34TIEzzNzA4rkNWukVIo%2Fuploads%2Fgit-blob-b8fd0bd6151ff1313c4a1199c2300e7dbeeb53dd%2FGeometricBooleans_03.png?alt=media)

```js
s = Sphere.ByCenterPointRadius(
    CoordinateSystem.Identity().Origin, 6);

tool = Sphere.ByCenterPointRadius(
    CoordinateSystem.Identity().Origin.Translate(10, 0,
    0), 6);

result = s.Intersect(tool);
```
