|
上面的迭代中,局部中心点应该是+号,否则在3次会有问题
用opencv试了一下,的确看到了问题:
所以再改一下
void SplitTable(int n, double x1, double y1, double x2, double y2)
{
// 先求出局部中心点
double centerX = (x2 + x1) / 2;
double centerY = (y2 + y1) / 2;
if (n == 1)
{
cout << "第一块:" << x1 << "," << y1 << " --- " << centerX << "," << centerY << endl;
cout << "第二块:" << centerX << "," << y1 << " --- " << x2 << "," << centerY << endl;
cout << "第三块:" << centerX << "," << centerY << " --- " << x2 << "," << y2 << endl;
cout << "第四块:" << x1 << "," << centerY << " --- " << centerX << "," << y2 << endl;
return;
}
else // 切分网格
{
// 求第一块的递归
SplitTable(n - 1, x1, y1, centerX, centerY);
cout << "===========" << endl;
// 求第二块的递归
SplitTable(n - 1, centerX, y1, x2, centerY);
cout << "===========" << endl;
// 求第三块的递归
SplitTable(n - 1, centerX, centerY, x2, y2);
cout << "===========" << endl;
// 求第四块的递归
SplitTable(n - 1, x1, centerY, centerX, y2);
}
}
这回在用opencv查看了一下,貌似没问题了
|
|