Skip to content

Commit 0264a39

Browse files
authored
Use Disk from DomainSets (#87)
1 parent 3f22e9c commit 0264a39

File tree

4 files changed

+17
-27
lines changed

4 files changed

+17
-27
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "ApproxFunFourier"
22
uuid = "59844689-9c9d-51bf-9583-5b794ec66d30"
3-
version = "0.3.17"
3+
version = "0.3.18"
44

55
[deps]
66
AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c"

src/ApproxFunFourier.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import ApproxFunBase: Fun, SumSpace, SubSpace, NoSpace, IntervalOrSegment,
3939

4040
import BandedMatrices: bandwidths
4141

42+
using DomainSets
4243
import DomainSets: Domain, indomain, UnionDomain, Point, Interval,
4344
boundary, rightendpoint, leftendpoint, endpoints
4445

src/Domains/Disk.jl

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,24 @@
11
export Disk,𝔻
22

3-
# T is Real or Complex
4-
# TT is (Real,Real) or Complex
5-
"""
6-
Disk(c,r)
7-
8-
represents the disk centred at `c` with radius `r`.
9-
"""
10-
struct Disk{T} <: Domain{T}
11-
center::T
12-
radius::Float64
13-
end
14-
15-
Disk(c,r) = Disk{typeof(c)}(c,r)
16-
Disk(c::Real,r) = Disk(complex(c),r)
17-
Disk(c::Integer,r) = Disk(float(c),r)
18-
Disk(c::Complex{<:Integer},r) = Disk(float(c),r)
19-
20-
Disk() = Disk(SVector(0.,0.),1.)
21-
Disk(::AnyDomain) = Disk(NaN,(NaN,NaN))
3+
DomainSets.Disk(::AnyDomain) = Disk(NaN,(NaN,NaN))
224

235
const 𝔻 = Disk()
246

25-
isambiguous(d::Disk) = isnan(d.radius) && all(isnan,d.center)
7+
isambiguous(d::Disk) = isnan(radius(d)) && all(isnan, center(d))
268

279
polar(r,θ) = SVector(r*cos(θ),r*sin(θ))
2810
ipolar(x,y) = SVector(sqrt(abs2(x)+abs2(y)), atan(y,x))
2911
polar(rθ::SVector) = polar(rθ...)
3012
ipolar(xy::SVector) = ipolar(xy...)
3113

32-
fromcanonical(D::Disk{T},xy::SVector) where {T<:SVector} = SVector((D.radius.*xy .+ D.center)...)
33-
tocanonical(D::Disk{T},x,y) where {T<:SVector} = SVector((xy .- D.center)./D.radius)
14+
fromcanonical(D::Disk, xy) = radius(D).*xy .+ center(D)
15+
tocanonical(D::Disk, xy) = (xy .- center(D))./radius(D)
3416

35-
checkpoints(d::Disk) = [fromcanonical(d,SVector(.1,.2243)),fromcanonical(d,SVector(-.212423,-.3))]
17+
checkpoints(d::Disk) = SVector{2}(fromcanonical(d,SVector(.1,.2243)), fromcanonical(d,SVector(-.212423,-.3)))
3618

3719
# function points(d::Disk,n,m,k)
3820
# ptsx=0.5*(1-gaussjacobi(n,1.,0.)[1])
3921
# ptst=points(PeriodicSegment(),m)
4022
#
4123
# Float64[fromcanonical(d,x,t)[k] for x in ptsx, t in ptst]
4224
# end
43-
44-
45-
boundary(d::Disk) = Circle(d.center,d.radius)

test/runtests.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ using ApproxFunBaseTest: testspace, testtransforms, testmultiplication, testragg
77
using ApproxFunOrthogonalPolynomials
88
using LinearAlgebra
99
using SpecialFunctions
10+
using DomainSets
1011
_factorial(n) = gamma(n+1)
1112

1213
using StaticArrays: SVector
@@ -294,6 +295,15 @@ end
294295
@inferred Derivative(Laurent(Circle()))
295296
end
296297

298+
@testset "Disk" begin
299+
d = Disk(ApproxFunBase.AnyDomain())
300+
@test ApproxFunBase.isambiguous(d)
301+
@test center(𝔻) == [0,0]
302+
@test radius(𝔻) == 1
303+
d = Disk(2, (2,2))
304+
@test ApproxFunBase.fromcanonical(d, [2,2]) == [6,6]
305+
@test ApproxFunBase.tocanonical(d, [6,6]) == [2,2]
306+
end
297307

298308
@testset "Calculus" begin
299309
for f in (Fun->sin(sin(θ)),SinSpace()),Fun->cos(θ)+cos(3θ),CosSpace()),

0 commit comments

Comments
 (0)