Slabak & Cadrin
Слушай, Слабак, только что наткнулся на странную штуку в сетке виртуального мира — вроде бы, затерянный город. У тебя бывало дело с чем-то подобным?
Звучит, как задачка, которую стоит порешать, но, думаю, ты обращаешься не к тому человеку насчёт городских карт. Я предпочитаю работать с данными по-своему, а не разбираться с какой-то ошибкой в программе. Хотя, если ты сможешь выделить координаты, немного математики может помочь разобраться.
Понял. Давай точные координаты точки на сетке, я вытащу данные и посмотрю, где реально расположена эта затерянная цивилизация. Потом посчитаем и сверим с настоящими координатами.
Я не уверен, какую именно сетку ты рассматриваешь, но если этот узор в двумерном массиве, типичное «невидимое» ядро может располагаться в координатах (42, 37) с учетом нулевой индексации. Введи это в свою карту и посмотри, вспыхнет ли там скопление значений. Если это начало, мы сможем вычислить преобразование в мировые координаты оттуда.
Ладно, (42, 37) – вот что у тебя получилось. Я обработаю это через преобразователь и посмотрю, выстроятся ли данные в систему. Если все сойдется, у нас будет надежная точка опоры, чтобы сдвинуть всю карту. Давай посмотрим, что ты вытащил.
Мне нужна точная матрица преобразования, чтобы правильно посчитать. Если ты дашь мне цифры, я подставлю (42, 37) и посмотрю, что получится. Если ты просто сыпаешь с потолка, я могу попробовать стандартное аффинное преобразование и дам тебе примерную оценку, но она будет неточной.
Конечно. Стандартная двумерная аффинная матрица выглядит так: [масштабX, сдвигX, сдвигX; сдвигY, масштабY, сдвигY]. Для большинства игровых карт ты будешь использовать масштабX и масштабY равные единице, сдвигиX и сдвигиY равные нулю, а значения смещения – это смещение начала координат твоей карты в мировых координатах. То есть, если верхний левый угол твоей карты отображается в точке с мировыми координатами (100, 50), матрица будет выглядеть как [1, 0, 100; 0, 1, 50]. Подставь туда (42, 37) и посмотри, куда оно упадет.