Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从点云生成多个正方形_C++_Square - Fatal编程技术网

C++ 从点云生成多个正方形

C++ 从点云生成多个正方形,c++,square,C++,Square,我有一组点,我想从中得到所有可能的平方。 我该如何实现它(哪些方法?) 我按照下面的步骤依次迭代了点数组,它并没有给出所有可能的平方。我创建了一个主循环,在其中我有一个第二个循环,在每次迭代中给我3分 最好的问候也许有更有效的方法,但我的建议是首先计算每对点之间的距离: distance[N][N]; distance[i][j] = distance between point i and point j 接下来,搜索距离给定点i相同的点j和k。我们还必须检查角度是否为90°。你还得找到第四

我有一组点,我想从中得到所有可能的平方。 我该如何实现它(哪些方法?)

我按照下面的步骤依次迭代了点数组,它并没有给出所有可能的平方。我创建了一个主循环,在其中我有一个第二个循环,在每次迭代中给我3分


最好的问候

也许有更有效的方法,但我的建议是首先计算每对点之间的距离:

distance[N][N];
distance[i][j] = distance between point i and point j
接下来,搜索距离给定点
i
相同的点
j
k
。我们还必须检查角度是否为90°。你还得找到第四点

for (int i=0;i<N;i++){
    for (int j=i+1;j<N;j++){
        for (int k=j+1;k<N;k++){
            if (abs(distances[i][j] - distances[i][k]) < eps){
                if (abs(distances[j][k] - sqrt(2)*distances[i][j]) < eps){
                    ... find a point with same distance from k and j....
                }
            }
        }
    }     
}

对于(int i=0;i有一个简单的例子(2D轴对齐):使用两条扫描线(一条在x方向,另一条在y方向)并从(xmin,ymin)迭代到(xmax,ymax)。如果两条扫描线都包含多个点,尝试构造一个正方形。(这只是一个草图)你能解释更多吗?拿一支铅笔和一张纸,画一个正方形