Я давно этим занимаюсь, но не могу закончить то, что пытаюсь сделать.Я пытаюсь найти способ перевернуть координаты на основе списка объектов и списка их координат.
objects = [1, 2, 3, 4, 5]
grid_placement = [(0,0), (32, 0), (64, 0), (0, -32), (0, -64)]
Я хочу получить координаты перевернутой оси, где они находятся
Таким образом, идеальный перевернутый Y-вывод будет по существу:
placement = [(0, -64), (32, -64), (64, -64), (0, -32), (0, 0)]
А идеальный перевернутый X-вывод будет:
placement = [(64, 0), (32, -64), (0,0), (64, -32), (64, -64)]
Таким образом, по существу, если что-то находится в верхнем правом углу, этов левом верхнем углу после переключения на X. Их позиции индекса в списке останутся такими же, но с измененными координатами.
Код, который я собрал, прекрасно работает для оси Y, но я не могу получитьось X работает.Мой мозг немного перегорел от того, чтобы возиться с этим в течение нескольких часов, любой внешний совет был бы высоко оценен.
Вот мой код (грязный)
gridSize = 32
if axis == "x":
columns = defaultdict(dict)
for gridOffset in self.offsetList:
row = gridOffset[1] // gridSize
col = gridOffset[0] // gridSize
columns[col][gridOffset] = row
new_order = []
order = list(reversed(list(columns.keys())))
for col in order:
for offset in self.offsetList:
if offset in columns[col]:
new_order.append((col * gridSize, columns[col][offset] * gridSize))
elif axis == "y":
rows = defaultdict(dict)
for gridOffset in self.offsetList:
row = gridOffset[1] // gridSize
col = gridOffset[0] // gridSize
rows[row][gridOffset] = col
new_order = []
order = list(reversed(list(rows.keys())))
for offset in self.offsetList:
for row in order:
if offset in rows[row]:
new_order.append((rows[row][offset] * gridSize, row * -gridSize))
self.offsetList = new_order