二维计算几何算法 学习笔记

ACM计算几何篇 1 前言 1.1 计算几何算法 1.2 计算几何题目特点及要领 1.3 预备知识 2 凸包 2.1 定义 2.1.1 凸多边形 2.1.2 凸包 2.2 颜料配色问题 2.2.1 问题描述 2.2.2 问题简化 2.2.3 问题抽象 2.2.4 数学抽象 2.2.4.1 Convex Combination And Affine Combination 2.2.4.2 区别与联系 ... 阅读详情

基础

向量

即 a ⃗ = ( x 1 , y 1 ) \vec a=(x_1,y_1) a =(x1​,y1​), b ⃗ = ( x 2 , y 2 ) \vec b=(x_2,y_2) b =(x2​,y2​)
两个向量间的常见的运算有点积和叉积(内积和外积)。
点积: a ⃗ ⋅ b ⃗ = x 1 x 2 + y 1 y 2 \vec a·\vec b=x_1x_2+y_1y_2 a ⋅b =x1​x2​+y1​y2​
叉积: a ⃗ × b ⃗ = x 1 y 2 − y 1 x 2 \vec a×\vec b=x_1y_2-y_1x_2 a ×b =x1​y2​−y1​x2​

点积可以用于判断两向量的夹角是锐角还是钝角
叉积比较有用,其值能表示两个向量组成的平行四边形的面积(并且是有向的,遵守右手法则)

eg.
P2785 这里就是应用了三角形叉积能表示面积这一点,将多边形以平面上某点分割成很多三角形,从而计算出任意多边形的面积
P4894 这是用到了三维叉积,所得结果垂直于二维两向量的特点,可以快速求出法向量。

直线

记录直线需要两个参数,直线上的一个点和直线的方向向量。

多边形

按顺序记录其所有顶点即可保存一个多边形
凸多边形是研究的比较多的一个领域。

多边形和点的关系比较重要,即多边形是否包含点
一般有两种办法:
①从这个点引出一条射线,如果穿越多边形边界奇数次则在内,穿越偶数次在外
②这个点与相邻顶点连线构成的有向角,如果其加和为 2 π 2\pi 2π 则在多边形内,加和0在外。但这个速度较慢(用反三角函数多次),一般采用从点引出一条向右的水平线,判断多边形有向边穿越这个线多少次

eg.
POJ2318 判断点是否在某个多边形内,特化了方法②,用二分法缩减多边形
P1355 判断点是否在三角形内,边上,顶点上。做法是类似的


进阶

凸包

用n个点构造最小凸多边形的O(n)算法,运用了外积表示了当前边的前进方向。
本身并不难,但是经常一些和它相距甚远的结构可以通过建模转化为它,这是最难的

小知识点:旋转卡壳,即凸包直径,凸包上的两个最远顶点

eg.
P2742 构建凸包模板题
P2116通过建模才能想到要把城堡这个任意多边形转化成凸多边形

P1452先构建凸包,再找直径的模板题

最小圆覆盖

给出n个点,构造最小的能覆盖它们的圆
看似很像旋转卡壳,但是对于正奇数边形很容易发现都不符合最小圆覆盖。

这里用的是随即增量(即先打乱再数学归纳)

eg.
P1742模板题

半平面交

和数学里的动态规划一致,但是代码上实现比较复杂。

eg.
P4196 构建半平面交后,求多边形面积

计算几何算法概览 计算几何算法概览原创:怒火之袍 2003年5月17日 计算几何常用算法概览本站原创:怒火之袍一、引言    计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域, 阅读详情

相关推荐

计算几何常用算法概览

相关内容: 判段点是否在多边形内实现树结构的类CTree一、引言计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。 作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸 多领域有着十分重要的应用

老李 1万+

求解二维和三维法向量的方法

Here's an example using an analytic curve of y = x^2 x = 0:0.1:1; y = x.*x; dy = gradient(y); dx = gradient(x); quiver(x,y,-dy,dx) hold on; plot( x, y) which gives:

menjiawan的专栏 7781

计算几何系列 —— 美妙的旋转卡壳算法~上

上述就是我们利用旋转卡壳算法求出二维凸包的直径~,那么关于旋转卡壳算法如此巧妙,怎会只有这一种用途~ ,旋转卡壳算法其实还可以用于解决大量的多边形的问题,而非仅仅局限于原来了解的基于凸包的一些具体问题,十分具有研究价值

Zz_0913的博客 3576

多元微积分_二维散度定理

