翻转顶点数组

Jam*_*mes 2 c# algorithm flip vertex

我有一组构成二维多边形的位置顶点。

        Vector2[] _chassisConcaveVertices =
        {
            new Vector2(5.122f, 0.572f),
            new Vector2(3.518f, 0.572f),
            new Vector2(3.458f, 0.169f),
            new Vector2(2.553f, 0.169f),
            new Vector2(2.013f, 0.414f),
            new Vector2(0.992f, 0.769f),
            new Vector2(0.992f, 1.363f),
            new Vector2(5.122f, 1.363f),
        };
Run Code Online (Sandbox Code Playgroud)

我可以使用什么算法来修改位置以便翻转生成的多边形?我需要水平和垂直翻转多边形。

Cyb*_*ude 5

假设Vector2该类有两个属性/成员名称xy

    public Vector2[] FlipHorizontally(Vector2[] original)
    {
        Vector2[] flipped = new Vector2[original.Length];
        for (int i = 0; i < original.Length; i++)
        {
            flipped[i] = new Vector2(-1 * original[i].x, original[i].y);
        }
        return flipped;
    }

    public Vector2[] FlipVertically(Vector2[] original)
    {
        Vector2[] flipped = new Vector2[original.Length];
        for (int i = 0; i < original.Length; i++)
        {
            flipped[i] = new Vector2(original[i].x, -1 * original[i].y);
        }
        return flipped;
    }
Run Code Online (Sandbox Code Playgroud)

这将相对于两个轴翻转顶点。您没有指定新多边形相对于原始多边形的定位。如果您需要“移动”它,那么您只需将一个值添加到 allx并将另一个值添加到 all y