vivid v0.4.2 Vivid.Line View Source
Represents a line segment between two Points in 2D space.
Example
iex> use Vivid …> Line.init(Point.init(0,0), Point.init(5,5)) …> |> to_string() “@@@@@@@@\n” <> “@@@@@@ @\n” <> “@@@@@ @@\n” <> “@@@@ @@@\n” <> “@@@ @@@@\n” <> “@@ @@@@@\n” <> “@ @@@@@@\n” <> “@@@@@@@@\n”
Link to this section Summary
Functions
Calculates the absolute Y (vertical) distance between the origin and termination points
Returns true if a line is horizontal
Create a Line
from a two-element list of points
Create a Line given an origin
and termination
point
Calculates straight-line distance between the two ends of the line segment using Pythagoras’ Theorem
Returns whether a point is on the line
Returns the origin (starting) point of the line segment
Returns the termination (ending) point of the line segment
Returns true if a line is vertical
Calculates the absolute X (horizontal) distance between the origin and termination points
Calculates the X (horizontal) distance between the origin and termination points
Find the point on the line where it intersects with the specified x
axis
Calculates the Y (vertical) distance between the origin and termination points
Find the point on the line where it intersects with the specified y
axis
Link to this section Types
Link to this section Functions
Calculates the absolute Y (vertical) distance between the origin and termination points.
Example
iex> Vivid.Line.init(Vivid.Point.init(1,1), Vivid.Point.init(4,14)) |> Vivid.Line.height
13
Returns true if a line is horizontal.
Example
iex> use Vivid
...> Line.init(Point.init(10,10), Point.init(20,10))
...> |> Line.horizontal?
true
iex> use Vivid
...> Line.init(Point.init(10,10), Point.init(20,11))
...> |> Line.horizontal?
false
Create a Line
from a two-element list of points.
init(Vivid.Point.t, Vivid.Point.t) :: Vivid.Line.t
Create a Line given an origin
and termination
point.
Examples
iex> Vivid.Line.init(Vivid.Point.init(1,1), Vivid.Point.init(4,4))
%Vivid.Line{origin: %Vivid.Point{x: 1, y: 1}, termination: %Vivid.Point{x: 4, y: 4}}
Calculates straight-line distance between the two ends of the line segment using Pythagoras’ Theorem
Example
iex> Vivid.Line.init(Vivid.Point.init(1,1), Vivid.Point.init(4,5)) |> Vivid.Line.length
5.0
Returns whether a point is on the line.
Example
iex> use Vivid …> Line.init(Point.init(1,1), Point.init(3,1)) …> |> Line.on?(Point.init(2,1)) true
iex> use Vivid …> Line.init(Point.init(1,1), Point.init(3,1)) …> |> Line.on?(Point.init(2,2)) false
Returns the origin (starting) point of the line segment.
Example
iex> Vivid.Line.init(Vivid.Point.init(1,1), Vivid.Point.init(4,4)) |> Vivid.Line.origin
%Vivid.Point{x: 1, y: 1}
Returns the termination (ending) point of the line segment.
Example
iex> use Vivid
...> Line.init(Point.init(1,1), Point.init(4,4))
...> |> Line.termination
#Vivid.Point<{4, 4}>
Returns true if a line is vertical.
Example
iex> use Vivid
...> Line.init(Point.init(10,10), Point.init(10,20))
...> |> Line.vertical?
true
iex> use Vivid
...> Line.init(Point.init(10,10), Point.init(11,20))
...> |> Line.vertical?
false
Calculates the absolute X (horizontal) distance between the origin and termination points.
Example
iex> Vivid.Line.init(Vivid.Point.init(1,1), Vivid.Point.init(14,4)) |> Vivid.Line.width
13
Calculates the X (horizontal) distance between the origin and termination points.
Example
iex> Vivid.Line.init(Vivid.Point.init(14,1), Vivid.Point.init(1,4)) |> Vivid.Line.x_distance
-13
x_intersect(Vivid.Line.t, integer) :: Vivid.Point.t | nil
Find the point on the line where it intersects with the specified x
axis.
Example
iex> use Vivid
...> Line.init(Point.init(25, 15), Point.init(5, 2))
...> |> Line.x_intersect(10)
#Vivid.Point<{10, 5.25}>
Calculates the Y (vertical) distance between the origin and termination points.
Example
iex> Vivid.Line.init(Vivid.Point.init(1,14), Vivid.Point.init(4,1)) |> Vivid.Line.y_distance
-13
y_intersect(Vivid.Line.t, integer) :: Vivid.Point.t | nil
Find the point on the line where it intersects with the specified y
axis.
Example
iex> use Vivid
...> Line.init(Point.init(25, 15), Point.init(5, 2))
...> |> Line.y_intersect(10)
#Vivid.Point<{17.307692307692307, 10}>