BasicBSpline.jl
BasicBSpline.jl copied to clipboard
Basic (mathematical) operations for B-spline functions and related things with julia
This PR fixes #124.
```julia julia> using BasicBSpline julia> p = 3 3 julia> P1 = BSplineSpace{p}(KnotVector(1:8)) BSplineSpace{3, Float64}(KnotVector([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0])) julia> P2 = BSplineSpace{p}(KnotVector(2,3,3,4,5,6,7,8)) BSplineSpace{3, Float64}(KnotVector([2.0, 3.0, 3.0,...
I'm not much familiar with the usage of the following packages, but it would be nice to have a detailed comparison in the documentation. * [BSplineKit.jl](https://github.com/jipolanco/BSplineKit.jl) * [BSplines.jl](https://github.com/sostock/BSplines.jl) * [Interpolations.jl](https://github.com/JuliaMath/Interpolations.jl)...
It might be great to provide `BasicBSplineCore.jl` package for the core components of the current `BasicBSpline.jl` package. `BasicBSplineCore.jl` will not have dependency on `FastGaussQuadrature.jl`.
Currently, I don't need this feature, but it would be better to have some methods for integration. If someone needs this feature, feel free to add comment to this issue.
```julia julia> k = KnotVector{Int}([1,2,3]) KnotVector([1, 2, 3]) julia> typeof(k) KnotVector{Int64} julia> float(k) ERROR: MethodError: no method matching AbstractFloat(::KnotVector{Int64}) Closest candidates are: (::Type{T})(::AbstractChar) where T
Currently, we mainly support 1 to 3-dimensional B-spline manifolds. this can be generalized with `@generated` macro.
I think supporting T-spline should be in another package, and I'm not familiar with the patent. This issue is just for future reference.
In `BasicBSpline`, `BSplineSpace` (`AbstractBSplineSpace`) structs are regarded as a linear space, so we can compute their `intersection` and `+`. I'm not sure we have practical benefits for the features.