算法 {多边形,退化多边形,凸多边形,凹多边形}
@MARK_1
多边形
定义
#多边形#: 周长上的边均为直线段, 封闭的/不能有空心 的二维图形;
.
圆/圆角矩形 不是多边形, 因为其边包含有圆弧;
.
封闭的直线段: 说明相邻两条直线段 相交于一点, 故边数等于点数;
#N-多边形#: 边数和点数 为N的多边形;
.
任意多边形 一定是N-多边形;
性质
@MARK_0
;
任意多边形P 其位于直线L的同一侧, 等价于, P的各个顶点 位于L的同一侧;
换句话说, 多边形P 他的凸包C 一定满足: C的所有顶点 就是P的顶点;
算法
半平面交
多边形的核
应用
@LINK: https://editor.csdn.net/md/?not_checkout=1&articleId=138045889
;
给定斜率, 找到一个直线, 使得 多边形都位于该直线的同一侧; (@LINK: @MARK_0
这性质, 即等价于 多边形的各个顶点 都位于直线的同一侧);
退化多边形
定义
符合多边形的定义, 但他很畸形, 比如符合以下任意条件:
+: 面积为0 (即为一个点/线段);
+: 有重点(即有长度为0的边);
+: 存在内角为0/180
(比如对于线段a-c
他中间还有一个点b
此时b的内角为180
; 正规多边形 其内角一定是(0,180)
);
凸多边形
定义
#凸多边形#
多边形A, 对其任意一条边延长形成直线B后 A的所有顶点: 要么在B上 要么都位于B的同一侧; 则A为凸多边形;
相关定义
#正多边形#
所有边长相等 && 所有点相同 的多边形;
.
两个条件缺一不可; 比如长方形是所有点相同 但不是所有边相同(正方形才是); 比如菱形 是所有边相同 但不是所有点相同;
性质
@DELI;
1: 凸多边形的外角和为
360
360
360;
2: N-凸多边形的内角和为
180
∗
N
−
360
180*N - 360
180∗N−360; (每个角加上其外角 等于
180
180
180);
凹多边形不满足这两个性质;
算法
求面积
对于凸多边形ABCDE
(逆时针/顺时针的次序), 连接线段AC| AD
, 此时该凸多边形被拆分为ABC| ACD| ADE
若干个三角形, 然后通过叉积求三角形面积 累积起来;
应用
凹多边形
定义
#凹多边形#
不是凸的多边形, 就是凹多边形;