曲线r是关于t的函数,有x和y两个分量 我们知道曲线r的切线,是曲线上接近的两点r1和r2的值的差δr\delta rδr 当引入极限的概念的时候,让r1和r2无限接近,几乎成一点的时候,可以近似的看成δr\delta rδr只与曲 线交于一点,这就是我们切线的概念 而dr也可以表示成i和j两个分量的微小增量dxi和dyj的和(向量加法原理) 有了切向量的算术表示,我们就可以求法向量 我们已经知道法向量垂直于切向量,但是如何确定二维法向量的方向 如图, (dx)i+(dy)j=dr dx和dy是标量,

weixin_41479678的博客 3116

成为计算几何master之路——记算法竞赛中常用的计几算法及思想

本文介绍了算法竞赛中常用的计算几何算法及思想,为了力求简单粗暴,部分算法和常见算法在实现和常数上可能有出入,但是在复杂度和正确性上均有保证。

qq_42778110的博客 2833

计算几何算法库

1、Geos Geos的全称就是Geometry Engine Open Source,参考网站就是:http://geos.refractions.net,从名称就可以看出,Geos就是判断几何体的过程。 Geos是用C++语言写的处理计算几何的开源库。 2、CGAL CGAL的全称就是Computational Geometry Algorithms Library,参考网站就是:http://www.cgal.org,从名称就可以看出,CGAL就是计算几何的开源库。 CGAL是用C++语言.

多看多听多总结 3428

二维计算几何基础

图形的记录 点 在平面直角坐标系下,点用坐标表示,比如点 (5,2) ,点 (-1,0) 什么的。 我们记录其横纵坐标值即可。用 pair 或开结构体记录均可。 在极坐标系下,用极坐标表示即可。记录其极径与极角。 向量 由于向量的坐标表示与点相同,所以只需要像点一样存向量即可(当然点不是向量)。 在极坐标系下,与点同理。 线 直线与射线 一般在解数学题时,我们用解析式表示一条直线。有一般式 Ax+By+C=0Ax+By+C = 0Ax+By+C=0,还有斜截式 y=kx+by = kx+by=kx+b ,

AAmiu的博客 1801

【计算几何全家桶】计算几何二维板子套路详解

title : 计算几何(二维) tags : ACM,数学,计算几何 date : 2021-10-23 author : Linno 向量 点乘与叉乘 叉乘一般用于求面积或者判断两点的相对位置:(x1,y1)×(x2,y2)=x1*y2-x2*y1; 点乘一般用于判断直线是否正交:(x1,y1)·(x2,y2)=x1*x2+y1*y2; inline double Len(Vt a){return sqrt(Dot(a,a));}//模长 inline Vt operator +(Vt a,Vt .

SC_Linno的博客 1090

PCA主成分分析以及C++求解二维点法向量实例

weixin_43891708的博客 2382

夜深人静写算法(四)- 计算几何入门

简要介绍计算几何的几个简单算法和应用

英雄哪里出来 11万+

计算几何算法实战:凸包、Voronoi与Delaunay

计算几何是计算机科学和数学的一个交叉领域,它研究几何数据的计算问题,包括几何对象的表示、算法和数据结构。在现代信息技术中,计算几何承担着至关重要的角色,尤其在计算机图形学、机器人学、GIS、CAD等领域。计算几何不仅关注几何对象的构造和识别,还注重算法的效率和稳定性。它的发展为复杂空间数据的处理提供了理论基础和实现手段,使得工程师能够解决各类空间分析问题,如点集的凸包问题、路径的最短问题等。

weixin_31176789的博客 2020

二维几何-元素

二维几何的常用元素,点,线,圆,差积,点积的定义。最常用的点积和差积: 点乘几何意义 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。 点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式: 根据这个公式就可以计算向量a和向量b之间的夹角。从而就可以进一步判...

qq_40905284的博客 1389

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

m0_52031708的博客 3567

NOI数学:计算几何

NOI数学:计算几何

青少年趣味编程 1745

实测338MB/s!FPGA与CYUSB3014的Slave FIFO模式实战避坑(附完整固件与源码)

本文详细介绍了FPGA与CYUSB3014在Slave FIFO模式下实现338MB/s高速数据传输的实战经验。通过优化硬件设计、固件配置和GPIF II接口设置,解决了USB3.0双向通信中的关键性能瓶颈,并提供了完整的固件与源码参考。

weixin_30570101的博客 457

数字电子时钟——数字电路课设

本文设计了一种基于中小规模集成电路的数字电子时钟系统,采用模块化设计方法,包含晶振电路(CD4060+D触发器)、计时电路(74HC161计数器)、数码管驱动(CD4511)和整点报时功能。系统实现了60进制秒/分、24进制小时、7进制星期的计时显示,支持手动校时功能,并具备整点报时特性(59分54-58秒5次500Hz低音,59秒1次1000Hz高音)。通过分模块调试与整合,最终实物电路满足设计要求,获得优秀评价。

