A = rand(HPolyhedron,dim=3)
Av = tovrep(A)
Av.vertices
gives an 11-element Array{Array{Float64,1},1} and not a 3 Dimensional array of 11 elements, also how can i convert these vertices to BasicGeometry.Point3d without using a loop?
A = rand(HPolyhedron,dim=3)
Av = tovrep(A)
Av.vertices
gives an 11-element Array{Array{Float64,1},1} and not a 3 Dimensional array of 11 elements, also how can i convert these vertices to BasicGeometry.Point3d without using a loop?
Hi @adropintheriver,
Why are vertices […] given as 1 D Array and not based on the shape of the object?
I guess because it is simple to reason about a polytope described in vertex representation as a one-dimensional array of “vertices”. In LazySets there is a type VPolygon
to deal with the two-dimensional case, which is special in many ways (e.g. lots of very efficient algorithms exist only for the 2D case). I don’t think there would be a practical benefit of adding the dimension as part of the type. (Please note that you can always instantiate such sets using statically sized arrays from StaticArrays
, which do know the “shape” of the object in advance hence can benefit from lower-level optimizations.)
About the question on the shape, an array-of-arrays can be reshaped into a single array in different ways, e.g.
julia> using LazySets
julia> V = rand(VPolytope, dim=3);
julia> typeof(V)
VPolytope{Float64,Array{Float64,1}}
julia> vlist = vertices_list(V); # array of arrays
julia> typeof(vlist)
Array{Array{Float64,1},1}
julia> length(vlist) # number of vertices
12
julia> R = reduce(hcat, vlist)
3×12 Array{Float64,2}:
...
About the question on the package GeometryBasics.jl, evaluating GeometryBasics.Point3
on each vertex should do it? (Why wouldn’t you use a loop?).
julia> P = [Point3(x) for x in vlist]
12-element Array{Point{3,Float64},1}:
...
Hope this helps.