c++ - 叉积的输出

标签 c++ math vector geometry 3d

我正在尝试获取两个 vector 的“叉积”。这两个 vector 代表两个平面。所以,我的 vector 是 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 这样的值?我的功能有什么问题吗? 我知道,我得到的交叉 vector 应该完全水平。那么,您能否也告诉我如何检查我的交叉 vector 是否水平? 希望你的建议。

最佳答案

int c1,c2=-1;

这使得 c1 未初始化。使用:

int c1=-1, c2=-1;

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

相关文章:

r - 满足条件时计算范围内的向量元素

android - 连接到数据库,多个平台的可能选项

math - 在 3D 空间中任意变换的等边三角形的法线

javascript - 是否有可能在 JavaScript 中实现无舍入问题的任意精度算术?

c - 如何用 C 语言实现 Foulke 算法

c++ - 如何从固定的候选列表中删除列表中的所有单词?

c++ - QTableWidget改变选择模式

c++ - QPair迭代的QHash

c++ - 什么可能导致 DefWindowProc 停止处理消息?

c++ - 如何删除 vector 中的重复字符串/数据?