The BSplineManifold
instance M
is a function-like object, so you can input parameter like M(1.3)
:
julia> using StaticArrays
julia> using BasicBSpline
julia> using BasicBSplineExporter
julia> pts = [SVector(0, 0), SVector(1, 1), SVector(2, -1), SVector(3, 0), SVector(4, -2), SVector(5, 1)]
6-element Vector{SVector{2, Int64}}:
[0, 0]
[1, 1]
[2, -1]
[3, 0]
[4, -2]
[5, 1]
julia> p = 3
3
julia> k = KnotVector(0:3)+p*KnotVector(0,3)
KnotVector([0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 3.0, 3.0, 3.0])
julia> P = BSplineSpace{p}(k)
BSplineSpace{3, Float64}(KnotVector([0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 3.0, 3.0, 3.0]))
julia> M = BSplineManifold(pts, (P,))
BSplineManifold{1, (3,), SVector{2, Int64}, Tuple{BSplineSpace{3, Float64}}}((BSplineSpace{3, Float64}(KnotVector([0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 3.0, 3.0, 3.0])),), SVector{2, Int64}[[0, 0], [1, 1], [2, -1], [3, 0], [4, -2], [5, 1]])
julia> M(0)
2-element SVector{2, Float64} with indices SOneTo(2):
0.0
0.0
julia> M(3)
2-element SVector{2, Float64} with indices SOneTo(2):
5.0
1.0
julia> M(-1)
ERROR: DomainError with -1:
The input -1 is out of range.
Stacktrace:
[1] (::BSplineManifold{1, (3,), SVector{2, Int64}, Tuple{BSplineSpace{3, Float64}}})(t1::Int64)
@ BasicBSpline ~/.julia/dev/BasicBSpline/src/_BSplineManifold.jl:86
[2] top-level scope
@ REPL[13]:1
julia> M.(0:0.1:3)
31-element Vector{SVector{2, Float64}}:
[0.0, 0.0]
[0.2854166666666667, 0.2426666666666667]
[0.5433333333333336, 0.38133333333333347]
[0.7762499999999998, 0.43199999999999994]
[0.9866666666666668, 0.41066666666666674]
[1.1770833333333335, 0.3333333333333333]
[1.35, 0.21599999999999997]
[1.5079166666666666, 0.07466666666666671]
[1.6533333333333333, -0.07466666666666677]
[1.7887500000000003, -0.21599999999999997]
[1.9166666666666665, -0.33333333333333326]
[2.0393333333333334, -0.4146666666666668]
[2.158, -0.46399999999999997]
[2.2736666666666667, -0.48933333333333334]
[2.3873333333333333, -0.49866666666666665]
[2.5, -0.5]
[2.6126666666666667, -0.5013333333333332]
[2.7263333333333333, -0.5106666666666666]
[2.8419999999999996, -0.536]
[2.9606666666666666, -0.5853333333333333]
[3.083333333333333, -0.6666666666666666]
[3.21125, -0.7820000000000001]
[3.3466666666666667, -0.9093333333333335]
[3.4920833333333334, -1.0206666666666666]
[3.65, -1.0879999999999999]
[3.8229166666666665, -1.0833333333333333]
[4.013333333333334, -0.9786666666666665]
[4.223750000000001, -0.7459999999999996]
[4.456666666666666, -0.35733333333333417]
[4.714583333333333, 0.2153333333333327]
[5.0, 1.0]