来自FZU——电子科学与技术专业 1488

计算几何基础【用图来助你理解几何算法】

计算几何基础 1.基本概念 1.1计算几何的引入 ​ 计算几何是几何学的一个重要分支,也是计算机科学的一个分支,研究解决几何问题的算法。在现代工程与数学、计算机图形学、机器人学、VLSI设计、计算机辅助设计等学科领域中,计算几何都有重要应用。 计算几何问题的输入一般是关于一组几何物体(如点、线)的描述;输出常常是有关这些物体相关问题的回答,如直线是否相交、点围成的面积等问题。 1.2 浮点数造成的误差 ​ 在学习计算几何之前,我们来回顾一下高中知识,我们求直线方程,或者是交点时,经常出现根号多少多少,以至我

qq_45249273的博客 1万+

傅里叶光学(1)

傅里叶光学,可以看作是通信理论中傅里叶变换等一系列数学思想以及系统理论与光学(主要是衍射光学)相结合的产物关于傅里叶光学的应用领域,本节介绍了成像,当然事实上不可能仅限于成像,经典的还如激光散斑的一些应用,干涉计量,还有傅里叶变换光谱学等等。最后总结一下,傅里叶光学我认为可以看做一个工具,对于任意的系统,它能给出一些数学思想与物理原理进行解释和分析,找出系统的扰动和响应的关系,或者说根据扰动和响应,来研究或者设计一个系统。

m0_53607446的博客 1668

二维凸包——Andrew 算法学习笔记

本文介绍了二维凸包的概念及其应用,重点讲解了Andrew算法求解凸包的原理和实现方法。凸包是包含所有给定点的最小凸多边形,Andrew算法通过排序后使用单调栈求取上、下凸壳,最终得到完整凸包。算法时间复杂度为O(nlogn),主要耗时在排序步骤。文中提供了完整的C++代码实现,并通过避免斜率计算的精度问题来提高准确性。该方法不仅适用于计算几何问题,也与斜率优化等算法有相似之处。

zpy的博客 1657

两个独立的正态分布的和仍然为正态分布的证明

正态分布的和

weixin_40064300的博客 1万+

DeepSeek-OCR又更新:一起看下OCR1和OCR2

DeepSeek-AI 最近又又开源了,这次是DeepSeek-OCR2,结合之前发布的DeepSeek-OCR ,可以发现DeepSeek走出了一条不同于主流 OCR 方案的技术路线。第一代模型探索了**“视觉作为文本压缩介质”的可行性,打破了传统的序列长度限制;第二代模型则通过“Visual Causal Flow(视觉因果流)”**架构,将因果推理引入视觉编码器,解决了复杂排版下的阅读顺序难题。本文将从架构设计、逻辑结构、训练范式及工程实现四个维度,深度剖析这两代模型的异同与创新。

kakaZhui的博客 623

计算几何系列 ——— 一切的开始

所有的游戏都有共性,多半免不了几何算法、图形、动画、渲染、UI等等,把这些通用的东西打包起来就形成了游戏引擎,如Unity3D、UE、Cocos等,游戏公司借助它们的力量便可以简化工作,从而专注于游戏内容制作。其他如机器人学中的寻路算法、分子建模领域的碰撞计算、以及邓俊辉老师课程中讲的“颜料勾兑问题”等等,对于其应用广泛性的总结借用Mark原话——“乍看起来,虽然某些领域似乎与几何风马牛不相及,然而它们同样可以借助几何算法而受益。换句话说,计算几何更像是算法的一个分支,而非几何学的分支。

Zz_0913的博客 3082

【遥感数字图像处理(朱文泉)】第四章 变换域处理方法

变换域的处理方法

甜子yu的博客 4311

计算几何总结

计算几何总结 一、精度控制 计算几何经常牵扯到浮点数的运算,所以就会产生精度误差,因此我们需要设置一个eps(偏差值),一般取1e-7到1e-10之间,并用下面的函数控制精度。 const double eps=1e-8; int dcmp(double x) { if (fabs(x)<eps) return 0; else return x<0?-1:1; }二、向量

clover_hxy的博客 1万+

Tomcat漏洞——弱口令爆破

靶机:CentOS7 IP:192.168.100.40。攻击机:kali IP:192.168.100.60。版 权 声 明:本博客所有文章除特别声明外,均采用。文章版权归作者所有,未经允许请勿转载!作 者:PeiyuJue。

weixin_57379923的博客 909

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: P4196 半平面交
下一篇: 洛谷P1007独木桥
engineoid
博客等级 码龄10年 6粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值