gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:25 25 4
gpt4 key购买 nike

我在 3D 空间中有几个点,我想编写一个条件来确定两个点是否相邻:它们在整数格中是否仅相隔一个单位?

我有一个名为 Point 的结构,它包含 x、y 和 z 坐标。然后在主函数中,我设置点 a、b、c、d、e 的值并将它们放入一个 vector 中。然后在 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));
}

我所说的相邻是指这张照片中的内容: enter image description here

最佳答案

非常简短:

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 iff 点相邻。

关于c++ - 如何在 C++ 中查找 3D 空间中的相邻点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com