gpt4 book ai didi

C++ 计算两个 3D vector 之间的角度(0 到 360)

转载 作者:行者123 更新时间:2023-11-30 05:13:49 25 4
gpt4 key购买 nike

假设我有 2 个 3D vector

Vec3 v1, v2;

v1.x = 203;
v1.y = 355;
v1.z = 922;

v2.x = 6;
v2.y = 13;
v2.z = 198;

如何计算 v1v2 之间的角度? IE。最终答案将在 0360

之间

我试过了

Vec3 angle = v1 - v2;

还有一些其他的事情,但我似乎无法让它正常工作。

最佳答案

您需要使用 dot product为此,一旦你有了它,你就可以关注 standard method .示例:

#include <cmath>

float dot(Vec3 a, Vec3 b) //calculates dot product of a and b
{
return a.x * b.x + a.y * b.y + a.z * b.z;
}

float mag(Vec3 a) //calculates magnitude of a
{
return std::sqrt(a.x * a.x + a.y * a.y + a.z * a.z);
}

int main()
{
Vec3 v1, v2;

v1.x = 203;
v1.y = 355;
v1.z = 922;

v2.x = 6;
v2.y = 13;
v2.z = 198;

float angle = std::acos(dot(v1,v2)/(mag(v1)*mag(v2)));
}

关于C++ 计算两个 3D vector 之间的角度(0 到 360),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43749543/

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