信息学奥赛之《向量几何一文通》

Geometry

  1. π \pi π arccos ⁡ ( − 1 ) \arccos(-1) arccos(1)
  2. 余弦定理:对于任意三角形(三边长为 a , b , c a,b,c a,b,c),则有 c 2 = a 2 + b 2 − 2 a b cos ⁡ θ c^2=a^2+b^2-2ab\cos_{\theta} c2=a2+b22abcosθ,其中 θ \theta θ a , b a,b a,b 边的夹角。
  3. 正弦定理: a sin ⁡ α = b sin ⁡ β = c sin ⁡ θ \frac{a}{\sin_{\alpha}}=\frac{b}{\sin_{\beta}}=\frac{c}{\sin_{\theta}} sinαa=sinβb=sinθc
  1. 向量的加法: A ⃗ + B ⃗ = C ⃗ \vec A+\vec B = \vec C A +B =C
  1. 向量的减法: A ⃗ − B ⃗ = C ⃗ \vec A-\vec B=\vec C A B =C (按照加法的定义并通过平移旋转即可得到)

  2. 内积(点积): A ⃗ ⋅ B ⃗ = ∣ A ⃗ ∣ ∣ B ⃗ ∣ cos ⁡ θ \vec A\cdot \vec B=|\vec A||\vec B|\cos_{\theta} A B =A ∣∣B cosθ

    几何意义:向量 A ⃗ \vec A A 在向量 B ⃗ \vec B B 上的投影与 B ⃗ \vec B B 的长度的乘积

    Code:(证明略)

    double dot (Point A, Point B) { return A.x * B.x + A.y * B.y }
    
  3. 外积(叉积): A ⃗ × B ⃗ = ∣ A ⃗ ∣ ∣ B ⃗ ∣ sin ⁡ θ \vec A\times \vec B=|\vec A||\vec B|\sin_{\theta} A ×B =A ∣∣B sinθ

    几何意义:向量 A ⃗ \vec A A 与向量 B ⃗ \vec B B 组成的平行四边形的面积( B ⃗ \vec B B A ⃗ \vec A A 的逆时针方向为正)

    Code:(证明略)

    double cross(Point A, Point B) { return A.x * B.y - B.x * A.y }
    
  4. 向量取模(向量的长度)

    向量的长度为 d o t a ⃗ , a ⃗ \sqrt{\mathrm{dot_{\vec a,\vec a}}} dota ,a ,即 x 2 + y 2 \sqrt{x^2+y^2} x2+y2

    注意:前面包括后面的所有向量都默认起点为平面直角坐标系原点

    Code:

    double Length(Point A) { return sqrt(dot(a, a)); }
    
  5. 计算向量夹角

    已知向量的点积为 ∣ A ⃗ ∣ ∣ B ⃗ ∣ cos ⁡ θ |\vec A||\vec B|\cos_{\theta} A ∣∣B cosθ,现在要求 θ \theta θ,就是 KaTeX parse error: Undefined control sequence: \acos at position 1: \̲a̲c̲o̲s̲_\frac{\vec A \…

    Code:

    double Angle(Point A, Point B) { return acos(dot(A, B)) /  Length(A) / Length(B)}
    
  6. 向量 A ⃗ \vec A A 顺时针旋转 θ \theta θ 角度

    ( x , y ) [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] (x,y) \begin{bmatrix} \cos_{\theta} &-\sin_{\theta}\\ \sin_{\theta} &\cos_{\theta} \end{bmatrix} (x,y)[cosθsinθsinθcosθ]

    其中 ( x , y ) (x,y) (x,y) 表示向量 A ⃗ \vec A A ,证明略。

    Code:

    Point Rotate(Point A, int Theta)
    {return Point(A.x * cos(Theta) + A.y * sin(Theta), -A.x * sin(Theta) + A.y * cos(Theta))
    }
    
  7. 直线点向式表示方式: P + t V ⃗ P+t\vec V P+tV

  8. 判断点在直线上: A ⃗ × B ⃗ = 0 \vec A \times \vec B=0 A ×B =0 B ⃗ \vec B B 是表示该直线的向量, A ⃗ \vec A A 是该点与 B ⃗ \vec B B 的起点所组成的向量

  9. 判断 2 2 2 条直线的位置关系,交点的位置(如果有)

    cross(v, w) = 0,则两直线平行或重合。

    两条直线: P + t V ⃗ P+t\vec V P+tV Q + t W ⃗ Q+t\vec W Q+tW

    V ⃗ ′ \vec V ' V V ⃗ \vec V V 的平移,红线为两个三角形的高,此时必有 2 2 2 个三角形相似

    image-20240103204326979

    即, 2 2 2 个紫色三角形是相似的,因为 V ⃗ ′ \vec V' V V ⃗ \vec V V 的平移,所以内错角相等,即 KaTeX parse error: Undefined control sequence: \ang at position 1: \̲a̲n̲g̲ ̲FMJ=\ang HLM,且都是直角三角形,所以相似。那么, F J M H = F K L H \frac{FJ}{MH}=\frac{FK}{LH} MHFJ=LHFK,因为 L H = ∣ V ⃗ ∣ LH=|\vec V| LH=V ,所以 F J M H = F K ∣ V ⃗ ∣ \frac{FJ}{MH}=\frac{FK}{|\vec V|} MHFJ=V FK,而 K K K 的坐标为 P + V ⃗ F K ∣ V ⃗ ∣ P+\vec V \frac{FK}{|\vec V|} P+V V FK。所以只需要求出 F J M H \frac{FJ}{MH} MHFJ 即可,而 F J M H \frac{FJ}{MH} MHFJ 恰好等于 W ⃗ × u ⃗ V ⃗ × W ⃗ \frac{\vec W\times \vec u}{\vec V\times \vec W} V ×W W ×u

    故, K K K 点的坐标为 P + V ⃗ W ⃗ × u ⃗ V ⃗ × W ⃗ P+\vec V \frac{\vec W\times \vec u}{\vec V\times \vec W} P+V V ×W W ×u

    Point Line_Intersection(Point P, Vector V, Point Q, Vector W)
    {Vector u = P - Q;return P + V * cross(W, u) / cross(V, W);
    }
    
  10. 点到直线的距离

    设向量 V ⃗ \vec V V B − A B-A BA W ⃗ \vec W W P − A P-A PA

    则有, V ⃗ × W ⃗ L e n g t h V ⃗ \frac{\vec V\times \vec W}{\mathrm{Length_{\vec V}}} LengthV V ×W 为点 P P P A B AB AB 的距离。

  11. 点到线段的距离

    14 14 14 略有不同,边界情况:如果线段为 1 1 1 个点,则就是 P P P 与线段端点所组成的向量的模长。

    如果 V 1 ⃗ ⋅ V 2 ⃗ < 0 \vec{V_1}\cdot \vec{V_2}<0 V1 V2 <0,则为 ∣ V 2 ⃗ ∣ |\vec {V_2}| V2 。解释: V ⃗ 1 ⋅ V ⃗ 2 \vec V_1 \cdot \vec V_2 V 1V 2 的符号正负取决于 cos ⁡ θ \cos_\theta cosθ,当 θ > 90 ° \theta>90\degree θ>90° 时, cos ⁡ θ < 0 \cos_\theta<0 cosθ<0,恰好是到线段左端点的距离为点 P P P 到线段的距离。

    如果 V ⃗ 3 ⋅ V ⃗ 1 > 0 \vec V_3\cdot \vec V_1>0 V 3V 1>0,则为 ∣ V ⃗ 3 ∣ |\vec V_3| V 3,证明类似。

    反之,则为点到直线的距离。

  12. 点在直线上的投影

    用点积来求, A + V ⃗ ( d o t V ⃗ , p − a ⃗ d o t V ⃗ , V ⃗ ) A+\vec V (\mathrm{\frac{dot_{\vec V,\vec {p-a}}}{dot_{\vec V,\vec V}}}) A+V (dotV ,V dotV ,pa )

    与上面类似

  13. P P P 是否在线段 A B AB AB

    首先, c r o s s P − A , P − B = 0 \mathrm{cross_{P-A,P-B}}=0 crossPA,PB=0,这样保证了 P , A , B P,A,B P,A,B 三点共线。

    其次, d o t P − A , P − B ≤ 0 \mathrm{dot_{P-A,P-B}}\le0 dotPA,PB0,即 cos ⁡ θ ≤ 0 \cos_{\theta}\le0 cosθ0,当 P P P 在线段上, 2 2 2 个向量相向, θ \theta θ 180 ° 180\degree 180° cos ⁡ \cos cos 为负。

  14. 判断 2 2 2线段 是否相交

    即判断 A 2 , B 2 A_2,B_2 A2,B2 是否在 A 1 B 1 A_1B_1 A1B1 2 2 2 侧, A 1 , B 1 A_1,B_1 A1,B1 A 2 , B 2 A_2,B_2 A2,B2 2 2 2 侧。

    用叉积做即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326971.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring-boot-websocket的聊天应用开发总结

目录 1.概述 1.1 Websocket 1.2 STOMP 1.3 源码 2.Springboot集成WS 2.1 添加依赖 2.2 ws配置 2.2.1 WebSocketMessageBrokerConfigurer 2.2.2 ChatController 2.2.3 ChatInRoomController 2.2.4 ChatToUserController 2.3 前端聊天配置 2.3.1 index.html和main.j…

OpenSource - File Preview 文件预览组件

文章目录 file-preview-spring-boot-starterkkFileView file-preview-spring-boot-starter https://github.com/wb04307201/file-preview-spring-boot-starter https://gitee.com/wb04307201/file-preview-spring-boot-starter 一个文档在线预览的中间件&#xff0c;可通过简…

软件测试|Docker Kill/Pause/Unpause命令详细使用指南

简介 Docker是一种流行的容器化平台&#xff0c;提供了各种命令和功能来管理和操作容器。本文将详细介绍Docker中的三个重要命令&#xff1a;kill、pause和unpause。我们将深入了解它们的作用、用法和示例&#xff0c;帮助您更好地理解和使用这些命令。 什么是Docker Kill/Pa…

Linux操作系统基础(12):Linux的Shell解释器

1. Shell的介绍 在Linux中&#xff0c;Shell 是一种命令行解释器&#xff0c;它是用户与操作系统内核之间的接口&#xff0c;它负责解释用户输入的命令&#xff0c;并将其转换成系统调用或其他操作系统能够执行的指令。 Shell 提供了一种交互式的方式来与操作系统进行通信&am…

线性代数笔记6 1.6

学习视频&#xff1a; 2.2 矩阵运算&#xff08;二&#xff09;_哔哩哔哩_bilibili 包括内容&#xff1a; p29 4.4 方程组解的结构&#xff08;一&#xff09; p30 4.4 方程组解的结构&#xff08;二&#xff09; p32 5.1 矩阵的特征值与特征向量&#xff08;一&#xff09;…

UI5与后端的文件交互(二)

文章目录 前言一、开发Action1. 创建Structure2. BEDF添加Action3. class中实现Action 二、修改UI5 项目1. 添加一个按钮2. 定义事件函数 三、测试及解析1. 测试2. js中提取到的excel流数据3. 后端解析 前言 这系列文章详细记录在Fiori应用中如何在前端和后端之间使用文件进行…

玩转爱斯维尔 LaTeX 模板:定制技巧一网打尽!

简介 关于 LaTeX 小编写过一些推文&#xff1a; 适合撰写课程论文的 LaTeX 模板; LaTeX 常用数学符号汇总; 免费升级 overleaf 高级账户&#xff01;; 如何下载使用期刊的 LaTeX 模板 本文基于常用的 Elsevier 期刊模板&#xff0c;小编分享个人常用的使用技巧&#xff0…

Note: A Woman Doctor Lina

A woman doctor Lina 女医生丽娜 Born in a pigs’ nest, Lina led a poor life in her childhood. 出生在猪圈里&#xff0c;丽娜过着贫穷的童年生活。 led nest She was looked down upon by the children of her generation. 她被她同时代的孩子瞧不起。 generation look…

【Kubernetes】认证授权RBAC (一)

认证授权RBAC 一、k8s安全管理&#xff1a;认证、授权、准入控制概述1.1、简介【1】认证基本介绍【2】授权基本介绍【3】准入控制基本介绍 1.2、认证【1】客户端认证【2】Bearertoken【3】Serviceaccount【4】拓展&#xff1a;kubeconfig文件 1.3、授权【1】什么是RBAC&#xf…

Linux的基本指令(5)

目录 bc指令 uname指令 压缩解压相关的指令 zip指令 unzip指令 tar打包压缩指令 tar解压解包指令 ​编辑​编辑sz&rz 热键 关机命令 安装&#xff1a;yum install -y 指令 bc指令 bc命令可以很方便的进行浮点运算 Linux中的计算器 uname指令 语法&#xff1a;un…

Nginx 访问控制

目录 1. 传输层禁止访问 2. 应用层访问控制 访问控制有两个方式&#xff0c;一种是在OSI模型的四层传输层&#xff0c;一种是在第七层应用层。 主机防火墙就是在四层传输控制&#xff0c;nginx就是在七层应用控制。 1. 传输层禁止访问 在进行访问控制前&#xff0c;先开启防…

外包干了1个月,技术退步一大半。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…