C++ 比较 Vector3

C++ Compare Vector3

您好,我遇到了以下问题。

我有 3 个坐标向量。例如,这些看起来像这样:

Vector3 vec1 = (100, 100, 100);
Vector3 vec2 = (150, 120, 110);
Vector3 vec3 = (-200, 120, 110);

现在我想将vec2和vec3与vec1进行比较,找出两个向量中哪个更接近vec1,然后输出一个true或false。

举个例子,这个函数可能是这样的:

if (Vectorcompare(vec1, vec2, vec3))
{
    console.write("vec2 is nearer to vec1");
}
else
{
    console.write("vec3 is nearer to vec1");
}

//Output would be "vec2 is nearer to vec1"

现在我想知道如何编写比较函数的代码?

必须假设坐标也可以进入负值范围,因此简单的加法或减法可能会导致错误的结果。

看下面的代码:

#include <iostream>
#include <vector>

class Vector3
{
public:

    int X, Y, Z;

    Vector3(int x, int y, int z) : X(x), Y(y), Z(z) {}
    ~Vector3() {}
};

double GetDistance(Vector3 vec1, Vector3 vec2)
{
    return std::sqrt(std::pow((vec1.X - vec2.X), 2) + std::pow((vec1.Y - vec2.Y), 2) + std::pow((vec1.Z - vec2.Z), 2));
}

int main()
{
    Vector3 vec1{ 100, 100, 100 };
    Vector3 vec2{ 150, 120, 110 };
    Vector3 vec3{ -200, 120, 110 };

    if (GetDistance(vec1, vec3) < GetDistance(vec2, vec3))
    {
        // vec1 is nearer to vec3
    }
    else
    {
        // vec2 is nearer to vec3
    }
}

在上面的代码中,我创建了一个函数 GetDistance() 来获取 2 个向量之间的距离。现在在 main() 函数中,您可以将 vec1vec3vec2vec3 之间的距离进行比较,然后执行所需的操作。