如何在C++中查找3D空间中的相邻点

bmp9r5qi  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(192)

我在三维空间中有两个点,我想写一个条件来确定两个点是否相邻:它们在整数格中是否只相隔一个单位
我有一个名为Point的结构体,它包含x、y和z坐标。然后在main函数中,我设置点a、B、c、d和e的值,并将它们推到一个向量中。然后在for循环中,我想检查两个点是否相邻。目前我只是检查它们是否在同一个轴上,但我不知道如何继续。

struct Point {
   int x;
   int y;
   int z;
};
bool adjacent(Point a, Point b) { ??? }

int main() {
    struct Point a = {0, 0, 0};
    struct Point b = {0, 0, -1};
    struct Point c = {1, 0, -1};
    struct Point d = {1, -1, -1};
    struct Point e = {2, -1, -1};

    assert(adjacent(a, b));
    assert(adjacent(b, c));
    assert(adjacent(c, d));
    assert(adjacent(d, e));
    assert(!adjacent(a, c));
}

我所说的相邻是指类似于这张照片中的东西:

yfjy0ee7

yfjy0ee71#

非常简要地说:

for each pair of points:
    if two of the three coordinates are equal AND
              the other coordinate differs by 1:
        then mark the pair as adjacent.

遍历点对非常简单:第一指针a遍历索引0-(n-2);第二点ba的位置遍历索引直到结束n-1
在给定整数坐标的情况下,检查相邻关系也很容易。

diff = abs(a.x - b.x) + 
       abs(a.y - b.y) + 
       abs(a.z - b.z)

diff = 1**当且仅当这两个点相邻。

相关问题