A segment is a finite directed line going from one point to another. If the two points are equal it is considered to be degenerate. A segment can be flipped be taking its negative.

segment(..., default_dim = 2)

as_segment(x)

Arguments

...

Various input. See the Constructor section.

default_dim

The dimensionality when constructing an empty vector

x

A vector of segments or an object to convert to it

Value

An euclid_segment vector

Constructors

2 and 3 dimensional segments

  • Providing two points will construct segments starting at the first point and ending at the second

  • Providing a point and a vector will construct segments starting at the point and ending at the point defined by the start point plus the vector

See also

Other Geometries: circle(), direction(), iso_cube(), iso_rect(), line(), plane(), point(), ray(), sphere(), tetrahedron(), triangle(), vec(), weighted_point()

Other Curves: line(), ray()

Examples

# Construction
p <- point(sample(4), sample(4))
s <- segment(p[1:2], p[3:4])
s
#> <2D segments [2]>
#> [1] [<x:4, y:4>, <x:2, y:3>] [<x:3, y:2>, <x:1, y:1>]

plot(s)

segment(p[1:2], as_vec(p[3:4]))
#> <2D segments [2]>
#> [1] [<x:4, y:4>, <x:6, y:7>] [<x:3, y:2>, <x:4, y:3>]

# Flip segments
-s
#> <2D segments [2]>
#> [1] [<x:2, y:3>, <x:4, y:4>] [<x:1, y:1>, <x:3, y:2>]

# Segments can be converted to vectors, directions and lines
as_vec(s)
#> <2D vectors [2]>
#> [1] <x:-2, y:-1> <x:-2, y:-1>

as_direction(s)
#> <2D directions [2]>
#> [1] <dx:-2, dy:-1> <dx:-2, dy:-1>

as_line(s)
#> <2D lines [2]>
#> [1] <a:1, b:-2, c:4> <a:1, b:-2, c:1>
plot(s)
euclid_plot(as_line(s), lty = 2)