Если вы переворачиваете точку (0.0f, 0.0f), вам просто нужно отрицать значения. Таким образом, ваша форма будет:
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),
};
Если вы переворачиваете точку (x, y), то каждая точка будет (x - (px - x)) или (2 * xp.x) для значения x и (y - (py - y) ) или (2 * yp.y) для значения y.
Это объясняет:
, это точка, которую вы хотите перевернуть
* это точка, которую вы хотите перевернуть
O - это точка, с которой вы хотите закончить
x axis
^
|
. -
| | <-
| | <- Let this be distance a
* -
| | <-
| | <- This should be equal to a
O -
|
|
-------> y axis
Скажем, значения х. * и O - t, m и b соответственно (верх, середина и низ). Как видите, расстояние a = t-m и b = m-a. Следовательно, b = m- (t-m) = m-t + m = m * 2-t
Затем вы можете использовать этот принцип, чтобы написать алгоритм для переворачивания всех точек вокруг другой точки, и это даст вам ваш перевернутый многоугольник!