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} |