Х Мерный Эмулятор Кубика Рубика

Х Мерный Эмулятор Кубика Рубика

Я буду описывать создание эмулятора Кубик Рубика на языке C, для OpenGL буду. Объекты задаются в 3х мерных координатах. Х Мерный Эмулятор Кубика Рубика' title='Х Мерный Эмулятор Кубика Рубика' />Сборка 4 мерного кубика Рубика Хабрахабр. Мы знакомы с головоломкой кубик Рубика, но, проживая в трхмерном пространстве, трудно представить себе такую в четырхмерном. Разумеется, Рубик не патентовал четырхмерных кубиков, и речь идт лишь о подобии кубика Рубика. Поэтому сперва я расскажу о том, как я себе представляю четырхмерную головоломку. Тессеракт. Для начала представим себе, каким образом получается трхмерный куб. Возьмм одномерное пространство вс, что мы можем в нм изображать, ограничивается одномерными объектами, такими как точка, отрезок, луч, прямая. Нарисуем отрезок единичной длины AB. Х Мерный Эмулятор Кубика Рубика' title='Х Мерный Эмулятор Кубика Рубика' />Х Мерный Эмулятор Кубика РубикаХ Мерный Эмулятор Кубика РубикаТеперь добавим второе измерение ось ординат будет направлена вверх, а наш единичный отрезок AB лежит на оси абсцисс, в декартовой системе координат. Пожалуй, двумерное пространство наиболее привычно для человеческого понимания, потому что ни сферу, ни куб, нарисовать не получится, мы привыкли их изображать как проекцию на плоскость. Хорошо, с двумерным пространством у нас проблем нет, поэтому давайте вдумаемся как получается квадрат. Значит, берм мы отрезок AB вершины A0,0 и B1,0 на оси абсцисс, отступаем ровно единицу по оси ординат и дублируем отрезок, назовм его CD, с точками C0,1 и D1,1. Чтобы получить квадрат, нам теперь нужно соединить соответствующие вершины, то есть вершину A0,0 соединяем с е дубликатом C0,1, а вершину B1,0 соединяем с D1,1. Теперь мы имеем квадрат ACDB. Поняв как это работает в двумерном пространстве, будет довольно просто понять как получается куб в трхмерном. Онлайнрешатель Кубика Рубика рассчитывает шаги, необходимые для сборки Кубика Рубика. Укажите порядок цветов вашего кубика, нажмите кнопку. Мы знакомы с головоломкой кубик Рубика, но, проживая в трхмерном. Cfg Pro Fastcup.Net. Интересно много ли людей способны представить 4х мерное. Итак по пунктам 1. Добавляем третье измерение, ось аппликат будет направлена в глубину. Дублируем ACDB отступив на единицу по оси аппликат, вершины трансформируются так A0,0,0 H0,0,1C0,1,0 F0,1,1D1,1,0 G1,1,1B1,0,0 E1,0,13. Соединяем соответствующие вершины квадратов. Теперь читатель морально готов увидеть тессеракт По сути мы дублируем куб, смещая по оси четвртого измерения, и соединяем соответствующие вершины проще не придумаешь. Для наглядности мы будем увеличивать дубликат куба, помещая первоначальный куб внутрь него. Вот такое изображение чаще всего применяется при попытке спроецировать тессеракт на плоскость Чтобы подчеркнуть, что все отрезки у тессеракта единичные и показать равноправность проецирования, четырхмерный куб можно изобразить анимацией Но это вс присказка, а сказка впередиОт тессеракта к головоломке. Теперь давайте разбермся, что есть четырхмерная головоломка, а главное как е изобразить. Как известно, у куба шесть граней, следовательно, у трхмерной головоломки 6 цветов. Чтобы упростить себе жизнь, мы будем работать с кубиком 2х. Теперь, как представляю точно такой же математически эквивалентный четырхмерный кубик я Если взять внутреннюю часть головоломки то есть кубик, состоящий из 8 трхцветных углов, то мы просто вырезали из трхмерного кубика октаэдр и внутреннюю вырезанную поверхность окрасили в пурпурный цвет, в результате углы кубика стали тетраэдрами, окрашенными в 4 цвета. Потом мы продублировали все углы кубика, развернули внутреннюю грань тетраэдров наружу и окрасили е в серый цвет, получив в результате мою прелесть. Конечно, основная сложность моей работы заключалась не в том, чтобы, используя Open. GL, написать на Delphi программу, изображающую проэкцию четырхмерной головоломки, а в разработке алгоритма решения такой головоломки. То есть у меня была идея, математическое представление, а Open. GL был единственным знакомым мне средством для изображения трхмерной графики. Гипергрань. Сейчас мы рассмотрим что такое поворот гиперграни. В описанной головоломке есть всего 8 гиперграней, каждая из них является кубом. Поворот гиперграни по сути является поворотом одного куба относительно другого. Например, левый куб относительно правого, или внутренний относительно внешнего. Вариантов повернуть куб 2. Таких кубов у нас 8, значит за один ход мы имеем 1. Я приведу лишь несколько из них ниже, под спойлером. Сборка. Основная последовательность сборки заключалась в следующем 1. Эвристический метод, который размещает элементы с серыми цвета на позиции внешней гиперграни, называемой Kata, соответсвенно, все элементы с пурпурными цветами после этого этапа окажутся во внутренней гиперграни Ana. Ориентирование серых цветов внешней гиперграни наружу. Ориентирование пурпурных цветов внутренней гиперграни внутрь. Размещение элементов внешней гиперграни по таблице решений трхмерного кубика 2х. Размещение элементов внутренней гиперграни по той же таблице решений. По первому пункту особых сложностей не было, чтобы разместить серые снаружи, пурпурные внутри достаточно было простого перебора, ну может слегка оптимизированного, вся суть алгоритма выглядит примерно покрутим этим боком, покрутим другим, переставим ещ пару раз, о, готовоВторой этап имел алгоритмическую сложность O1. OLL в методе Фридрих для кубика Рубика. Составляет максимум 6 ходов. Третий этап хоть и решался точно как второй, но экспоненциальная сложность порядка O1. Составляет максимум 8 ходов. Четвртый этап использует таблицу из 3. Итак внежний гиперкуб собран. Ну и при наличии сразу трех таблиц с предрасчтами, алгоритм сборки уже не кажется сложным.

Статьи

Х Мерный Эмулятор Кубика Рубика
© 2017