【学习笔记】计算几何

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

基础知识

向量

概念:有大小和方向的量
基础算法:
(1)加:(A.x+B.x,A.y+B.y)(A.x+B.x,A.y+B.y)(A.x + B.x,A.y + B.y)
(2)减:(A.x−B.x,A.y−B.y)(A.x−B.x,A.y−B.y)(A.x - B.x,A.y - B.y)
(3)乘常数:(A.x∗k,A.y∗k)(A.x∗k,A.y∗k)(A.x * k,A.y * k)
(4)点积:A⋅B=|A||B|cosθ=A.x∗B.x+A.y∗B.yA·B=|A||B|cos⁡θ=A.x∗B.x+A.y∗B.yA · B = |A||B|\cos\theta = A.x * B.x + A.yB.y
(5)叉积:A×B=|A||B|sinθ=A.x∗B.y−A.y∗B.xA×B=|A||B|sin⁡θ=A.x∗B.y−A.y∗B.xA \times B = |A||B|\sin\theta = A.x * B.y - A.y
B.x

基础算法

(1)旋转:将 (x,y)(x,y)(x,y) 逆时针旋转 θθ\theta 就是 (x∗cosθ−y∗sinθ,x∗sinθ+y∗cosθ)(x∗cos⁡θ−y∗sin⁡θ,x∗sin⁡θ+y∗cos⁡θ)(x * \cos\theta - y * \sin\theta,x * \sin\theta + y * \cos\theta)
(2)把向量 AAA 转到与向量 BBB 同向:B∗|A||B|B∗|A||B|B * \dfrac{|A|}{|B|}
(3)求多边形面积:12|∑n−1i=1Pi×P(i+1)%n|12|∑i=1n−1Pi×P(i+1)%n|\dfrac{1}{2}|\sum_{i=1}^{n-1}P_i \times P_{(i+1)%n}|
(4)以 AAA 为原点 BBB 为单位点求 PPP 的新坐标:(AB→⋅AP→,AB→×AP→)∗1|AB|2(AB→·AP→,AB→×AP→)∗1|AB|2(\vec{AB} · \vec{AP},\vec{AB} \times \vec{AP}) * \dfrac{1}{|AB|^2}
(5)PPP 与直线 ABABAB 的位置关系:根据 AB→×AP→AB→×AP→\vec{AB} \times \vec{AP}
(6)点 PPP 在直线 ABABAB 上的投影:A+AB→∗(AB→⋅AP→)|AB|2A+AB→∗(AB→·AP→)|AB|2A + \dfrac{\vec{AB} * (\vec{AB} · \vec{AP})}{|AB|^2}
(7)点与线段的位置关系:判断与线段所在直线的位置关系、点积判断在哪里
(8)AB//CD:AB→×CD→=0AB//⁡CD:AB→×CD→=0AB \mathop{//} CD:\vec{AB} \times \vec{CD} = 0
(9)直线 ABABAB 和直线 CDCDCD 求交点:A+AB→∗CD→×CA→AB→×CD→A+AB→∗CD→×CA→AB→×CD→A + \vec{AB} * \dfrac{\vec{CD}\times\vec{CA}}{\vec{AB} \times \vec{CD}}
(10)线段与直线求交点:线段两端点在直线两侧、直线求交点

凸包

Graham 扫描法

求凸包:
(1)找到所有的点中最左下角的点,并加入栈中
(2)将所有点按极角排序逆时针
(3)每次找到一个点,判断该点是否在最后这条边的右边,若是则弹出栈顶,直到不能弹出就加入栈里
求下凸壳:
按横坐标从小到大排序,然后执行上文 (3)
求上凸壳:
按横坐标从大到小排序,然后执行上文(3)

旋转卡壳

本质:固定一个点,所求与另一个点的位置呈单峰函数且峰值关于固定点单调的算法

例题:

题目描述:
求解凸多边形的直径。直径的定义为凸多边形上两点间距离的最大值。
解法:
(1)任意选择一个点为固定点
(2)以固定点在逆时针顺序下的下一个点为第二个点
(3)因为这两点间的距离与第二个点的位置呈单峰函数,且峰值关于固定点单调,所以就按逆时针方向移动第二个点
(4)移动到最大距离处,计算贡献,并按逆时针方向移动固定点,不移动第二个点
(5)重复(3)直到移动结束
例如下图所示:

先随机找到固定点 AAA,与对应的第二个点 BBB

移动 BBB ,使得 AAA 与 BBB 两点间距离最大

保持 BBB 不动,移动 AAA
然后再按照上文的方法一直循环执行

点与圆


判断点是否在圆上: d≤rd≤rd \le r
d=|PC|,r=rd=|PC|,r=rd = |PC|,r = r ∠DAC=arccos(rd),∠DAC=(arcsinrd)∠DAC=arccos⁡(rd),∠DAC=(arcsin⁡rd)\angle DAC = \arccos(\dfrac{r}{d}),\angle DAC = (\arcsin\dfrac{r}{d})

直线与圆


