RegionTrees.jl
RegionTrees.jl copied to clipboard
A problem related to split! of cell
I tweaked the example as follows:
import StaticArrays: SVector
using RegionTrees
include("adaptive_distance_fields.jl")
using .AdaptivelySampledDistanceFields: ASDF, evaluate
s = x -> sqrt(sum((x - SVector(0, 0)).^2))
eps = 0.1
adf = ASDF(s, SVector(0., 0), SVector(1. + eps, 1 + eps), 1e-4, 1e-4)
and got the following error:
ERROR: LoadError: BoundsError: attempt to access interpolate(::StaticArrays.SArray{Tuple{2,2},Float64,2,4}, BSpline(Linear())) with element type Float64 with indices 1:2×1:2 at index [2.000000000000001, 1.4999999999999973]
Stacktrace:
[1] throw_boundserror(::Interpolations.BSplineInterpolation{Float64,2,StaticArrays.SArray{Tuple{2,2},Float64,2,4},BSpline{Linear},Tuple{Base.Slice{UnitRange{Int64}},Base.Slice{UnitRange{Int64}}}}, ::Tuple{Float64,Float64}) at ./abstractarray.jl:484
[2] BSplineInterpolation at /home/h-ishida/documents/Interpolations.jl/src/b-splines/indexing.jl:17 [inlined]
[3] macro expansion at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/adaptive_distance_fields.jl:10 [inlined]
[4] evaluate(::Interpolations.BSplineInterpolation{Float64,2,StaticArrays.SArray{Tuple{2,2},Float64,2,4},BSpline{Linear},Tuple{Base.Slice{UnitRange{Int64}},Base.Slice{UnitRange{Int64}}}}, ::StaticArrays.SArray{Tuple{2},Float64,1,2}) at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/adaptive_distance_fields.jl:10
[5] evaluate(::Interpolations.BSplineInterpolation{Float64,2,StaticArrays.SArray{Tuple{2,2},Float64,2,4},BSpline{Linear},Tuple{Base.Slice{UnitRange{Int64}},Base.Slice{UnitRange{Int64}}}}, ::HyperRectangle{2,Float64}, ::StaticArrays.SArray{Tuple{2},Float64,1,2}) at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/adaptive_distance_fields.jl:30
[6] evaluate at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/adaptive_distance_fields.jl:19 [inlined]
[7] needs_refinement(::Cell{Interpolations.BSplineInterpolation{Float64,2,StaticArrays.SArray{Tuple{2,2},Float64,2,4},BSpline{Linear},Tuple{Base.Slice{UnitRange{Int64}},Base.Slice{UnitRange{Int64}}}},2,Float64,4}, ::getfield(Main, Symbol("##107#108")), ::Float64, ::Float64) at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/adaptive_distance_fields.jl:45
[8] adaptivesampling!(::Cell{Interpolations.BSplineInterpolation{Float64,2,StaticArrays.SArray{Tuple{2,2},Float64,2,4},BSpline{Linear},Tuple{Base.Slice{UnitRange{Int64}},Base.Slice{UnitRange{Int64}}}},2,Float64,4}, ::Main.AdaptivelySampledDistanceFields.SignedDistanceRefinery{getfield(Main, Symbol("##107#108"))}) at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/adaptive_distance_fields.jl:33
[9] ASDF(::Function, ::StaticArrays.SArray{Tuple{2},Float64,1,2}, ::StaticArrays.SArray{Tuple{2},Float64,1,2}, ::Float64, ::Float64) at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/adaptive_distance_fields.jl:63
[10] top-level scope at none:0
[11] include at ./boot.jl:326 [inlined]
[12] include_relative(::Module, ::String) at ./loading.jl:1038
[13] include(::Module, ::String) at ./sysimg.jl:29
[14] include(::String) at ./client.jl:403
[15] top-level scope at none:0
in expression starting at /home/h-ishida/documents/RegionTrees.jl/examples/adaptive_distance_fields/test.jl:9
As the error messages show, coords computed here is outside the range of itp (i.e. [1, 2]).
I did farther investigation and found that the cell's origin and boundary was [1.0656250000000003,1.0656250000000003] and [0.034375,0.034375] respectively when the evaluate function causes the error. The value of origin is so strange and seems to incur some problem related to floating points.
Does this still occur in https://github.com/rdeits/AdaptiveDistanceFields.jl?