我正在寻找一个算法,将生成一个凹多边形(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.

09-26 17:10