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.
centeris a Point definining the center point of the arc's parent circle.radiusis the radius of the parent circle.start_angleis the angle at which to start drawing the arc,0is the parallel to the X axis, to the left.rangeis the number of degrees to draw the arc.stepsthe 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)])