首先,您必须确定您实际想要计算的重心。很明显,当三角形相交(并且重叠区域不应该被计数两次)时,则不计算三角形的重心,而是计算它们交叉区域的重心。
幸运的是,这样一个相交区域可以很容易地用Area类来计算。根据一条评论,你已经有一个描述这个区域的Area。
因此计算此区域重心的一种方法是计算Area所有边界点的平均值。
请注意,这只适用于Area没有孔。
否则,您必须计算Area的面积。
这里是一个可能的实现:
import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.Path2D;
import java.awt.geom.PathIterator;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class CenterOfGravity
{
public static void main(String[] args)
{
Path2D p0 = new Path2D.Double();
p0.moveTo(100, 100);
p0.lineTo(200, 100);
p0.lineTo(150, 50);
p0.closePath();
Path2D p1 = new Path2D.Double();
p1.moveTo(150,