@@ -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.
6363
6464const NNgon{N} = Ngon{Dim,T,N,P} where {Dim,T,P}
6565
66- function (:: Type{<:NNgon{N}} )(points:: Vararg{P,N} ) where {P<: AbstractPoint{Dim,T} ,
67- N} where {Dim,T}
68- return Ngon {Dim,T,N,P} (SVector (points))
66+ function (:: Type{<:NNgon{N1}} )(p0:: P , points:: Vararg{P,N2} ) where {P<: AbstractPoint{Dim,T} ,
67+ N1, N2} where {Dim,T}
68+ @assert N1 == N2+ 1
69+ return Ngon {Dim,T,N1,P} (SVector (p0, points... ))
6970end
7071Base. show (io:: IO , x:: NNgon{N} ) where {N} = print (io, " Ngon{$N }(" , join (x, " , " ), " )" )
7172
@@ -101,12 +102,12 @@ const Triangle{Dim,T} = TriangleP{Dim,T,Point{Dim,T}}
101102const Triangle3d{T} = Triangle{3 ,T}
102103
103104Base. show (io:: IO , x:: TriangleP ) = print (io, " Triangle(" , join (x, " , " ), " )" )
104- Base. summary (io:: IO , x :: Type{<:TriangleP} ) = print (io, " Triangle" )
105+ Base. summary (io:: IO , :: Type{<:TriangleP} ) = print (io, " Triangle" )
105106
106107const Quadrilateral{Dim,T} = Ngon{Dim,T,4 ,P} where {P<: AbstractPoint{Dim,T} }
107108
108109Base. show (io:: IO , x:: Quadrilateral ) = print (io, " Quad(" , join (x, " , " ), " )" )
109- Base. summary (io:: IO , x :: Type{<:Quadrilateral} ) = print (io, " Quad" )
110+ Base. summary (io:: IO , :: Type{<:Quadrilateral} ) = print (io, " Quad" )
110111
111112function coordinates (lines:: AbstractArray{LineP{Dim,T,PointType}} ) where {Dim,T,PointType}
112113 return if lines isa Base. ReinterpretArray
@@ -149,9 +150,10 @@ Base.show(io::IO, x::TetrahedronP) = print(io, "Tetrahedron(", join(x, ", "), ")
149150
150151coordinates (x:: Simplex ) = x. points
151152
152- function (:: Type{<:NSimplex{N}} )(points:: Vararg{P,N} ) where {P<: AbstractPoint{Dim,T} ,
153- N} where {Dim,T}
154- return Simplex {Dim,T,N,P} (SVector (points))
153+ function (:: Type{<:NSimplex{N1}} )(p0:: P , points:: Vararg{P,N2} ) where {P<: AbstractPoint{Dim,T} ,
154+ N1, N2} where {Dim,T}
155+ @assert N1 == N2+ 1
156+ return Simplex {Dim,T,N1,P} (SVector (p0, points... ))
155157end
156158
157159# Base Array interface
0 commit comments