As some of us experimented with a straight-skeleton approach to create complex roof lines I think we need a common way to decide when it should be used. Currently what I do is compare the area of the outline with the oriented bounding box: Skeleton is used when ‘area of obb > area of outline * 1.2’ or when the outline contains holes - so this is pretty arbitrary
I think it would be good to have a tag like roof:orientation:multi=yes when a skeleton interpretation for the roof is applicable.
I’m still working on straight skeletons and i ended up with roof:orientation as the best candidate to decide to use skeleton or not:
tag orientation is not present → compute and use the straight skeleton algorithm.
roof:orientation=across → straight skeleton can’t be computed as it doesn’t make sense, compute minimal oriented OBox and use the smallest edge as ridge.
roof:orientation=along → the mapper knows that the roof has a single straight ridge along the building, compute minimal oriented OBox and use the longest edge as ridge.
@j3d & @Kendzi what do you think about tweaking our engines to match this idea to get similar behavior ?
But i won’t base the detection on hole because when we remove parts from the outline it generates holes (for example when there are parts representing chimney or dormers).