Вступ
Гіперкуб / тессеракт - це 4 мірний еквівалент нормального куба. Це робиться, беручи кубикову сітку, розширюючи її до 3-го виміру, потім - використовуючи 4-й вимір - складаючи її в гіперкуб. Це в основному куб, де кожна сторона - куб.
Для створення гіперкуба потрібно 16 4d векторів (вектор з компонентами a 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
Відкрийте зображення на новій вкладці, щоб побачити їх у повному розмірі.
Правила
- Діють правила за замовчуванням
- Стандартні лазівки заборонені
- Найкоротший код у байтах виграє