Введение
Гиперкуб / тессеракт - это 4-мерный эквивалент нормального куба. Это делается путем взятия сетки кубов, расширения ее до 3-го измерения, а затем - с использованием 4-го измерения - складывания в гиперкуб. Это в основном куб, где каждая сторона - куб.
Для создания гиперкуба вам нужно 16 4d векторов (вектор с an x
, a y
, a z
и w
компонентом). Эти векторы следующие:
A(0, 0, 0, 0); B(1, 0, 0, 0); C(1, 0, 1, 0); D(0, 0, 1, 0); E(0, 1, 0, 0); F(1, 1, 0, 0); G(1, 1, 1, 0); H(0, 1, 1, 0);
I(0, 0, 0, 1); J(1, 0, 0, 1); K(1, 0, 1, 1); L(0, 0, 1, 1); M(0, 1, 0, 1); N(1, 1, 0, 1); O(1, 1, 1, 1); P(0, 1, 1, 1);
Гиперкуб имеет 24 лица. Следующий список содержит их все (каждая группа помечена квадратом):
ABFE, CDHG, BCGF, DAEH, DCBA, FEHG
IJNM, KLPO, JKON, LIMP, LKJI, PMNO
ABJI, DCKL, BCKJ, DAIL, FEMN, GHPO, FGON, EHPM, EAIM, BFNJ, CGOK, HDLP
Со всей этой информацией у вас технически есть гиперкуб в коде. Чтобы повернуть это, вам нужно 6 различных матриц для каждой плоскости вращения, по одной для плоскостей YZ, XZ, XY, XW, YW и ZW. После того, как у вас есть каждая матрица, вам нужно умножить вершины куба на них.
Следующие изображения показывают структуру каждой матрицы:
Для вращения на плоскости YZ:
Для вращения на плоскости XZ:
Для вращения на плоскости XY:
Для вращения на плоскости XW:
Для вращения на плоскости YW:
Для вращения на плоскости ZW:
Вращения применяются в этом порядке.
После всего этого у вас есть повернутый гиперкуб. Теперь вам нужно нарисовать это. Вы должны использовать ортогональную проекцию в сочетании с перспективной проекцией , чтобы отправить (x, y, z, w)
в (2x/(2+z), 2y/(2+z))
.
вход
Вы вводите 6 целых чисел от 0 (включительно) до 360 (исключительно). Они представляют повороты в градусах на разных плоскостях вращения гиперкуба.
Выход
Ваш вывод должен быть одним изображением, содержащим гиперкуб. Дисплей может быть растровым изображением, векторным изображением или ASCII-изображением. Выходное изображение должно быть не менее 100 * 100 пикселей, а куб должен занимать не менее 50% экрана. Разрешен любой формат вывода изображения по умолчанию.
Контрольные примеры
0 0 0 0 0 0
0 0 0 0 0 30
30 0 0 0 0 30
0 0 0 30 30 30
45 45 45 0 0 0
45 45 45 45 45 45
Откройте изображения в новой вкладке, чтобы увидеть их в полном размере.
правила
- Применяются правила по умолчанию
- Стандартные лазейки запрещены
- Самый короткий код в байтах выигрывает