单调多边形的三角剖分
问题描述
单调多边形指存在一个方向,垂直于此方向的所以扫描线与多边形只有两个交点。
这里讨论垂直方向单调多边形的三角剖分。
为方便描述,这里没有水平的边。
规律1: 同侧端点不可能出现跨越
把多边形从最高点到最低点处剖开,分成左右两链,其中任何一条链,端点都是按y值顺序排列的。
也就是说,下面的端点不可能高于上面的端点,否则,与y值方向的单调性相违背。
如图:D高于C时,显然在C处的水平线会再次与此链相交。
规律2:异侧相邻
如果两个端点,在竖直方向上相邻的,但不在同一侧,即分别在左右两条链上,那这两点相连不会与其它边相交。
如下图,B与G在竖直方向相邻,那BG不会与其它边相交。
因为B,G已经相邻,即中间没有其它端点,如果存在一边与BG相交,那它一定有一端点在B上方,另一端点在G下方,否则不可能与BG相交。
由于规律1,端点连接不可能出现跨越的情况,即上方的端点不可能跨越B或者G与下方的点相连,即这样的边不存在。
所以BG是可以增加连线的。
同侧相邻端点处理
对异侧相邻点添加连线后,多边形会被划分为多个子多边形。每个子图都是这样的:一侧剩下相邻的点,另外一侧只有一条边,连接的是最高点与最低点。
同侧相邻的点相连可能会超出多边形,所以对于同侧相邻的三个点不能直接相连,而是要判断其它内角,如果小于 18 0 ∘ 180^\circ