gpt4 book ai didi

c++ - C++ 中的 vector 加法结果并不完全正确

转载 作者:搜寻专家 更新时间:2023-10-31 00:35:40 25 4
gpt4 key购买 nike

<分区>

我试图在我的 C++ 程序中将一个 vector 添加到另一个 vector ,但加法结果不准确。

这是 vector 类(使用 cmath 库):

class Vec{
float dir, mag;
public:
Vec(float dir, float mag){
this->dir = dir;
this->mag = mag;
}
float getX(){
return cos(dir)*mag;
}
Vec operator + (Vec v2){
float triangleX = cos(dir)*mag+cos(v2.dir)*v2.mag;
float triangleY = sin(dir)*mag+sin(v2.dir)*v2.mag;
return Vec(atan2(triangleY, triangleX), sqrt(pow(triangleX,2)+pow(triangleY,2)));
}
};

这是主要功能:

int main(){
Vec v1(0, 3); // 0º
Vec v2(3.14159265/2, 3); // 90º
Vec v3(3.14159265, 3); // 180º
std::cout.precision(15);
std::cout<<"v1: "<<v1.getX()<<std::endl;
std::cout<<"v1+v2: "<<(v1+v2).getX()<<std::endl;
std::cout<<"v1+v3: "<<(v1+v3).getX()<<std::endl;
return 0;
}

这是输出:

v1: 3
v1+v2: 2.99999976158142
v1+v3: 1.98007097372034e-014

如您所见,第一个输出 v1 没问题。

第二个输出是 0 度和 90 度(一个不应该影响 x 分量的角度)的加法,他的 x 分量接近 3,但不完全是 3。

第三个输出是两个相同大小的相反 vector 相加,它应该是 0,但它不是这里显示的。

是什么导致了这些奇怪的添加?我该如何使它们准确无误?

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