矢量优化

时间:2015-08-11 08:56:36

标签: java optimization vector

我有一个描述多边形的矢量对象。看起来像这样:

enter image description here

现在我正在寻找一种有效的算法去除不必要的向量来获得类似的东西:

enter image description here

有谁知道这样做的好方法?

1 个答案:

答案 0 :(得分:0)

经过一些进一步的研究后,我编写了以下代码作为解决方案:

public void optimize() {
    if (vectors.size() < 3)
        return;

    for (int i = 2; i < vectors.size(); i++) {
        if (sameLine(vectors.get(i - 2),vectors.get(i - 1), vectors.get(i)))
            vectors.remove(--i);
    }
}

boolean sameLine(Point a, Point b , Point c) {
    if ((b.x < a.x && b.x < c.x)|| (b.x > c.x && b.x > a.x) || (b.y < a.y && b.y < c.y)|| (b.y > c.y && b.y > a.y))
        return false;
    return (a.y - b.y) * (a.x - c.x) == (a.y - c.y) * (a.x - b.x);
}

绘制点对象的ArrayList。