RegionTrees.jl icon indicating copy to clipboard operation
RegionTrees.jl copied to clipboard

A problem related to split! of cell

Open HiroIshida opened this issue 6 years ago • 1 comments

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.

HiroIshida avatar Nov 14 '19 08:11 HiroIshida

Does this still occur in https://github.com/rdeits/AdaptiveDistanceFields.jl?

sjkelly avatar Feb 21 '20 11:02 sjkelly