Skip to content

Commit

Permalink
merge API's 'distance' with existing methods
Browse files Browse the repository at this point in the history
  • Loading branch information
schillic committed Dec 29, 2024
1 parent 55375c1 commit 7b17d2e
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 51 deletions.
2 changes: 1 addition & 1 deletion docs/src/lib/sets/HalfSpace.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ CurrentModule = LazySets.HalfSpaceModule
```
```@docs
rand(::Type{HalfSpace})
distance(::AbstractVector, ::HalfSpace)
```
```@meta
CurrentModule = LazySets.API
Expand Down Expand Up @@ -165,6 +164,7 @@ Undocumented implementations:
* [`isbounded`](@ref isbounded(::LazySet))
* [`isempty`](@ref isempty(::LazySet))
* [`isoperationtype`](@ref isoperationtype(::Type{LazySet}))
* [`distance`](@ref distance(::AbstractVector, ::LazySet))
* [`permute`](@ref permute(::LazySet, ::AbstractVector{Int}))

```@meta
Expand Down
2 changes: 1 addition & 1 deletion docs/src/lib/sets/Hyperplane.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ CurrentModule = LazySets.HyperplaneModule
```
```@docs
rand(::Type{Hyperplane})
distance(::AbstractVector, ::Hyperplane)
```
```@meta
CurrentModule = LazySets.API
Expand Down Expand Up @@ -134,6 +133,7 @@ Undocumented implementations:
* [`dim`](@ref dim(::LazySet))
* [`isempty`](@ref isempty(::LazySet))
* [`isoperationtype`](@ref isoperationtype(::Type{LazySet}))
* [`distance`](@ref distance(::AbstractVector, ::LazySet))
* [`project`](@ref project(::LazySet, ::AbstractVector{Int}))
* [`isdisjoint`](@ref isdisjoint(::LazySet, ::LazySet))

Expand Down
2 changes: 1 addition & 1 deletion docs/src/lib/sets/Line.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ CurrentModule = LazySets.LineModule
```
```@docs
rand(::Type{Line})
distance(::AbstractVector, ::Line; ::Real=2.0)
```
```@meta
CurrentModule = LazySets.API
Expand Down Expand Up @@ -86,6 +85,7 @@ Undocumented implementations:
* [`isbounded`](@ref isbounded(::LazySet))
* [`isempty`](@ref isempty(::LazySet))
* [`isoperationtype`](@ref isoperationtype(::Type{LazySet}))
* [`distance`](@ref distance(::AbstractVector, ::LazySet))
* [`project`](@ref project(::LazySet, ::AbstractVector{Int}))
* [`ρ`](@ref ρ(::AbstractVector, ::LazySet))
* [`σ`](@ref σ(::AbstractVector, ::LazySet))
Expand Down
19 changes: 4 additions & 15 deletions src/Sets/HalfSpace/distance.jl
Original file line number Diff line number Diff line change
@@ -1,19 +1,8 @@
"""
distance(x::AbstractVector, H::HalfSpace)
@commutative function distance(x::AbstractVector, H::HalfSpace; p::Real=2)
if p != 2
throw(ArgumentError("`distance` is only implemented for Euclidean norm"))
end

Compute the distance between point `x` and half-space `H` with respect to the
Euclidean norm.
### Input
- `x` -- vector
- `H` -- half-space
### Output
A scalar representing the distance between point `x` and half-space `H`.
"""
@commutative function distance(x::AbstractVector, H::HalfSpace)
N = promote_type(eltype(x), eltype(H))
a, b = _normalize_halfspace(H, N(2))
return max(dot(x, a) - b, zero(N))
Expand Down
19 changes: 4 additions & 15 deletions src/Sets/Hyperplane/distance.jl
Original file line number Diff line number Diff line change
@@ -1,19 +1,8 @@
"""
distance(x::AbstractVector, H::Hyperplane)
@commutative function distance(x::AbstractVector, H::Hyperplane; p::Real=2)
if p != 2
throw(ArgumentError("`distance` is only implemented for Euclidean norm"))
end

Compute the distance between point `x` and hyperplane `H` with respect to the
Euclidean norm.
### Input
- `x` -- vector
- `H` -- hyperplane
### Output
A scalar representing the distance between point `x` and hyperplane `H`.
"""
@commutative function distance(x::AbstractVector, H::Hyperplane)
N = promote_type(eltype(x), eltype(H))
a, b = _normalize_halfspace(H, N(2))
return abs(dot(x, a) - b)
Expand Down
19 changes: 1 addition & 18 deletions src/Sets/Line/distance.jl
Original file line number Diff line number Diff line change
@@ -1,21 +1,4 @@
"""
distance(x::AbstractVector, L::Line; [p]::Real=2.0)
Compute the distance between point `x` and the line with respect to the given
`p`-norm.
### Input
- `x` -- point/vector
- `L` -- line
- `p` -- (optional, default: `2.0`) the `p`-norm used; `p = 2.0` corresponds to
the usual Euclidean norm
### Output
A scalar representing the distance between `x` and the line `L`.
"""
@commutative function distance(x::AbstractVector, L::Line; p::Real=2.0)
@commutative function distance(x::AbstractVector, L::Line; p::Real=2)
d = L.d # direction of the line
t = dot(x - L.p, d) / dot(d, d)
return distance(x, L.p + t * d; p=p)
Expand Down

0 comments on commit 7b17d2e

Please sign in to comment.