根据叉积得到 ddd
|MA|=|MB|=r2−d2−−−−−−√|MA|=|MB|=r2−d2|MA| = |MB| = \sqrt{r^2 - d^2},∠OBM=arccosdr∠OBM=arccos⁡dr\angle OBM = \arccos \dfrac{d}{r}

圆与圆

是否相交


根据 ddd 与 r1+r2r1+r2r_1 + r_2

不交圆外公切线


k=r2−r1,∠CAB=arccosr2−r1d,∠DBA=arccosr1−r2dk=r2−r1,∠CAB=arccos⁡r2−r1d,∠DBA=arccos⁡r1−r2dk = r_2 - r_1 , \angle CAB = \arccos \dfrac{r2-r1}{d},\angle DBA = \arccos \dfrac{r_1-r_2}{d}

不交圆内公切线


∠BAG=∠ABF=arcsinr1+r2d∠BAG=∠ABF=arcsin⁡r1+r2d\angle BAG = \angle ABF = \arcsin \dfrac{r_1+r_2}{d}

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

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

相关文章

支持自动水平拆分的高性能分布式数据库TDSQL

随着互联网应用的广泛普及,海量数据的存储和访问成为系统设计的瓶颈问题。对于大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。给系统的稳定性和扩展性造成了极大的问题。通过数据的切分来提高系统整体性能,扩充系统整体容…

一些有趣的B+树优化实验

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

Tarjan的强联通分量

求强联通分量有很多种。 《C信息学奥赛一本通》 中讲过一个dfs求强联通分量的算法Kosdaraju,为了骗字数我就待会简单的说说。然而我们这篇文章的主体是Tarjan,所以我肯定说完之后再赞扬一下Tarjan大法好是不是 首先我们讲一下强联通分量 强联通分量指的…

XXE漏洞

简介 XXE (XML External Entity Injection) 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载。 简单的理解,一个实体就是一个变量,可以在文档中的其他位置引用该变量。 实体主要分为四种: 内置实体 (Built-in entities…

Linq之Expression高级篇(常用表达式类型)

目录 写在前面 系列文章 变量表达式 常量表达式 条件表达式 赋值表达式 二元运算符表达式 一元运算符表达式 循环表达式 块表达式 总结 写在前面 首先回顾一下上篇文章的内容,上篇文章介绍了表达式树的解析和编译。如果忘记了,可以通过下面系列文章提供的…

NetCore框架WTM的分表分库实现

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

WordPress WP Photo Album Plus插件‘wppa-tag’跨站脚本漏洞

漏洞名称:WordPress WP Photo Album Plus插件‘wppa-tag’跨站脚本漏洞CNNVD编号:CNNVD-201301-458发布时间:2013-01-24更新时间:2013-01-24危害等级: 漏洞类型:跨站脚本威胁类型:远程CVE编号&…

SpringCloudAlibaba分布式流量控制组件Sentinel实战与源码分析(上)

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

【单元测试框架unittest】

转载于:https://www.cnblogs.com/ppppying/p/6899750.html

C++ 炼气期之基本结构语法中的底层逻辑

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

优惠券的工厂与策略模式实现方案

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

WP8.1学习系列(第九章)——透视Pivot开发指南

Windows Phone 8 的 Pivot 控件 2014/6/18 适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1 Windows Phone Pivot 应用提供了一种快速管理视图或页面的方法。该方法可以用于筛选大型数据集、查看多个数据集或切换应用视图。例如&a…

ESP8266 系统环境搭建

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

无线网络配置

转载于:https://www.cnblogs.com/lingxzg/archive/2013/02/09/2909606.html

Java编程之反射中的注解详解

“注解”这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题。我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些“注解”的相关内容,比如在Spring中是如何进行“注解”组合的。…

SCCM 2012 R2实战系列之十三:辅助站点部署

由于最近几个月一直处于AD升级项目中,很久没有更新SCCM的技术文档了。SCCM 2012中的辅助站点部署方法还是比较特别的,需要注意的地方也非常多,今天跟大家分享辅助站点的具体部署和配置方法。1. 前提条件加入域环境 安装IIS组件安装BITS和远程…

DevOps落地实践点滴和踩坑记录-(1)

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

2014年度优秀员工代表发言稿

2019独角兽企业重金招聘Python工程师标准>>> 尊敬的各位领导和亲爱的同事们,大家好! 作为优秀员工代表在这里发言,我很感谢刘总、周总、李总、漆总以及公司各层领导的信任和支持!我感到十分荣幸,同时也感到…

无需另配定时器在STM32 HAL下实现微秒级延时(兼容FreeRTOS)

目录前言一、代码部分二、使用和验证1.引入头文件2.初始化3.使用和验证三、可移植性总结前言 接触HAL库差不多两年了,一直苦于HAL库没有自带微秒级的延时,网上的前辈们给出的解决方案要么是改写HAL_Delay的延时时间,要么就是额外占用一个定时…

×××S 2012 交互式报表 -- 同步交互式排序

S 2012 交互式报表 -- 同步交互式排序步骤1:首先,在刚才的“交互式排序”示例报表中再拖拉一个“Chart”,设置为长条图,从报表数据窗口中将销售金额、销售数量拖至“Values”,将产品大类拖放至“Category Groups”区域…