【GDI+】一些规则多边形分离的问题

在近期的工作中,需要做一样工作:将一些有规则的图形,进行适当的分离,以达到不重叠的问题。

首先组成图形的点都可以是按照逆时针排好序的。

规则的图形可以大致分为三类:

A :两个点组成的线 或者 四个点组成的矩形

B:多个点组成的矩形,其中一对边不包含别的A类中的矩形的边或者线的起止点,另外一边相反:包含A类中矩形的一条边或者线的起止点,可以称这一类边为“可移动边”

C: 多个点组成的矩形,两个边都为“可移动边”。

目前分离的方式:

A类不移动,B、C类沿“可移动边”的垂直方向移动。

目前存在的问题:

A类不动:移动后,B、C类可能贴近了A

B、C类:由于可能存在B、C类沿相同的向量移动,所以,如果移动前有重叠,则移动后,一样会重叠。

改进方案:

A类型中两个点的线,视为“可移动边”,进行移动

A类型中的四个点组成的矩形,因为一般情况下,A类的矩形应该是在B、C类的内部,并且只有一对平行边在B、C类的“可移动边”上,所以可沿着一对平行边的方向向内部压缩一半

B、C类中移动时,如果已经有了相同的移动向量后,此次移动,只移动一般的距离。

 

画图好麻烦啊~ 有机会再上图了

再改进:

其实可以在平移完毕后,判断下有没有三点共线,有则将B、C类反向移动一半

再想想怎么优化

ps:

在线绘制流程图工具:

http://jgraph.github.io/mxgraph/javascript/examples/editors/workfloweditor.html

在线PS:

http://pixlr.com/editor/?loc=zh-cn

每多学一点知识,就少写一行代码
原文地址:https://www.cnblogs.com/loveclumsybaby/p/3422236.html