I'm working with C# WPF.
It's a while I'm looking for an algorithm to solve my Problem. Probably it's not so trivial and goes into 3D graphics.
I have a 2D surface in a 3D space (can also be represented by a point cloud).
I need to split up this surface into smaller bits, which should fit into a specific box (for exemple 300 x 300 x 15).
I'm looking for an algorithm that works in 3d which is not axis aligned, something like a minimal volume bounding box but which splits up the volume into smaller boxes if the box is bigger than the specific volume.
I suspect an optimization problem of OBB and a lot of iterations, but I have no idea how to tackle this.
The picture illustrates a bit the Problem. The red and the black boxes are not forced to be axis aligned and they should be < or = to max box size (size and not volume!).
Thank you all for your support!
Your problem is known to be NP-hard for the case of covering a shape with disks: see f.e. https://en.wikipedia.org/wiki/Geometric_set_cover_problem. I strongly suspect your case of the set cover problem is nothing better. So you have to resort to approximately exact algorithms doing the work in linear or polynomial time. Depending on what conditions you can sacrifice in your solution you may arrive at a completely different task with known solution. So, if you explain how did you come to this task and what was the real task you wanted to solve then we may discuss what approximate solution could be good enough for your case.
For example, if you are good with sub-optimal (but good enough) covering of your point set with oriented boxes of sub-optimal size and orientation (but good enough) then you can go with some fast algorithm involving generating epsilon-nets (see f.e. https://en.wikipedia.org/wiki/%CE%95-net_(computational_geometry) and https://en.wikipedia.org/wiki/Delone_set) and/or greedy subdividing the point set into subsets with some greedy approximation of a good enough oriented bounding box for each subset.
Also, I did yet not use it myself in practice but if I had to think about approximate solution of your task knowing your constraints on the solution, I'd think along with https://arxiv.org/abs/1409.7425 which is supposed to serve as a framework approach for generating approximate solutions of a family of tasks similar to yours. Take a look, may be you see something explicitly useful for you or perhaps you see there useful words to google ready to use solutions.