我正在寻找一个算法,将生成一个凹多边形(n点,其中n>3-用户输入这个值)从一个图像。
我对算法的想法是:
// Every pixel in image is checked and a minimal orientated bounding box is generated (transparent pixels are ignored)
boundingBox = createImageBoundingBox(image);
curpoints = 4, A = 0, B = 1, tmppoints = curpoints;
while(curpoints < maxNumberOfPoints)
{
add a new point between point A and point B (A and B are points from the boundingBox)
reposition points so that it will contain the minimal surface
A++; B++;
curpoints++;
if(A == tmppoints)
{ A = 0; B = 1; tmppoints=curpoints; }
}
我面临的问题是我不知道如何最佳地重新定位点。这可以用其他方法(更好/更快的方法)来做吗会感激你的任何想法。
谢谢
编辑:
图像必须至少为10x10。我需要n点参数,这样用户就可以调节要使用多少点(用于优化)。另一种方法是使用一个因子(0-1),它告诉您希望多边形具有多少细节(多少点)(0是4点,>05点或更多点)但不知道如何实施。
最佳答案
凹面船体可以用alpha shapes建造。CGAL link.