Java 从二维平面上的点导出函数(多项式)

Java 从二维平面上的点导出函数(多项式),java,Java,作为我的后续工作,我能够找到一张照片的轮廓,将其细化,然后得到一个点的2D图。我现在正试图从这些观点中得出一些组,希望能将类似于以下内容的东西转化为: public void loadFunctions() { functions.clear(); thinOutline(); int i = 0; functions.add(new Function()); for (int y = 0; y < originalHeight; y++)

作为我的后续工作,我能够找到一张照片的轮廓,将其细化,然后得到一个点的2D图。我现在正试图从这些观点中得出一些组,希望能将类似于以下内容的东西转化为:

public void loadFunctions() {
    functions.clear();

    thinOutline();

    int i = 0;
    functions.add(new Function());
    for (int y = 0; y < originalHeight; y++)
        for (int x = 0; x < originalWidth; x++)
            if (thinned[x][y]) {
                if (functions.get(i).containsX(x)) {
                    functions.get(i).loadPoly();
                    functions.add(new Function());
                    i++;
                }
                functions.get(i).addPoint(x, y);
            }
}

对下列事项:

public void loadFunctions() {
    functions.clear();

    thinOutline();

    int i = 0;
    functions.add(new Function());
    for (int y = 0; y < originalHeight; y++)
        for (int x = 0; x < originalWidth; x++)
            if (thinned[x][y]) {
                if (functions.get(i).containsX(x)) {
                    functions.get(i).loadPoly();
                    functions.add(new Function());
                    i++;
                }
                functions.get(i).addPoint(x, y);
            }
}

或以下各项:

public void loadFunctions() {
    functions.clear();

    thinOutline();

    int i = 0;
    functions.add(new Function());
    for (int y = 0; y < originalHeight; y++)
        for (int x = 0; x < originalWidth; x++)
            if (thinned[x][y]) {
                if (functions.get(i).containsX(x)) {
                    functions.get(i).loadPoly();
                    functions.add(new Function());
                    i++;
                }
                functions.get(i).addPoint(x, y);
            }
}

规则是组必须是函数,这意味着给定任何x值,将其输入f(x),您将只收到一个y值。通常这意味着遵循垂直线测试,但只有一个x值的f(y)结果也会起作用(遵循水平线测试)。我目前正在使用以下工具:

public void loadFunctions() {
    functions.clear();

    thinOutline();

    int i = 0;
    functions.add(new Function());
    for (int y = 0; y < originalHeight; y++)
        for (int x = 0; x < originalWidth; x++)
            if (thinned[x][y]) {
                if (functions.get(i).containsX(x)) {
                    functions.get(i).loadPoly();
                    functions.add(new Function());
                    i++;
                }
                functions.get(i).addPoint(x, y);
            }
}
public void loadFunctions(){
函数。clear();
thinOutline();
int i=0;
添加(新函数());
对于(int y=0;y
这既有效又无效。我得到的所有线条都遵循垂直线条测试,但因为我从上到下迭代,所以我可以得到如下结果:

与此相反:


请注意,我只是在寻求将平面上的点分组的解决方案。我不需要一个导出函数的解决方案,这是我已经解决的另一个问题

如果你不想这样做,为什么你要把你的问题命名为“从二维平面上的点导出函数(多项式)”?因为这正是我想做的,但我只需要一个从二维平面上对点进行分组的解决方案。我提出的问题将来很容易理解。“我不是在试图推导多项式”~~我希望我满足了你的暴躁脾气。我只是被你说你曾经和没有尝试做某事弄糊涂了。我不是故意要显得生气。