如图canvas绘制两个三角形,擦除重叠区域形成新的多边形.
已知原顶点为A1 A2 A3, B1 B2 B3, 算出两个图形的交点做为新增顶点 C D E F G H, 这个顶点集合应该怎么计算顺序 才能画出下面的图形呢.
(仅考虑图形可以用橡皮擦算法擦除相交点的线段实现, 如果需要算出准确的顶点集合里面的顺序呢 应该怎么做)
有一个想法,找到图形的重心,然后用Math.atan2算每个点基于重心的角度,最后按角度排序
(帖子被作者删除,如无标记将在 24 小时后自动删除)
是针对任意多边形的合并吗
我实践试下.
1、计算出单个三角形中顶点与交点顺序集合
2、从单个点出发,沿当前三角形点顺序依次排,碰到交点就更换三角形
比如从A1出发, 怎么得到下一个点呢.
2赞
谢谢,我研究研究
你如过实践出了2楼提到的内容,就可以得到单个三角形的点位顺序集合
为了方便描述,将两个多边形分别记为A,B
且构成的顶点按照顺序以此为 A1 A2 A3 。。。 An。 B1 B2 B3 。。。 Bn
初始化。将多边形A的顶点1作为游标,开始算法
repeat
然后取多边形A的边A1A2,然后和多边形B的边做相交判断,取出离这个顶点最近的一个顶点C,以及对应的边B1Bn。
然后从B1B2中,反过来取与多边形A的相交判断,会得到顶点C1C2,此时B1B2会被分割为,B1C1, C1C2, C2B2,三条线段
将A1, C1压入队列
将B1设为游标,重复上述算法(类似的只是互换了多边形),会从多边形A中得到,A2D1,D1D2,D2A3
将B1,D1压入队列,A2设为游标
until 游标回到A1
最后留下的点序列就是新多边形的所有顶点。
另外,这里默认你这里都是凸多边形(凹多边形,此算法应该不适用,没仔细想过)
gpt问的,具体怎么做你可以继续问下,能行的话记得分享下
扫描线算法 :扫描线算法是一种常用的方法,通过沿着一个方向扫描多边形,并根据扫描线与多边形的交点来确定多边形的顶点顺序。