View Source Vivid.Arc (vivid v0.4.4)
This module represents an Arc, otherwise known as a circle segment.
Example
iex> use Vivid
...> Arc.init(Point.init(10,10), 10, 0, 45)
...> |> to_string()
"@@@@@@\n" <>
"@@@ @\n" <>
"@@@ @@\n" <>
"@@ @@@\n" <>
"@@ @@@\n" <>
"@ @@@\n" <>
"@ @@@@\n" <>
"@ @@@@\n" <>
"@ @@@@\n" <>
"@@@@@@\n"
Summary
Functions
Returns the center point of an arc
.
Changes the center point
of arc
.
Creates an Arc.
Returns the radius of an arc
.
Change the radius
of arc
.
Returns the range of the arc
.
Change the range of an arc
.
Returns the start angle of an arc
.
Change the start angle of an arc
.
Returns the number of steps in the arc
.
Changes the number of steps
in arc
.
Converts the arc
into a Path, which is used for a bunch of things like
Transforms, Bounds calculation, Rasterization, etc.
Types
@type t() :: %Vivid.Arc{ center: Vivid.Point.t(), radius: number(), range: term(), start_angle: number(), steps: integer() }
Functions
@spec center(t()) :: Vivid.Point.t()
Returns the center point of an arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.center
Vivid.Point.init(10, 10)
@spec center(t(), Vivid.Point.t()) :: t()
Changes the center point
of arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.center(Vivid.Point.init(15,15))
...> |> Vivid.Arc.center
Vivid.Point.init(15, 15)
Creates an Arc.
center
is a Point definining the center point of the arc's parent circle.radius
is the radius of the parent circle.start_angle
is the angle at which to start drawing the arc,0
is the parallel to the X axis, to the left.range
is the number of degrees to draw the arc.steps
the arc is drawn by dividing it into a number of lines. Defaults to 12.
Examples
iex> Vivid.Arc.init(Vivid.Point.init(5,5), 4, 45, 15)
%Vivid.Arc{
center: %Vivid.Point{x: 5, y: 5},
radius: 4,
start_angle: 45,
range: 15,
steps: 12
}
Returns the radius of an arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.radius
5
Change the radius
of arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.radius(10)
...> |> Vivid.Arc.radius
10
Returns the range of the arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.range
90
Change the range of an arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.range(270)
...> |> Vivid.Arc.range
270
Returns the start angle of an arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.start_angle
0
Change the start angle of an arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.start_angle(45)
...> |> Vivid.Arc.start_angle
45
Returns the number of steps in the arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.steps
12
Changes the number of steps
in arc
.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 12)
...> |> Vivid.Arc.steps(19)
...> |> Vivid.Arc.steps
19
@spec to_path(t()) :: Vivid.Path.t()
Converts the arc
into a Path, which is used for a bunch of things like
Transforms, Bounds calculation, Rasterization, etc.
Example
iex> Vivid.Arc.init(Vivid.Point.init(10,10), 5, 0, 90, 3)
...> |> Vivid.Arc.to_path
Vivid.Path.init([Vivid.Point.init(5, 10), Vivid.Point.init(6, 13), Vivid.Point.init(8, 14), Vivid.Point.init(10, 15)])