我试图得到两个向量的“叉积”。这两个向量代表两个平面。因此,我的向量为a1,b1,-1a2,b2,-1。 (我使用的平面方程为ax+by-z+d=0)。

这是我获得叉积的定义函数;

vector<double> cross_vector(vector<double> plane1,vector<double> plane2){
vector<double> cross_product;
double a1=plane1.at(0); double a2=plane2.at(0);
double b1=plane1.at(1); double b2=plane2.at(1);
int c1,c2=-1;
double cross_a=(b1*c2)-(b2*c1);
double cross_b=(a2*c1)-(a1*c2);
double cross_c=(a1*b2)-(a2*b1);
cross_product.push_back(cross_a);
cross_product.push_back(cross_;
cross_product.push_back(cross_c);

return cross_product;
}


对于不同的平面组合,我得到的结果如下:

 523554   -1.3713e+006  -0.00160687

 556340   -1.43908e+006  0.00027957

-568368    1.46225e+006 -0.00034963

 143455   -380017       -0.00027957


我无法理解1.46225e+006之类的值?我的功能有什么问题吗?
我知道,我得到的交叉矢量应精确指向水平方向。因此,您能否也告诉我如何检查交叉矢量是否为水平?
希望您的指教。

最佳答案

数学看起来正确。快速放置A = 和B = 在的背面给出了合理的结果。 e notatin表示e之后的幂乘以10的次数。因此,这些也可能是合理的,但是很难说,因为从您的示例中我无法说出您的输入值是什么。不过,我不会亲自返回该值-我宁愿以返回值作为参考或指针来防止不必要的复制。另外,正如上面提到的那样,您确实有一个初始化的var。

关于c++ - 叉积的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5060561/

10-09 20:40