@@ -3,7 +3,7 @@ Abstract Geometry in R{Dim} with Number type T
33"""
44abstract type AbstractGeometry{Dim,T<: Number } end
55abstract type GeometryPrimitive{Dim,T} <: AbstractGeometry{Dim,T} end
6- Base. ndims (x :: AbstractGeometry{Dim} ) where {Dim} = Dim
6+ Base. ndims (:: AbstractGeometry{Dim} ) where {Dim} = Dim
77
88"""
99Geometry made of N connected points. Connected as one flat geometry, it makes a Ngon / Polygon.
6262
6363const NNgon{N} = Ngon{Dim,T,N,P} where {Dim,T,P}
6464
65- function (:: Type{<:NNgon{N}} )(points:: Vararg{P,N} ) where {P<: AbstractPoint{Dim,T} ,
66- N} where {Dim,T}
67- return Ngon {Dim,T,N,P} (SVector (points))
65+ function (:: Type{<:NNgon{N1}} )(p0:: P , points:: Vararg{P,N2} ) where {P<: AbstractPoint{Dim,T} ,
66+ N1, N2} where {Dim,T}
67+ @assert N1 == N2+ 1
68+ return Ngon {Dim,T,N1,P} (SVector (p0, points... ))
6869end
6970Base. show (io:: IO , x:: NNgon{N} ) where {N} = print (io, " Ngon{$N }(" , join (x, " , " ), " )" )
7071
@@ -100,12 +101,12 @@ const Triangle{Dim,T} = TriangleP{Dim,T,Point{Dim,T}}
100101const Triangle3d{T} = Triangle{3 ,T}
101102
102103Base. show (io:: IO , x:: TriangleP ) = print (io, " Triangle(" , join (x, " , " ), " )" )
103- Base. summary (io:: IO , x :: Type{<:TriangleP} ) = print (io, " Triangle" )
104+ Base. summary (io:: IO , :: Type{<:TriangleP} ) = print (io, " Triangle" )
104105
105106const Quadrilateral{Dim,T} = Ngon{Dim,T,4 ,P} where {P<: AbstractPoint{Dim,T} }
106107
107108Base. show (io:: IO , x:: Quadrilateral ) = print (io, " Quad(" , join (x, " , " ), " )" )
108- Base. summary (io:: IO , x :: Type{<:Quadrilateral} ) = print (io, " Quad" )
109+ Base. summary (io:: IO , :: Type{<:Quadrilateral} ) = print (io, " Quad" )
109110
110111function coordinates (lines:: AbstractArray{LineP{Dim,T,PointType}} ) where {Dim,T,PointType}
111112 return if lines isa Base. ReinterpretArray
@@ -147,9 +148,10 @@ Base.show(io::IO, x::TetrahedronP) = print(io, "Tetrahedron(", join(x, ", "), ")
147148
148149coordinates (x:: Simplex ) = x. points
149150
150- function (:: Type{<:NSimplex{N}} )(points:: Vararg{P,N} ) where {P<: AbstractPoint{Dim,T} ,
151- N} where {Dim,T}
152- return Simplex {Dim,T,N,P} (SVector (points))
151+ function (:: Type{<:NSimplex{N1}} )(p0:: P , points:: Vararg{P,N2} ) where {P<: AbstractPoint{Dim,T} ,
152+ N1, N2} where {Dim,T}
153+ @assert N1 == N2+ 1
154+ return Simplex {Dim,T,N1,P} (SVector (p0, points... ))
153155end
154156
155157# Base Array interface
0 commit comments