计算几何 点乘 两点间距离 两向量夹角

点乘

点乘(也称为内积、标量积或数量积)是线性代数中两个向量之间的一种运算,其结果是一个标量(即一个单一的数,而不是向量)。对于两个n维向量a=(a 1 ,a 2 ,…,a n )和b=(b 1 ,b 2 ,…,b n ),它们的点乘定义为:
在这里插入图片描述

或者,使用更简洁的向量符号表示为:
在这里插入图片描述

点乘具有几个重要的性质,包括但不限于:

交换律:a⋅b=b⋅a
分配律:a⋅(b+c)=a⋅b+a⋅c
与标量的乘法:k(a⋅b)=(ka)⋅b=a⋅(kb),其中k是标量。
零向量:任何向量与零向量的点乘都是0,即a⋅0=0。
模与夹角:点乘还可以用来计算两个向量之间的夹角θ的余弦值,

在这里插入图片描述

,其中∣a∣和∣b∣分别是向量a和b的模(长度)。
点乘在物理和工程中有广泛的应用,例如,在力学中,力向量与位移向量的点乘给出了力所做的功;在电学中,电场强度向量与电荷移动向量的点乘给出了电场力对电荷所做的功。

c++代码
		double dot(const std::tuple<double, double>& O, const std::tuple<double, double>& A, const std::tuple<double, double>& B) 
		{
			double oa_x = std::get<0>(A) - std::get<0>(O);
			double oa_y = std::get<1>(A) - std::get<1>(O);
			double ob_x = std::get<0>(B) - std::get<0>(O);
			double ob_y = std::get<1>(B) - std::get<1>(O);
			return oa_x * ob_x + oa_y * ob_y;
		}

求两点之间距离

		double dis(const std::tuple<double, double>& p1, const std::tuple<double, double>& p2)
		{
			double ans = pow((std::get<0>(p1) - std::get<0>(p2)),2 )+ pow((std::get<1>(p1) - std::get<1>(p2)), 2);
			return sqrt(ans);
		}

两向量OA,OB的夹角

	double angle(const std::tuple<double, double>& O, const std::tuple<double, double>& A, const std::tuple<double, double>& B)
		{
			return acos(dot(O, A, B) / (dis(O, A) * dis(O, B)));
		}

参考

已知两直线 计算其交点

在这里插入图片描述

直线方程如何求取c

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值