【问题标题】:How to get vertices from polygon如何从多边形中获取顶点
【发布时间】:2014-11-17 07:56:53
【问题描述】:

我正在使用多边形进行碰撞检测。现在我正在尝试做一些更复杂的碰撞,为此我需要将每个多边形顶点作为 Vector2。我在网上搜索过,我能找到的只有 PolygonBody (Get vertice list of a polygon shape body)

我可以在 libgdx API 中找到的唯一有用方法是 getTransformedVertices() 和 area(),但我不知道如何处理这些数据。

有什么想法吗?

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    你的意思是com.badlogic.gdx.math.Polygon 谈论多边形还是使用网格作为多边形?

    在第一种情况下,您可以这样做:

    Array<Vector2> getPolygonVertices(Polygon polygon) {
        float[] vertices = polygon.getTransformedVertices();
    
        Array<Vector2> result = new Array<>();
        for (int i = 0; i < vertices.length/2; i++) {
            float x = vertices[i * 2];
            float y = vertices[i * 2 + 1];
            result.add(new Vector2(x, y));
        }
        return result;
    }
    

    网格的解决方案几乎相同,除了你应该为每个顶点做一些额外的魔术提取 x 和 y(这取决于网格属性)。

    【讨论】:

    • 欢迎您!我建议您对向量进行一些池优化,以防您需要频繁调用此类方法。
    • 我已经做到了。我用浮点数创建了 ArrayList 而不是 Vectors,因此确实避免了转换为 Vector2。但这甚至无关紧要,因为命中测试在 10 秒内发生不超过 2 次,并且在大多数 2 个多边形上。
    猜你喜欢
    • 2013-05-26
    • 2020-02-11
    • 1970-01-01
    • 2017-07-19
    • 2013-10-03
    • 2019-11-25
    • 1970-01-01
    • 2020-11-10
    • 2013-11-20
    相关资源
    最近更新 更多