【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
每多学一点知识,就少写一行代码