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

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.mfbz.cn/a/298353.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++每日一练(12):输出杨辉三角的前N行

题目描述 输出杨辉三角的前N行(N<10)。 输入 输入只有一行&#xff0c;包括1个整数N。(N<10) 输出 输出只有N行. 输入样例 5 输出样例 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 参考答案 #include<bits/stdc.h> using namespace std; int a[11][10]; int main(){int n;a[1]…

用友NC word.docx 任意文件读取漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC 系统word.docx等接口存在任意文件…

wsl相关

wsl安装 官网参考 打开powershell&#xff0c;运行&#xff1a;wsl --install 配置本地clash for windows proxy.sh #!/bin/sh hostip$(cat /etc/resolv.conf | grep nameserver | awk { print $2 }) wslip$(hostname -I | awk {print $1}) port7890PROXY_HTTP"http:/…

061:vue中通过map修改一维数组,增加一些变量

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

imgaug库指南(六):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…

Open CASCADE学习|基于visual studio 2022编译源码

目录 1、简介 2、下载 2.1下载visual studio 2022 community 2.2下载下载cmake工具 2.3下载源码 2.4下载第三方插件 3、安装 3.1安装visual studio 2022 community 3.2安装cmake 4、编译源码 5、测试 1、简介 Open CASCADE&#xff08;简称…

DrGraph原理示教 - OpenCV 4 功能 - 直方图

OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值&#xff08;从0到255&#xff0c;不总是&#xff09;的图在X轴上&#xff0c;在y轴上的图像对应的像素个数。通过观察图像的直方图&#xff0c;我们可以直观的了解图像的对比度、亮度、亮度分布等…

Qt——TCP UDP网络编程

目录 前言正文一、TCP二、UDP1、基本流程2、必备知识 三、代码层级1、UDP服务端 END、总结的知识与问题1、如何获取QByteArray中某一字节的数据&#xff0c;并将其转为十进制&#xff1f;2、如何以本年本月本日为基础&#xff0c;获取时间戳&#xff0c;而不以1970为基础&#…

MySQL之数据类型建表以及约束

SELECT(查询) 查询操作用于从数据库中检索数据 查询可以基于不同的条件&#xff0c;如字段值、范围、排序等 查询结果可以返回单个记录或多个记录 查询指定列 select 列名 from 表名 列名&#xff1a;代表从指定的列名中查找 , 如果是查找对应的多列&#xff0c;则用英文…

Linux部署Yearning并结合内网穿透工具实现公网访问本地web管理界面

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…

Ps 滤镜:高反差保留

Ps菜单&#xff1a;滤镜/其它/高反差保留 Filter/Others/High Pass 高反差保留 High Pass滤镜常用于锐化、保护纹理、提取线条等图像编辑工作流程中。它的工作原理是&#xff1a;只保留显示图像中的高频信息&#xff08;即图像中的细节和边缘区域&#xff09;&#xff0c;而图像…

MongoDB索引详解

概述 索引是一种用来快速查询数据的数据结构。BTree 就是一种常用的数据库索引数据结构&#xff0c;MongoDB 采用 BTree 做索引&#xff0c;索引创建 colletions 上。MongoDB 不使用索引的查询&#xff0c;先扫描所有的文档&#xff0c;再匹配符合条件的文档。使用索引的查询&…

【数据结构】二叉树的概念及堆

前言 我们已经学过了顺序表、链表、栈和队列这些属于线性结构的数据结构&#xff0c;那么下面我们就要学习我们第一个非线性结构&#xff0c;非线性结构又有哪些值得我们使用的呢&#xff1f;那么接下来我们就将谈谈树的概念了。 1.树的概念与结构 1.1树的概念 树是一种非线性…

Microsoft edge@常见问题@由组织管理@策略组@版本问题

文章目录 本地edge浏览器由组织管理功能受限检查例:侧边栏功能被禁用解出限制(删除相关注册表条目)解除限制检查refs 页面加载问题this page having a problem 禁止edge更新refs 版本回滚 本地edge浏览器由组织管理功能受限检查 浏览器输入edge://management/检查通过修改注册表…

【数据仓库与联机分析处理】多维数据模型

目录 一、数据立方体 二、数据模型 &#xff08;一&#xff09;星形模型 &#xff08;二&#xff09;雪花模式 &#xff08;三&#xff09;事实星座模式 三、多维数据模型中的OLAP操作 &#xff08;一&#xff09;下钻 &#xff08;二&#xff09;上卷 &#xff08;三…

宏电股份5G RedCap终端产品助力深圳极速先锋城市建设

12月26日&#xff0c;“全城全网&#xff0c;先锋物联”深圳移动5G-A RedCap助力深圳极速先锋城市创新发布会举行&#xff0c;宏电股份携一系列5G RedCap终端产品应邀参与创新发布会&#xff0c;来自全国5G生态圈的各界嘉宾、专家学者济济一堂&#xff0c;共探信息化数字化创新…

mysql之视图mysql连接案例索引

文章目录 一、视图1.1 含义1.2 操作1.2.1 创建视图1.2.2 视图的修改1.2.3 删除视图1.2.4 查看视图 二、连接案例01)查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数02)查询同时存在" 01 "课程和" 02 "课程的情况03&#xff0…

ios 裁剪拼装图片

//1.获取图片UIImage *image [UIImage imageNamed:"123.jpg"];//处理图片//2.获取图片的长度long length image.size.width/4;//3.图片顶点索引long indices[] {length * 2,length,//右 right0,length,//左 leftlength,0,//上 toplength,length * 2,//底 bottomle…

Rustdesk打开Win10 下客户端下面服务不会自启,显示服务未运行

环境: Rustdesk1.19 问题描述: Rustdesk打开Win10 下客户端下面服务不会自启,显示服务未运行 解决方案: 1.查看源代码 pub async fn start_all() {crate::hbbs_http::sync::start();let mut nat_tested = false;check_zombie()

SwinTransformer

patch embedding (b,3,224,224)->(b,N,96) N:patch数量 为每个stage中的每个Swin Transformer block设置drop_rate&#xff0c;根据设置[2,2,6,2]&#xff0c;每个Swin Transformer block的drop_path为0~0.1等间距采样的12个小数&#xff0c;参数0.1也可以更改。还有个drop参…
最新文章