您好我面臨以下問題。
我有 3 個坐標向量。例如,這些看起來像這樣:
Vector3 vec1 = (100, 100, 100);
Vector3 vec2 = (150, 120, 110);
Vector3 vec3 = (-200, 120, 110);
現在我想將 vec2 和 vec3 與 vec1 進行比較,以找出兩個向量中哪個更接近 vec1,然后輸出真或假。
舉個例子,函式的樣子:
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"
現在我想知道如何撰寫比較函式?
必須假設坐標也可以進入負值范圍,因此簡單的加法或減法可能會導致錯誤的結果。
uj5u.com熱心網友回復:
看下面的代碼:
#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()函式中,您可以只比較與 and 之間的距離vec1,然后vec3執行所需的操作。vec2vec3
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435876.html
