While the geometry types provided by euclid are primitives, they can be grouped based on their properties. Lines, rays, and segments are all curves in space, with rays and segments being the semi-finite and finite version of lines respectively. Circles, planes, triangles, and iso rectangles are all surfaces in the sense that they define an area but doesn't have a volume. Spheres and iso cubes are volumes. Vectors and directions are arrows. Points and weighted points are locations. The class of geometry can be checked with the given functions

```
is_surface(x)
is_volume(x)
is_curve(x)
is_arrow(x)
is_location(x)
```

- x
A geometry vector

a logical scalar

Other Predicates:
`collinear()`

,
`constant_in`

,
`geometry_turns`

,
`has_intersection()`

,
`in_order()`

,
`is_degenerate()`

,
`location_predicates`

,
`parallel()`

```
l <- line(3, 8, 1)
is_surface(l)
#> [1] FALSE
is_curve(l)
#> [1] TRUE
is_volume(l)
#> [1] FALSE
```