Слышали ли вы в процессе обучения что-то вроде "Установим для объекта позицию Х (икс) такую-то, и Y (игрек) такую-то"? Или "Запрограммируем движение по оси Z (зэд)"? Или такие слова, как двухмерный (2D) и трехмерный (3D)?
Все это связанно с таким понятием, как СИСТЕМА КООРДИНАТ. Оказывается, в школе на уроках математики это проходится достаточно поздно, а среди учеников, которые уже знакомы с данной темой, много непонимающих, для чего это вообще нужно. К сожалению, без этого знания в IT никуда - ни в программисты, ни в дизайнеры. Поэтому, попробуем во всем разобраться.
Введение
Что такое координаты? Возможно, вы слышали данное слово в каких-нибудь шпионских фильмах, в которых персонажи передавали друг другу какие-то "координаты противника"? Или слышали фразу "Я тебя скоординирую" от человека, который помогает вам в каком-либо деле? Так или иначе, само слово должно быть знакомо. Но что же оно означает?
Давайте рассмотрим пример. Надеюсь, все знают, что такое Эйфелева башня (если нет, можно ткнуть на ссылку и почитать). Как бы вы сказали, где она находится? Во Франции? В Париже? А точнее? Можно сказать, например, что Эйфелева башня находится во Франции, в самом центре Парижа, на Марсовом поле, напротив Йенского моста. В принципе, достаточно точное описание, скажем, для водителя такси, работающего в Париже. Для остальных же людей возникнут вопросы: а где во Франции находится Париж, где в Париже находится Марсово поле или Йенский мост?
Появляется проблема: как нам описать положение чего-либо независимо от положения другого объекта? Как нам точно описать позицию Эйфелевой башни на планете, не используя позиции соседствующих с ней зданий, парков, улиц и т.д.? И как потом так же точно найти положения самих соседних зданий, не обращаясь к Эйфелевой башне?
Что ж, для географов и картографов положение Эйфелевой башни звучит так - 48 градусов северной широты (а, если точнее, то 48°51′29″ с. ш.) и 2 градуса восточной долготы (а, если точнее, то 2°17′40″ в. д.). Как это работает? Люди просто взяли глобус, на нем поставили точку для начала отсчета, а всю остальную поверхность поделили параллельными вертикальными и горизонтальными линиями. Вертикальные линии проведенные от полюса к полюсу назвали Меридианами, а меридиан, используемый как начало отсчёта назвали Нулевым меридианом. Горизонтальные же линии называются Параллелями, и самая длинная из них - это Экватор. Их пересечение и есть начало отсчета, точка Ноль-Ноль.
Это называется географической системой координат. Таким образом, стало возможно найти положение чего угодно на планете и точно его описать. По этому же принципу построены все карты, атласы, навигаторы и прочие системы геолокации.
Двухмерная система координат
Попробуем схематично перенести положение Эйфелевой башни на тетрадный лист. Точность здесь неважна, важно понять общий принцип работы.
Точка, в которой находится Эйфелева башня - это искомое положение. Так как мы уже условились, что все позиции на поверхности Земли рассчитываются относительно точки Ноль-Ноль, то есть пересечения Нулевого меридиана и Экватора, мы можем использовать эти самые Нулевой меридиан и Экватор как своеобразные "линейки" с установленным единичным размером на каждой из них. И, далее, с учетом установленного размера, именуемого масштабом, провести параллельные линии от точки до Экватора/Нулевого меридиана. Расстояния от нулевой точки до этих линий и будут нашими координатами, а пересечение этих линий - искомой точкой.
Таким образом, мы, наконец, можем отвлечься от нашего конкретного примера с Эйфелевой башней, и перейти к более абстрактным (условным) математическим понятиям.
Обозначим наш Экватор буквой Х (икс), а Нулевой меридиан буквой Y (игрек). Эти две линии в математике называются Осями Координат. Пересечением осей также будет точка Ноль. И в качестве единичного размера установим расстояние в одну тетрадную клеточку. Таким образом, мы можем сказать, что точка, в которой находилась наша условная Эйфелева башня, в нашей новой системе координат имеет позицию две клеточки по оси Х, и четырнадцать клеточек по оси Y.
Такая система координат называется двухмерной (или же 2D), так как в ней используется два параметра измерения (X и Y, ширина и высота). Координаты нашей точки в такой системе записываются в виде (2, 14), где первое число - всегда значение по оси X, а второе - значение по оси Y.
Вы можете самостоятельно поставить сколько угодно точек, и найти их координаты, посчитав количество клеточек от нуля до параллельной линии, построенной от искомой точки, для каждой из осей координат.
Трехмерная система координат
Трехмерная система координат (3D) отличается от двухмерной - кто бы мог подумать - наличием третьей оси измерений. Она располагается строго перпендикулярно каждой из осей Х и Y, называется глубиной и обозначается буквой Z (Зэд).
В данном примере точка Р имеет координаты (2, 3, 1), т.к., аналогично двухмерной системе координат, сперва записывается значение координаты X, потом Y, и затем уже Z.
Таким образом, можно сделать вывод, что трехмерная система координат нужна для обозначения позиции чего-либо в объемном пространстве, в то время, как двухмерная система координат используется на плоскости.
Если не до конца понятно, можно представить двумерный квадрат, который в трехмерном пространстве станет кубом, или круг, который станет шаром. Ну или можно сравнить две игры про Марио - 2D и 3D.
Примеры использования систем координат в IT
Теперь посмотрите на свой телефон/компьютер/планшет и т.д. Что у них является главной частью для взаимодействия в вами? Это экран - основной инструмент для вывода информации.
Какими параметрами характеризуется экран вашего девайса? Высота и ширина, т.е. X и Y. Именно то, что мы уже изучили.
Каждый элемент, каждая иконка, каждый пиксель, который вы видите на экране, характеризуется своими координатами. Иначе компьютер бы попросту не знал, что и где должно располагаться.
Представим, что вы играете в игру, в того же марио. Вы нажимаете на стрелку вправо - и персонаж двигается вправо. Но что на самом деле происходит?
На самом деле, компьютер не знает, что такое "право", и двигать объект в этом направлении он не может. Но он может увеличивать значение по оси Х для объекта, что для нас уже тоже самое, что и "вправо". А чтобы двигаться влево, значение по оси Х пришлось бы уменьшать.
То же самое и с прыжком или падением. Когда Марио прыгает - он не двигается "вверх", компьютер не знает, что это такое. Он увеличивает значение по оси Y. Когда персонаж падает вниз - значение по оси Y уменьшается.
В трехмерных играх тоже самое - когда мы двигаемся вперед/назад, мы изменяем положение по координате Z, вверх/вниз - Y, влево/вправо - X.