Mercurial > repos > public > sbplib_julia
comparison src/Grids/manifolds.jl @ 1780:8ecdc5bb46be feature/grids/manifolds
Allow mixed types in constructors for HyperBox and Simplex
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Mon, 16 Sep 2024 08:58:12 +0200 |
| parents | 2a8a2b52a112 |
| children | a73838c9ef94 |
comparison
equal
deleted
inserted
replaced
| 1779:2a8a2b52a112 | 1780:8ecdc5bb46be |
|---|---|
| 40 a::SVector{D,T} | 40 a::SVector{D,T} |
| 41 b::SVector{D,T} | 41 b::SVector{D,T} |
| 42 end | 42 end |
| 43 | 43 |
| 44 function HyperBox(a,b) | 44 function HyperBox(a,b) |
| 45 T = SVector{length(a)} | 45 ET = promote_type(eltype(a),eltype(b)) |
| 46 T = SVector{length(a),ET} | |
| 46 HyperBox(convert(T,a), convert(T,b)) | 47 HyperBox(convert(T,a), convert(T,b)) |
| 47 end | 48 end |
| 48 | 49 |
| 49 Rectangle{T} = HyperBox{T,2} | 50 Rectangle{T} = HyperBox{T,2} |
| 50 Box{T} = HyperBox{T,3} | 51 Box{T} = HyperBox{T,3} |
| 60 | 61 |
| 61 struct Simplex{T,D,NV} <: ParameterSpace{D} | 62 struct Simplex{T,D,NV} <: ParameterSpace{D} |
| 62 verticies::NTuple{NV,SVector{D,T}} | 63 verticies::NTuple{NV,SVector{D,T}} |
| 63 end | 64 end |
| 64 | 65 |
| 65 Simplex(verticies::Vararg{AbstractArray}) = Simplex(Tuple(SVector(v...) for v ∈ verticies)) | 66 function Simplex(verticies::Vararg{AbstractArray}) |
| 67 ET = mapreduce(eltype,promote_type,verticies) | |
| 68 T = SVector{length(verticies[1]),ET} | |
| 69 | |
| 70 return Simplex(Tuple(convert(T,v) for v ∈ verticies)) | |
| 71 end | |
| 66 | 72 |
| 67 verticies(s::Simplex) = s.verticies | 73 verticies(s::Simplex) = s.verticies |
| 68 | 74 |
| 69 Triangle{T} = Simplex{T,2} | 75 Triangle{T} = Simplex{T,2} |
| 70 Tetrahedron{T} = Simplex{T,3} | 76 Tetrahedron{T} = Simplex{T,3} |
