点在不在多边形内部:

法1 随机射线 看交点数(排除顶点)

法2 用一圈相邻内积算角度

求多边形重心:

求面积时拆三角形的方法 加权平均

旋转、对称、投影:

变换坐标系,再用矩阵搞线性变换

凸包:

graham扫描(极角)、andrew(水平序)

旋转卡壳:

就是一个two pointers。维护对面对的两个点。

直线和凸包交点:

二分求出两边的最远点(预处理出斜率对应的对踵点?)

然后再在结果中二分

点对凸包切线:

随机一个凸包顶点,连直线,若随机到的不是切点,就把凸包分成了两部分。显然切点分别在这两部分中,因此分别二分。二分时看相邻线的斜率与当前直线的斜率比较。

点到凸包最近距离:

在切线之间三分

凸包到凸包最近点对:

两个凸包同时旋转卡壳,每一次卡到点或者线的时候都求一求距离

闵可夫斯基和:

凸包端点可以看作平面中多个向量。凸包则可以看作集合S,包含所有凸包内的点对应的所有向量。

两个凸包的闵可夫斯基和的意义就是S凸包中任意向量加上(T凸包中任意向量)所形成的新范围

求解方法:!!!!

半平面交:

已有板子

直线和圆的交点:

已知半径,可求直线与圆心距离,即可求角度。

点到圆的切线:

已知半径,可求点到圆心距离,即可求角度。

圆与圆的公切线:

外公切线:已知两个半径,则半径、切线与圆心相连的直线之间形成相似三角形,可求交点,即可求角度。

内公切线:方法大同小异

三角形外接圆:

用中垂线的交求圆心

最小圆覆盖:

随机增量法

公切圆:

给定相切的三个圆,求公切圆

先定义一个概念叫做反演

点P对O做反演,反演点P’,则OPxOP’=0且OP.OP’=1

圆反演之后是圆或直线(反演点在圆内)

两次反演会抵消

对两个已知切点做反演,得到两个平行线和一个圆,作相切圆得答案