A plane splits the euclidean space in two by all the points that satisfy the
plane equation `ax + by + cz + d = 0`

. As can be seen this is an extension of
the concept of lines in 2 dimensions though lines can also exist in three
dimensions.

```
plane(...)
is_plane(x)
as_plane(x)
```

## Arguments

- ...
Various input. See the Constructor section.

- x
A vector of planes or an object to convert to it

## Value

An `euclid_plane`

vector

## Constructors

**3 dimensional planes**

Providing 4 numberics will construct planes with coefficients from the 4
numerics in the order given.

Providing 3 points will construct planes passing through the three points

Providing a point and vector will construct planes that goes through the
point and are orthogonal to the vector

Providing a point and a direction will construct planes that goes through
the point and are orthogonal to the direction

Providing a point and a line will construct planes that goes through the
point and 2 points on the line

Providing a point and a ray will construct planes that goes through the
point and 2 points on the ray

Providing a point and a segment will construct planes that goes through the
point and the two points making up the segment

Providing a circle will construct planes that contains the circle

Providing a triangle will construct planes that contains the triangle

## See also

Other Geometries:
`circle()`

,
`direction()`

,
`iso_cube()`

,
`iso_rect()`

,
`line()`

,
`point()`

,
`ray()`

,
`segment()`

,
`sphere()`

,
`tetrahedron()`

,
`triangle()`

,
`vec()`

,
`weighted_point()`

Other Surfaces:
`circle()`

,
`iso_rect()`

,
`triangle()`

## Examples

```
# Construction
p <- plane(sample(10, 2), sample(10, 2), sample(10, 2), sample(10, 2))
p
#> <3D euclid_planes [2]>
#> [1] <a:3, b:5, c:9, d:4> <a:10, b:6, c:6, d:10>
```