Line2D
LazySets.Line2D — TypeLine2D{N, VN<:AbstractVector{N}} <: AbstractPolyhedron{N}Type that represents a line in 2D of the form $a⋅x = b$ (i.e., a special case of a Hyperplane).
Fields
a– normal direction (non-zero)b– constraint
Examples
The line $y = -x + 1$:
julia> Line2D([1., 1.], 1.)
Line2D{Float64,Array{Float64,1}}([1.0, 1.0], 1.0)LazySets.dim — Methoddim(L::Line2D)Return the ambient dimension of a line.
Input
L– line
Output
The ambient dimension of the line, which is 2.
LazySets.σ — Methodσ(d::AbstractVector, L::Line2D)Return the support vector of a line in a given direction.
Input
d– directionL– line
Output
The support vector in the given direction, which is defined the same way as for the more general Hyperplane.
Base.:∈ — Method∈(x::AbstractVector, L::Line2D)Check whether a given point is contained in a line.
Input
x– point/vectorL– line
Output
true iff x ∈ L.
Algorithm
The point $x$ belongs to the line if and only if $a⋅x = b$ holds.
LazySets.an_element — Methodan_element(S::LazySet{N}) where {N}Return some element of a convex set.
Input
S– convex set
Output
An element of a convex set.
Algorithm
An element of the set is obtained by evaluating its support vector along direction $[1, 0, …, 0]$.
an_element(P::AbstractPolyhedron{N};
[solver]=default_lp_solver(N)) where {N}Return some element of a convex set.
Input
P– polyhedronsolver– (optional, default:default_lp_solver(N)) LP solver
Output
An element of the polyhedron, or an error if the polyhedron is empty.
Algorithm
An element of the polyhedron is obtained by solving a feasibility linear program.
an_element(L::Line2D{N}) where {N}Return some element of a line.
Input
L– line
Output
An element on the line.
Algorithm
If the $b$ value of the line is zero, the result is the origin. Otherwise the result is some $x = [x1, x2]$ such that $a·[x1, x2] = b$. We first find out in which dimension $a$ is nonzero, say, dimension 1, and then choose $x1 = 1$ and accordingly $x2 = \frac{b - a1}{a2}$.
an_element(U::Universe{N}) where {N}Return some element of a universe.
Input
U– universe
Output
The origin.
Base.rand — Methodrand(::Type{Line2D}; [N]::Type{<:Real}=Float64, [dim]::Int=2,
[rng]::AbstractRNG=GLOBAL_RNG, [seed]::Union{Int, Nothing}=nothing)Create a random line.
Input
Line2D– type for dispatchN– (optional, default:Float64) numeric typedim– (optional, default: 2) dimensionrng– (optional, default:GLOBAL_RNG) random number generatorseed– (optional, default:nothing) seed for reseeding
Output
A random line.
Algorithm
All numbers are normally distributed with mean 0 and standard deviation 1. Additionally, the constraint a is nonzero.
LazySets.isbounded — Methodisbounded(L::Line2D)Determine whether a line is bounded.
Input
L– line
Output
false.
LazySets.isuniversal — Functionisuniversal(L::Line2D, [witness]::Bool=false)Check whether a line is universal.
Input
P– linewitness– (optional, default:false) compute a witness if activated
Output
- If
witnessoption is deactivated:false - If
witnessoption is activated:(false, v)where $v ∉ P$
Algorithm
Witness production falls back to isuniversal(::Hyperplane).
Base.isempty — Methodisempty(L::Line2D)Return if a line is empty or not.
Input
L– line
Output
false.
LazySets.constrained_dimensions — Methodconstrained_dimensions(L::Line2D)Return the indices in which a line is constrained.
Input
L– line
Output
A vector of ascending indices i such that the line is constrained in dimension i.
Examples
A line with constraint $x1 = 0$ is constrained in dimension 1 only.
LazySets.constraints_list — Methodconstraints_list(L::Line2D)Return the list of constraints of a line.
Input
L– line
Output
A list containing two half-spaces.
LazySets.translate — Methodtranslate(L::Line2D, v::AbstractVector; [share]::Bool=false)Translate (i.e., shift) a line by a given vector.
Input
L– linev– translation vectorshare– (optional, default:false) flag for sharing unmodified parts of the original set representation
Output
A translated line.
Notes
The normal vector of the line (vector a in a⋅x = b) is shared with the original line if share == true.
Algorithm
A line $a⋅x = b$ is transformed to the line $a⋅x = b + a⋅v$. In other words, we add the dot product $a⋅v$ to $b$.
Inherited from LazySet: