如何在 Android 中查找路径中的所有点?

2022-09-02 23:35:15

不久前,我问了一个问题,看看我是否能够在路径中找到一对特定的点;但是,这次我想知道是否有办法知道路径中的所有点?(我找不到这样做的方法,这很不幸,因为Java提供了一种方法来做到这一点,只是不是Android?

我问这个问题的原因是因为我有多个几何图形,我想比较这些点以查看它们相交的位置。

我感谢任何有用的回复


答案 1

您可以使用 来获取路径上任意点的坐标。例如,这个简单的片段(我在这里看到的)返回路径一半处的点的坐标:PathMeasure

PathMeasure pm = new PathMeasure(myPath, false);
//coordinates will be here
float aCoordinates[] = {0f, 0f};

//get point from the middle
pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null);

或者,此代码段返回一个 s 数组。该数组涉及路径上 20 个点的坐标:FloaPoint

private FloatPoint[] getPoints() {
        FloatPoint[] pointArray = new FloatPoint[20];
        PathMeasure pm = new PathMeasure(path0, false);
        float length = pm.getLength();
        float distance = 0f;
        float speed = length / 20;
        int counter = 0;
        float[] aCoordinates = new float[2];

        while ((distance < length) && (counter < 20)) {
            // get point from the path
            pm.getPosTan(distance, aCoordinates, null);
            pointArray[counter] = new FloatPoint(aCoordinates[0],
                    aCoordinates[1]);
            counter++;
            distance = distance + speed;
        }

        return pointArray;
    }

在上面的代码片段中,是一个封装点坐标的类:FloatPoint

class FloatPoint {
        float x, y;

        public FloatPoint(float x, float y) {
            this.x = x;
            this.y = y;
        }

        public float getX() {
            return x;
        }

        public float getY() {
            return y;
        }
    }

参考文献
堆栈溢出
使用路径和路径设置图像动画 – Android


答案 2

如果您已经创建了一个这意味着在代码的某个点,您知道确切的(Geo)点。你为什么不把这一点放在一个或类似的东西上?PathArrayList

例如,在做之前:

path.lineTo(point.x, point.y);

你可以做:

yourList.add(point);
path.lineTo(point.x, point.y);

稍后,您可以从 中获取所有积分。请注意,您可以利用增强的 For 循环语法,该语法的执行速度最多可以提高三倍。ArrayListArrayList


推荐