向量入门
向量的定义
只有大小而没有方向的量称作 标量 。
既有大小又有方向的量称作 向量(Vector) 。
别和 std::vector<>
搞混了,此 vector 非彼 vector。
向量的表示
二维向量可在平面直角坐标系上表示,此时它的长度称为 模长 。
由于向量没有位置,我们可以直接将它的起点平移到原点,用终点此时的坐标表示它。
struct vec { int x, y; };
向量的运算
-
加法
x 坐标相加, y 坐标相加。
几何意义:
$\overrightarrow{AB}$ 与 $\overrightarrow{AC}$ 的和 $\overrightarrow{AP}$ 是以 $\overrightarrow{AB}$ 与 $\overrightarrow{AC}$ 为相邻两边的平行四边形的对角线。
-
减法
x 坐标相减, y 坐标相减。
几何意义:
$\overrightarrow{AB}$ 与 $\overrightarrow{AC}$ 的差是 $\overrightarrow{CB}$ 。
-
乘法/除法
等比例放缩即可。
-
点积
向量 $A, B$ 的点积 $A \cdot B = |A||B| \cos \theta$,其中 $\theta$ 为两向量夹角。
易得它的几何意义是 $A$ 在 $B$ 上的投影长度乘以 $B$ 的模长。
在编程中有更简单的实现方式。
x 坐标相乘, y 坐标相乘。
求两个向量的夹角可以直接算点积,再调用库函数
acos
给把角度算出来。 -
叉积
向量 $A, B$ 的叉积 $A \times B = |A||B| \sin \theta$,其中 $\theta$ 为两向量夹角。
几何意义: $A, B$ 形成的平行四边形面积,如果 $B$ 在 $A$ 顺时针方向该值为正,否则取负。
编程中的实现方式:
cross(A, B) = A.x * B.y - A.y * B.x
推柿子太麻烦了,就先咕了。
向量在计算几何中的应用
-
判点与直线的位置关系
在直线上取两点,分别与这个点构成向量,算叉积,看正负,如果为负这个点就在直线左侧,否则在右侧,
-
计算点到直线的距离
一样的,线上取两点与这一点构成向量,算叉积,取绝对值得到平行四边形面积,除以底边长即线上两点的距离得到高即距离。
推广到线段,只需要算算这个点的投影是否在线段上就行了,如果不行就取到两短点距离的更小值。
-
咕咕咕
本文作者:aaaaaaqqqqqq
本文链接:https://www.cnblogs.com/aaaaaaqqqqqq/p/17976953
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步