如何比较绝对坐标

时间:2015-09-06 08:36:53

标签: android compare

我有一个绝对的屏幕点列表,如下:

355.2599  : 408.4894
353.31705 : 409.43512
341.44516 : 418.35184
329.3344  : 427.5607
314.9433  : 435.21622
304.6277  : 440.36212
292.61746 : 444.36887

我还有其他一些观点如下:

160.66528 : 513.35834
319.33472 : 230.71161
304.3659  : 479.40076

我怎么知道第二点是第一点? 例如,当不同点小于10 dp时,应该返回found;

private boolean checkValidate(List<Point> first, List<Point> second)
{
    int accuracy = Helper.dpToPixel(this, 10);
    int pointSize = first.size();
    int pointFlag = 0;
    List<Boolean> poinsValidation = new ArrayList<>();
    for(Point line : second)
    {
        if(pointSize != 0 && pointFlag < pointSize)
        {
            if(Math.abs(first.get(pointFlag).x - line.x ) <= accuracy && Math.abs(first.get(pointFlag).y - line.y ) <= accuracy)
            {
                poinsValidation.add(true);
                pointFlag++;
            }
        }

    }
    if(poinsValidation.size() == first.size())
    {
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

我建议在两个数组中嵌套循环。尽管嵌套循环不是首选,但在此阶段我无法想到另一种方法。

private boolean checkValidate(List<Point> first, List<Point> second)
{
    int accuracy = Helper.dpToPixel(this, 10);
    int pointSize = first.size();
    int pointSize2 = second.size();
    int pointFlag = 0;

    List<Boolean> poinsValidation = new ArrayList<>();
    for(Point line : second)
    {
        for(Point points: first){
            if(pointSize != 0 && pointSize2 != 0 &&  pointFlag < pointSize)
            {
                if(Math.abs(points.x - line.x ) <= accuracy && Math.abs(points.y - line.y ) <= accuracy)
                {
                    poinsValidation.add(true);
                    pointFlag++;
                }
            }
        }

    }
    if(poinsValidation.size() == first.size())
    {
        return true;
    }
    return false;
}

如果有帮助,请告诉我。