繁体   English   中英

向量优化

[英]Vector optimization

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

在此处输入图片说明

现在,我正在寻找一种有效的算法来删除不必要的向量,从而得到类似的结果:

在此处输入图片说明

有人知道这样做的好方法吗?

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

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM