【发布时间】:2011-06-30 22:34:29
【问题描述】:
我正在尝试获得两个向量的“叉积”。这两个向量代表两个平面。所以,我的向量是a1,b1,-1 和a2,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 之类的值?我的功能有什么问题吗?
我知道,我得到的交叉向量应该完全水平定向。那么,您能否告诉我如何检查我的交叉向量是否是水平的?
希望您的建议。
【问题讨论】:
标签: c++ math vector geometry 3d