# Geometry :

Subject: Re: [geometry] 3D box -> 3D multi_polygon conversion
From: Tomislav Maric (tomislav.maric_at_[hidden])
Date: 2013-06-11 15:29:37

Hi Barend,

Bruno instructed that we use the multi_polygon kind-of a concept for the
polyhedron, because restricting the polyhedron topology to an edge-graph
will be even more complicated and it will introduce a loss in accuracy
(for my cases for sure), since i need algortihms that work on polyhedra
that are slightly non-convex.

So the first thing I would try to do is to implement a tetrahedral
decomposition of a multi_polygon to compute its volume. A 3D plane
(halfspace). And an intersection between the halfspace and a polyhedron
(a set of 3D polygons). These algorithms I really need, and quite soon
(few months time), so they are on the top of my list.

Regards,
Tomislav

On 06/11/2013 09:25 PM, Barend Gehrels wrote:
> Hi Tomislav,
>
> On 11-6-2013 21:13, Tomislav Maric wrote:
>> Thank you Barend.
>>
>> I'll dig around and try to see what I need to do to get things running
>> for 3D. Any suggestions regarding where should I start and what needs to
>> be done?
>
> A lot needs to be done there...
>
> Note that converting a box to e.g. a ring is not that simple. A 3D box
> has two z-coordinates, which cannot be just converted into a ring with
> height, you will loose one coordinate. Unless you define a ring with
> two z-coordinates (ground and height), which is basically possible,
> but that will make the conversion less generic.
>
> What is basically implemented for 3D is, out of my head:
> - the concepts are dimension-agnostic, so for example get/set
> - some dimension-agnostic algorithms (of course) as num_points,
> num_geometries, reverse, unique, for_each
> - distance (3D points or actually N-D points)
> - centroid (idem) for point collections
> - derived from distance: length (3d segments or linestrings, or n-d) /
> perimeter
> - derived from distance: simplify
> - conversion to WKT/DSV
> - some in details are basically N-D but never tested as such, or will
> only work with (probably minor) fixes, such as sectionalize
>
> What we need is a polyhedron, and then operations on it, which will be
> a major work on itself.
>