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

点乘

点乘(也称为内积、标量积或数量积)是线性代数中两个向量之间的一种运算,其结果是一个标量(即一个单一的数,而不是向量)。对于两个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

在这里插入图片描述

posted @   一只小小汤圆  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示