MySlam各模块功能验证1--叉乘模的计算

希望我这篇论文能够顺利!!!加油加油加油!!!
定义一个结构体表示三维向量

struct VECTOR3D
{
	float x,y,z;
};

根据叉乘关系计算出叉乘的模值

float product(VECTOR3D vector1,VECTOR3D vector2)
{
	float x,y,z,value;
	x=vector1.y*vector2.z-vector1.z*vector2.y;
	y=vector1.z*vector2.x-vector1.x*vector2.y;
	z=vector1.x*vector2.y-vector1.y*vector2.x;
	value=sqrt(x*x+y*y+z*z);
	return value;
}

然后给几个特殊值进行验证,通过这两个公式计算理论值,然后比较它与程序运行的结果

a*b=|a|*|b|cos(theta);
|a×b|=|a|*|b|sin(theta)

特例1平行的两个向量,理论值应该为0,程序运行结果如下,满足

v1= (1,1,1)
v2= (2,2,2)
|v1×v2|= 0

特例2夹角为90度的两个向量,理论值应该为根号18,即4.2426,程序结果满足

v1= (1,-1,1)
v2= (1,2,1)
|v1×v2|= 4.24264

特例3取两个相关性不大的向量,理论值应该为43.7493,结果满足

v1= (1,-2,5)
v2= (5,7,-3)
|v1×v2|= 43.7493

至此,可以说明程序计算叉陈模值结果正确

猜你喜欢

转载自blog.csdn.net/qq_34122731/article/details/91884009
今日推荐