一种方法是使用合适的方法
fill()分别缩放和变换
Shape为不同的颜色,
AlphaComposite并计算基础像素中的重叠像素
Raster。
附录1:使用此计算器查看效果,
AlphaComposite.Xor表明任意两种不透明颜色的间隔为零。
附录2:计数像素可能会导致性能问题;采样可能会有所帮助。如果每个
Shape都是合理凸的,则有可能根据
intersect()面积与
Shapes’
的面积之和的比率来估计重叠
getBounds2D()。例如,
Shape s1, s2 ...Rectangle2D r1 = s1.getBounds2D();Rectangle2D r2 = s2.getBounds2D();Rectangle2D r3 = new Rectangle2D.Double();Rectangle2D.intersect(r1, r2, r3);double overlap = area(r3) / (area(r1) + area(r2));...private double area(Rectangle2D r) { return r.getWidth() * r.getHeight();}您可能需要凭经验验证结果。



