Skip to content

Arjunarus/HUPERCYBEIIID

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

HUPERCYBEIIID

https://duke-3d.deviantart.com/art/Cube-version-1-481881

Визуализация кубов из фильма Куб.

Техзадание:
✗ Генерация Куба (процент заполненности — входной параметр) и перемещение комнат в соответствии с фильмом
✗ Трехмерная визуализация
✗ Плавная анимация перемещений
✗ Число одновременно перемещающихся кубов задается пользователем. При отсутствии значения (или значении, которое невозможно соблюсти) используется максимум возможного.

Некоторые маленькие todo:
✗ Возможность задавать высоту canvas перетаскиванием мышкой
✓ Человеческий UI

Используется javascript и three.js.


Принцип работы Куба

Куб состоит из нагромождения кубических комнат. Максимальный размер Куба по каждому из измерений — 26 комнат. Комнаты могут не стоять друг на друге, но должны соприкасаться как минимум одной гранью в любой момент времени.

Каждая комната перемещается по замкнутому маршруту из трех позиций, заданных декартовыми координатами.
Маршрут каждой комнаты задан исходной координатой и вектором смещений, которые закодированы в её Номер.

Номер — три группы по три цифры (например, 826 390 175).
Исходная координата комнаты получается сложением цифр в каждой группе: (8+2+6, 3+9+0, 1+7+5) → (16, 12, 13).

Векторы смещений получаются путем вычитания цифр в каждой группе (второй из первой, третья из второй, первая из третьей):
826: 8-2=6 2-6=-4 6-8=-2
390: 3-9=-6 9-0=9 0-3=-3
175: 1-7=-6 7-5=2 5-1=4

Полученные векторы: (6,-6,-6), (-4,9,2), (-2,-3,4). Координата получаются путем сложения исходной координаты с векторами.

Итоговый маршрут для комнаты-примера:
(16, 12, 13) + (6,-6,-6) = (22, 6, 7)
(22, 6, 7) + (-4, 9, 2) = (18, 15, 9)
(18, 15, 9) + (-2, -3, 4) = (16, 12, 13)

Также существует единственная комната (Мост), имеющая координату, равную 27.

Описание на Википедии

About

The Cube visualization

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.8%
  • Other 0.2%