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