对,要先自己思考再问,不要做伸手党!:D
向量叉乘的公式和推导:
求一个向量的单位矢量(unit vector):
有了这两个知识我们就可以用编程实现了。
觉得有用的话请点个采纳可以嘛?帮帮孩子吧!QAQ
使用结构体实现代码:
#include <iostream>
#include <cmath>
struct Vec3D
{
double x, y, z;
// get the cross product of two vectors
friend inline Vec3D operator*(const Vec3D& lhs, const Vec3D& rhs)
{
double new_x = lhs.y*rhs.z - rhs.y*lhs.z;
double new_y = lhs.z*rhs.x - lhs.x*rhs.z;
double new_z = lhs.x*rhs.y - lhs.y*rhs.x;
return {new_x, new_y, new_z};
}
};
Vec3D getUnitVector(const Vec3D& a, const Vec3D& b)
{
Vec3D cross = a * b;
double mod = std::sqrt(cross.x*cross.x + cross.y*cross.y + cross.z*cross.z);
mod = 1 / mod;
return {cross.x*mod, cross.y*mod, cross.z*mod};
}
int main()
{
Vec3D a = {12, 14, 15};
Vec3D b = {3, 6, -3};
Vec3D res = getUnitVector(a, b);
std::cout << res.x << ' ' << res.y << ' ' << res.z << '\n';
}
同样也可以用数组实现,但由于过于重复和啰嗦,在这里我就跳过了。
不过有了思路实现是很简单的事啦!
有问题评论区随时问我呀!