Как называется 4 х мерный куб. Программа для рисования четырёхмерного куба

τέσσαρες ἀκτίνες - четыре луча) - 4-мерный Гиперкуб - аналог в 4-мерном пространстве.

Изображение является проекцией () четырехмерного куба на трехмерное пространство.

Обобщение куба на случаи с числом измерений, большим, чем 3, называется гиперкубом или (en:measure polytopes). Формально гиперкуб определяется как четырёх равных отрезков.

Данная статья в основном описывает 4-мерный гиперкуб , называемый тессеракт .

Популярное описание

Попытаемся представить себе, как будет выглядеть гиперкуб, не выходя из нашего трёхмерного .

В одномерном «пространстве» - на линии - выделим АВ длиной L. На двумерной на расстоянии L от АВ нарисуем параллельный ему отрезок DC и соединим их концы. Получится квадрат ABCD. Повторив эту операцию с плоскостью, получим трехмерный куб ABCDHEFG. А сдвинув куб в четвёртом измерении (перпендикулярно первым трем!) на расстояние L, мы получим гиперкуб.

Одномерный отрезок АВ служит гранью двумерного квадрата ABCD, квадрат - стороной куба ABCDHEFG, который, в свою очередь, будет стороной четырёхмерного гиперкуба. Отрезок прямой имеет две граничные точки, квадрат - четыре вершины, куб - восемь. В четырёхмерном гиперкубе, таким образом, окажется 16 вершин: 8 вершин исходного куба и 8 сдвинутого в четвёртом измерении. Он имеет 32 ребра - по 12 дают начальное и конечное положения исходного куба, и еще 8 ребер «нарисуют» восемь его вершин, переместившихся в четвёртое измерение. Те же рассуждения можно проделать и для граней гиперкуба. В двумерном пространстве она одна (сам квадрат), у куба их 6 (по две грани от переместившегося квадрата и еще четыре опишут его стороны). Четырёхмерный гиперкуб имеет 24 квадратные грани - 12 квадратов исходного куба в двух положениях и 12 квадратов от двенадцати его ребер.

Аналогичным образом можно продолжить рассуждения для гиперкубов большего числа измерений, но гораздо интереснее посмотреть, как для нас, жителей трёхмерного пространства, будет выглядеть четырёхмерный гиперкуб . Воспользуемся для этого уже знакомым методом аналогий.

Возьмем проволочный куб ABCDHEFG и поглядим на него одним глазом со стороны грани. Мы увидим и можем нарисовать на плоскости два квадрата (ближнюю и дальнюю его грани), соединённые четырьмя линиями - боковыми рёбрами. Аналогичным образом четырёхмерный гиперкуб в пространстве трёх измерений будет выглядеть как два кубических «ящика», вставленных друг в друга и соединённых восемью рёбрами. При этом сами «ящики» - трёхмерные грани - будут проецироваться на «наше» пространство, а линии, их соединяющие, протянутся в четвёртом измерении. Можно попытаться также представить себе куб не в проекции, а в пространственном изображении.

Подобно тому, как трёхмерный куб образуется квадратом, сдвинутым на длину грани, куб, сдвинутый в четвёртое измерение, сформирует гиперкуб. Его ограничивают восемь кубов, которые в перспективе будут выглядеть как некая довольно сложная фигура. Ее часть, оставшаяся в «нашем» пространстве, нарисована сплошными линиями, а то, что ушло в гиперпространство, пунктирными. Сам же четырёхмерный гиперкуб состоит из бесконечного количества кубов, подобно тому как трёхмерный куб можно «нарезать» на бесконечное количество плоских квадратов.

Разрезав восемь граней трёхмерного куба, можно разложить его в плоскую фигуру - развёртку. Она будет иметь по квадрату с каждой стороны исходной грани плюс еще один - грань, ей противоположную. А трёхмерная развертка четырёхмерного гиперкуба будет состоять из исходного куба, шести кубов, «вырастающих» из него, плюс ещё одного - конечной «гиперграни».

Свойства тессеракта представляют собой продолжение свойств геометрических фигур меньшей размерности в 4-мерное пространство, представленных в нижеследующей таблице.

Начнём с объяснения, что же такое четырёхмерное пространство.

Это - одномерное пространство, то есть просто ось OX. Любая точка на ней характеризуется одной координатой.


Теперь проведём ось OY перпендикулярно оси OX. Вот и получилось двумерное пространство, то есть плоскость XOY. Любая точка на ней характеризуется двумя координатами - абсциссой и ординатой.


Проведём ось OZ перпендикулярно осям OX и OY. Получится трёхмерное пространство, в котором у любой точки есть абсцисса, ордината и аппликата.


Логично, что четвёртая ось, OQ, должна быть перпендикулярной осям OX, OY и OZ одновременно. Но мы не можем точно построить такую ось, и потому остаётся только попытаться представить её себе. У каждой точки в четырёхмерном пространстве есть четыре координаты: x, y, z и q.

Теперь посмотрим, как появился четырёхмерный куб.


На картинке изображена фигура одномерного пространства - линия.


Если сделать параллельный перенос этой линии вдоль оси OY, а потом соединить соответствующие концы двух получившихся линий, получится квадрат.


Аналогично, если сделать параллельный перенос квадрата вдоль оси OZ и соединить соответствующие вершины, то получится куб.


А если сделать параллельный перенос куба вдоль оси OQ и соединить вершины двух этих кубов, то мы получим четырёхмерный куб. Кстати, он называется тессеракт .

Чтобы нарисовать куб на плоскости, нужно его спроецировать . Наглядно это выглядит так:

Представим, что в воздухе над поверхностью висит каркасная модель куба, то есть как бы «сделанная из проволоки», а над ней - лампочка. Если включить лампочку, обвести карандашом тень от куба, а потом выключить лампочку, то на поверхности будет изображена проекция куба.

Перейдём к немного более сложному. Ещё раз посмотрите на рисунок с лампочкой: как видите, все лучи сошлись в одной точке. Она называется точкой схода и используется для построения перспективной проекции (а бывает и параллельная, когда все лучи параллельны друг другу. Результат - не создаётся ощущения объёма, но она легче, и при том если точка схода достаточно сильно удалена от проецируемого объекта, то разница между этими двумя проекциями мало заметна). Чтобы спроецировать данную точку на данную плоскость, используя точку схода, нужно провести прямую через точку схода и данную точку, а потом найти точку пересечения получившейся прямой и плоскости. А для того, чтобы спроецировать более сложную фигуру, скажем, куб, нужно спроецировать каждую его вершину, а потом соответствующие точки соединить. Следует заметить, что алгоритм проекции пространства на подпространство можно обобщить для случая 4D->3D, а не только 3D->2D.

Как я уже говорил, мы не можем себе точно представить, как выглядит ось OQ, равно как и тессеракт. Зато мы можем получить ограниченное представление о нём, если мы спроецируем его на объём, а потом нарисуем это на экране компьютера!

Теперь поговорим о проекции тессеракта.


Слева находится проекция куба на плоскость, а справа - тессеракта на объём. Они довольно схожи: проекция куба выглядит как два квадрата, маленький и большой, один внутри другого, и у которых соответствующие вершины соединены линиями. А проекция тессеракта выглядит как два куба, маленький и большой, один внутри другого, и у которых соответствующие вершины соединены. Но мы все видели куб, и можем с уверенностью сказать, что и маленький квадрат, и большой, и четыре трапеции сверху, снизу, справа и слева от маленького квадрата, на самом деле являются квадратами, при чём равными. И у тессеракта тоже самое. И большой куб, и маленький куб, и шесть усечённых пирамид по бокам от маленького куба - это всё кубы, при чём равные.

Моя программа умеет не только рисовать проекцию тессеракта на объём, а ещё и вращать его. Рассмотрим, как делается это.

Для начала я вам расскажу, что такое вращение параллельно плоскости .

Представьте себе, что куб вращается вокруг оси OZ. Тогда каждая из его вершин описывает окружность вокруг оси OZ.

А окружность - фигура плоская. И плоскости каждой из этих окружностей параллельны между собой, и в данном случае параллельны плоскости XOY. То есть мы можем говорить не только о вращении вокруг оси OZ, а ещё и о вращении параллельно плоскости XOY.Как видим, у точек, которые вращаются параллельно оси XOY меняются только абсцисса и ордината, аппликата же остаётся неизменной И, вообще-то, мы можем говорить о вращении вокруг прямой только тогда, когда имеем дело с трёхмерным пространством. В двумерном всё вращается вокруг точки, в четырёхмерном - вокруг плоскости, в пятимерном пространстве мы говорим о вращении вокруг объёма. И если вращение вокруг точки мы можем себе представить, то вращение вокруг плоскости и объёма - что-то немыслимое. А если будем говорить о вращении параллельно плоскости, то тогда в любом n-мерном пространстве точка может вращаться параллельно плоскости.

Многие из вас, вероятно, слышали о матрице поворота. Умножив точку на неё, получим точку, повёрнутую параллельно плоскости на угол фи. Для двумерного пространства она выглядит так:

Как умножать: икс точки, повёрнутой на угол фи = косинус угла фи*икс первоначальной точки минус синус угла фи*игрек первоначальной точки;
игрек точки, повёрнутой на угол фи=синус угла фи*икс первоначальной точки плюс косинус угла фи*игрек первоначальной точки.
Xa`=cosф*Xa - sinф*Ya
Ya`=sinф*Xa + cosф*Ya
, где Xa и Ya - абсцисса и ордината точки, которую нужно повернуть, Xa` и Ya` - абсцисса и ордината уже повёрнутой точки

Для трёхмерного пространства это матрица обобщается следующим образом:

Вращение параллельно плоскости XOY. Как видим, координата Z не меняется, а меняются только X и Y
Xa`=cosф*Xa - sinф*Ya + Za*0
Ya`=sinф*Xa +cosф*Ya + Za*0
Za`=Xa*0 + Ya*0 + Za*1 (по сути, Za`=Za)


Вращение параллельно плоскости XOZ. Ничего нового,
Xa`=cosф*Xa + Ya*0 - sinф*Za
Ya`=Xa*0 + Ya*1 + Za*0 (по сути, Ya`=Ya)
Za`=sinф*Xa + Ya*0 + cosф*Za


И третья матрица.
Xa`=Xa*1 + Ya*0 + Za*0 (по сути, Xa`=Xa)
Ya`=Xa*0 + cosф*Ya - sinф*Za
Za`=Xa*0 + sinф*Ya + cosф*Za

А для четвёртого измерения они выглядят вот так:


Думаю, вы уже поняли, что на что множить, потому лишний раз расписывать не буду. Зато замечу, что она делает то же самое, что и матрица для поворота параллельно плоскости в трёхмерном пространстве! И та, и эта изменяют только ординату и аппликату, а остальные координаты не трогают, потому её можно использовать и в трёхмерном случае, просто не обращая внимания на четвёртую координату.

А вот с формулой проекции не всё так просто. Сколько я ни читал форумов, мне не подошёл ни один из способов проекции. Параллельная мне не подходила, так как проекция не будет выглядеть объёмной. В одних формулах проекции для нахождения точки нужно решить систему уравнений(а я не знаю, как научить компьютер их решать), другие я просто-напросто не понял… В общем, я решил придумать свой способ. Рассмотрим для этого проекцию 2D->1D.


pov значит «Point of view» (точка зрения), ptp значит «Point to project» (точка, которую нужно спроецировать), а ptp` - это искомая точка на оси OX.

Углы povptpB и ptpptp`A равны как соответствующие(пунктирная линия параллельна оси OX, прямая povptp - секущая).
Икс точки ptp` равен иксу точки ptp минус длина отрезка ptp`A. Этот отрезок можно найти из треугольника ptpptp`A: ptp`A = ptpA/тангенс угла ptpptp`A. Мы можем найти этот тангенс из треугольника povptpB: тангенс угла ptpptp`A = (Ypov-Yptp)(Xpov-Xptp).
Ответ: Xptp`=Xptp-Yptp/тангенс угла ptpptp`A.

Я не стал подробно расписывать этот алгоритм тут, так как там куча частных случаев, когда формула несколько меняется. Кому это интересно - посмотрите в исходниках программы, там всё расписано в комментариях.

Для того, чтобы спроецировать точку трёхмерного пространства на плоскость, просто рассмотрим две плоскости - XOZ и YOZ, и для каждой из них решим эту задачу. В случае четырёхмерного пространства нужно рассмотреть уже три плоскости: XOQ, YOQ и ZOQ.

И наконец, про программу. Она действует так: инициализировать шестнадцать вершин тессеракта -> в зависимости от введённых пользователем команд повернуть его -> спроецировать на объём -> в зависимости от введённых пользователем команд повернуть его проекцию -> спроецировать на плоскость -> нарисовать.

Проекции и повороты я написал сам. Они работают по формулам, которые я только что описал. Библиотека OpenGL рисует линии, а так же занимается смешиванием цветов. А координаты вершин тессеракта вычисляются таким образом:

Координаты вершин линии с центром в начале координат и длинной 2 - (1) и (-1);
- " - " - квадрата - " - " - и ребром длинной 2:
(1; 1), (-1; 1), (1; -1) и (-1; -1);
- " - " - куба - " - " -:
(1; 1; 1), (-1; 1; 1), (1; -1; 1), (-1; -1; 1), (1; 1; -1), (-1; 1; -1), (1; -1; -1), (-1; -1; -1);
Как можно было заметить, квадрат - это одна линия над осью OY и одна линия под осью OY; куб - это один квадрат спереди от плоскости XOY, и один за ней; тессеракт - это один куб по ту сторону объёма XOYZ, и один - по эту. Но куда легче воспринять это чередование единиц и минус единиц, если их записать в столбик

1; 1; 1
-1; 1; 1
1; -1; 1
-1; -1; 1
1; 1; -1
-1; 1; -1
1; -1; -1
-1; -1; -1

В первом столбце один и минус один чередуются. Во втором столбце сначала идёт два плюса, потом два минуса. В третьем - четыре плюс единицы, а потом четыре минус единицы. Это были вершины куба. У тессеракта их в два раза больше, и потому нужно было написать цикл для их объявления, иначе очень легко запутаться.

Моя программа так же умеет рисовать анаглиф. Счастливые обладатели 3D-очков могут наблюдать стереоскопическую картинку. В рисовании картинки нет ничего хитрого, просто рисуется две проекции на плоскость, для правого и левого глаз. Зато программа становится намного более наглядной и интересной, а главное - даёт лучшее представление о четырёхмерном мире.

Менее значительные функции - подсветка одной из граней красным, чтобы лучше можно было разглядеть повороты, а так же мелкие удобства - регуляция координат точек-«глаз», увеличение и уменьшение скорости поворота.

Архив с программой, исходником и инструкцией пользования.

Ещё когда я был студентом-первокурсником у меня с одним моим одногруппником вышел горячий спор. Он говорил, что четырёхмерный куб представить нельзя ни в каком виде, а я уверял, что его можно представить достаточно отчётливо. Тогда я даже сделал из скрепок проекцию гиперкуба на наше трёхмерное пространство… Но давайте обо всём по-порядку.

Что такое гиперкуб и четырёхмерное пространство

В нашем привычном пространстве три измерения. С геометрической точки зрения это значит, что в нём можно указать три взаимно-перпендикулярных прямых. То есть для любой прямой можно найти вторую, перпендикулярную первой, а для пары можно найти третью прямую, перпендикулярную двум первым. Найти четвёртую прямую, перпендикулярную трём имеющимся, уже не удастся.

Четырёхмерное пространство отличается от нашего только тем, что в нём есть ещё одно дополнительное направление. Если у вас уже есть три взаимно перпендикулярные прямые, то вы можете найти четвёртую, такую, что она будет перпендикуляра всем трём.

Гиперкуб это просто куб в четырёхмерном пространстве.

Можно ли представить четырёхмерное пространство и гиперкуб?

Этот вопрос сродни вопросу: «можно ли представить Тайную Вечерю, посмотрев на одноимённую картину (1495-1498) Леонардо да Винчи (1452-1519)?»

С одной стороны, вы конечно не представите то, что видел Иисус (он сидит лицом к зрителю), тем более вы не почувствуете запаха сада за окном и вкуса еды на столе, не услышите пения птиц… Вы не получите полного представления о происходившем в тот вечер, но нельзя сказать, что вы не узнаете ничего нового и что картина не представляет никакого интереса.

Аналогичная ситуация и с вопросом о гиперкубе. Полностью представить его нельзя, но можно приблизиться к пониманию, каков он.

Построение гиперкуба

0-мерный куб

Начнём с начала - с 0-мерного куба. Этот куб содержит 0 взаимно перпендикулярных граней, то есть это просто точка.

1-мерный куб

В одномерном пространстве у нас есть только одно направление. Сдвигаем точку в этом направление и получаем отрезок.

Это одномерный куб.

2-мерный куб

У нас появляется второе измерение, сдвигаем наш одномерный куб (отрезок) в направлении второго измерения и получаем квадрат.

Это куб в двумерном пространстве.

3-мерный куб

С появлением третьего измерения поступаем аналогично: сдвигаем квадрат и получаем обычный трёхмерный куб.

4-мерный куб (гиперкуб)

Теперь у нас появилось четвёртое измерение. То есть в нашем распоряжении имеется направление, перпендикулярное всем трём предыдущим. Воспользуемся им точно так же. Четырёхмерный куб будет выглядеть вот так.

Естественно, трёхмерный и четырёхмерный кубы нельзя изобразить на двумерной плоскости экрана. То, что нарисовал я - это проекции. О проекциях мы поговорим чуть позже, а пока немного голых фактов и цифр.

Количество вершин, рёбер, граней

Обратите внимание, что гранью гиперкуба является наш обычный трёхмерный куб. Если внимательно посмотреть на рисунок гиперкуба, то можно действительно найти восемь кубов.

Проекции и зрение жителя четырёхмерного пространства

Несколько слов о зрении

Мы живём в трёхмерном мире, но видим мы его двумерным. Это связано с тем, что сетчатка наших глаз расположена в плоскости, имеющей только два измерения. Именно поэтому мы способны воспринимать двумерные картины и находить их похожими на реальность.

(Конечно, благодаря аккомодации, глаз может оценить расстояние до объекта, но это уже побочное явление, связанное с оптикой, встроенной в наш глаз.)

Глаза жителя четырёхмерного пространства должны иметь трёхмерную сетчатку. Такое существо может сразу увидеть трёхмерную фигуру полностью: все её грани и внутренности. (Точно так же мы можем увидеть двумерную фигуру, все её грани и внутренности.)

Таким образом, с помощью наших органов зрения, мы не способны воспринять четырёхмерный куб так, как его воспринимал бы житель четырёхмерного пространства. Увы. Остаётся только уповать на мысленный взор и фантазию, которые, к счастью, не имеют физических ограничений.

Тем не менее, изображая гиперкуб на плоскости, я просто вынужден делать его проекцию на двумерное пространство. Учитывайте это обстоятельство, при изучении рисунков.

Пересечения рёбер

Естественно, ребра гиперкуба не пересекаются. Пересечения появляются только на рисунках. Впрочем, это не должно вызывать удивления, ведь рёбра обычного куба на рисунках тоже пересекаются.

Длины рёбер

Стоит отметить, что все грани и рёбра четырёхмерного куба равны. На рисунке они получаются не равными только потому, что расположены под разными углами к направлению взгляда. Однако можно развернуть гиперкуб так, что все проекции будут иметь одинаковую длину.

Кстати, на этом рисунке отчётливо видны восемь кубов, являющихся гранями гиперкуба.

Гиперкуб внутри пустой

В это трудно поверить, но между кубами, ограничивающими гиперкуб, заключено некоторое пространство (фрагмент четырёхмерного пространства).

Чтобы это лучше понять, давайте рассмотрим двумерную проекцию обычного трёхмерного куба (я специально сделал её несколько схематичной).

Можно ли по ней догадаться, что внутри куба есть некоторое пространство? Да, но только применив воображение. Глаз этого пространства не видит.

Это происходит потому, что рёбра, расположенные в третьем измерении (которое нельзя изобразить на плоском рисунке), теперь превратились в отрезки, лежащие в плоскости рисунка. Они больше не обеспечивают объём.

Квадраты, ограничивающие пространство куба, наложились друг на друга. Но можно представить, что в исходной фигуре (трёхмерном кубе) эти квадраты располагались в разных плоскостях, а не один поверх другого в одной плоскости, как это получилось на рисунке.

Точно так же дело обстоит и с гиперкубом. Кубы-грани гиперкуба на самом деле не накладываются, как это кажется нам на проекции, а располагаются в четырёхмерном пространстве.

Развёртки

Итак, житель четырёхмерного пространства может увидеть трёхмерный объект одновременно со всех сторон. Можем ли мы одновременно со всех сторон увидеть трёхмерный куб? Глазом - нет. Но люди придумали способ, как изобразить на плоском рисунке все грани трёхмерного куба одновременно. Такое изображение называется развёрткой.

Развёртка трёхмерного куба

Как образуется развёртка трёхмерного куба все наверно знают. Этот процесс показан на анимации.

Для наглядности края граней куба сделаны полупрозрачными.

Следует отметить, что мы способны воспринять эту двумерную картинку только благодаря воображению. Если рассмотреть фазы разворачивания с чисто двумерной точки зрения, то процесс будет казаться странным и совсем не наглядным.

Он выглядит, как постепенное появление сперва очертаний искажённых квадратов, а потом их расползание на свои места с одновременным принятием необходимой формы.

Если смотреть на разворачивающийся куб в направлении одной из его граней (с этой точки зрения куб выглядит как квадрат), то процесс образования развёртки ещё менее нагляден. Всё выглядит как выползание квадратов из начального квадрата (не развёрнутого куба).

Но не наглядна развёртка только для глаз .

Как понять 4-х мерное пространство?

Как раз благодаря воображению из неё можно почерпнуть много информации.

Развёртка четырёхмерного куба

Сделать анимированный процесс разворачивания гиперкуба хоть сколько нибудь наглядным просто невозможно. Но этот процесс можно представить. (Для этого надо посмотреть на него глазами четырёхмерного существа.)

Развёртка выглядит так.

Здесь видны все восемь кубов, ограничивающих гиперкуб.

Одинаковыми цветами покрашены грани, которые должны совместиться при сворачивании. Серыми оставлены грани для которых парных не видно. После свёртки самая верхняя грань верхнего куба должна совместиться с нижней гранью нижнего куба. (Аналогично сворачивается развёртка трёхмерного куба.)

Обратите внимание, что после свёртки все грани восьми кубиков придут в соприкосновение, замкнув гиперкуб. И наконец, представляя процесс свёртывания, не забывайте, что при свёртывании происходит не наложение кубов, а оборачивание ими некой (гиперкубической) четырёхмерной области.

Сальвадор Дали (1904-1989) много раз изображал распятие, а кресты фигурируют в очень многих его картинах. На картине «Распятие» (1954) используется развёртка гиперкуба.

Пространство-время и евклидово четырёхмерное пространство

Надеюсь, что вам удалось представить гиперкуб. Но удалось ли вам приблизиться к пониманию, как устроено четырёхмерное пространство-время в котором мы живём? Увы, не совсем.

Здесь мы говорили об евклидовом четырёхмерном пространстве, но пространство-время обладает совсем другими свойствами. В частности, при любых поворотах отрезки остаются всегда наклонены к оси времени либо под углом меньше 45 градусов, либо под углом больше 45 градусов.

Свойствам пространства времени я посвятил серию заметок.

Трехмерность изображения

Мир трехмерен. Его изображение двухмерно. Важной задачей живописи и, теперь, фотографии является передача трехмерности пространства. Некоторыми приемами владели уже римляне, потом они были забыты и начали возвращаться в классическую живопись с Ренессансом.

Основной прием создания трехмерного пространства в живописи — перспектива. Железнодорожные рельсы, удаляясь от зрителя, визуально сужаются. В живописи рельсы можно физически сузить. В фотографии перспектива возникает автоматически: камера снимет рельсы такими же зауженными, как их видит глаз. Однако не допускайте почти смыкания: оно будет выглядеть уже не перспективой, а странной фигурой; между рельсами, сторонами улицы, берегами реки должен сохраняться заметный просвет.

Важно понимать, что линейная перспектива — наиболее примитивный, реалистичный способ передачи мира.

Post navigation

Не случайно ее появление связано с театральными декорациями (Флоренский, “Обратная перспектива”). Условность, простота передачи театральной сцены небольшой глубины очень подходит для фотографии, лишенной разнообразия приемов, доступных в живописи.

Существуют перспективы, значительно более интересные, чем линейная. В работах китайских мастеров присутствует плавающая перспектива, когда объекты изображены одновременно снизу, сверху и спереди. Она не была технической ошибкой некомпетентных художников: легендарный автор этой техники, Guo Xi писал, что такое отображение позволяет осознать мир в его тотальности. Аналогична техника русской иконописи, в которой зритель может видеть лицо и спину персонажа одновременно. Интересным приемом иконописи, встречающимся также у западноевропейских художников, была обратная перспектива, в которой удаленные объекты, наоборот, крупнее близких, подчеркивая важность. Только в наши дни было установлено, что такая перспектива правильная: в отличие от удаленных предметов, ближний план действительно воспринимается в обратной перспективе (Раушенбах). Средствами фотошопа можно добиться обратной перспективы, увеличивая объекты заднего плана. Для привыкшего к законам фотографии зрителя смотреться такое изображение будет странно.

Введение в кадр угла здания, от которого в обе стороны расходятся стены, создает подобие изометрической перспективы. Мозг понимает, что стены находятся под прямым углом, и раскладывает остальное изображение соответственно. Такая перспектива динамичнее фронтальной и естественнее для ближнего плана. Просто вводите в кадр торцевые углы предметов и близко расположенных зданий.

За счет расширения, изометрическая перспектива мажорна, что редко подходит для классического портрета. Линейная перспектива, за счет сужения, лучше передает минорные эмоции.

На этапе съемки, фотографу доступен ряд инструментов, подчеркивающих перспективу. Уходящие вдаль объекты равной ширины (колея, улица, колонны, борозды) своим сужением и даже просто удалением обозначают зрителю трехмерность пространства. Эффект сильнее, если снимать с низкого ракурса, чтобы увеличить искажения перспективы. Для пейзажной съемки этого достаточно, но при небольшой глубине изображения интерьерной съемки эффект малозаметен. Его можно немного усилить в пост-обработке, заузив верхнюю часть изображения (Transform Perspective). Впрочем, и в пейзаже гипертрофированная перспектива может выглядеть интересно.

Глубина может быть явной по смыслу изображения: здания разделены улицей или рекой. Диагональ подчеркивает трехмерность; например, мост через реку.

Предметы известного зрителю размера на заднем плане задают масштаб и, соответственно, формируют перспективу. В пейзажной съемке таким предметом может быть автомобиль, а в портретной попробуйте присогнуть и поджать под стул ногу (от камеры), чтобы она, оставаясь видимой, казалась меньше. Можно даже чуть уменьшить эту ногу в пост-обработке.

Орнамент передает перспективу за счет визуального уменьшения элементов. Примером будет крупная плитка на полу, линии разметки на дороге.

Существует техника гипертрофированного переднего плана. Диспропорционально большой, он создает глубину изображения. Сравнивая масштаб переднего плана и модели, глаз приходит к выводу, что модель гораздо дальше, чем кажется. Гипертрофированность должна оставаться едва различимой, чтобы изображение не воспринималось ошибкой. Этот прием подходит не только для пост-обработки, но и при съемке: исказите пропорции, снимая объективом 35 или 50мм. Съемка широкоугольным объективом растягивает пространство, усиливая его трехмерность за счет нарушения пропорций. Эффект сильнее, если снимать модель с близкого расстояния, но опасайтесь гротескных пропорций: только авторы религиозных изображений могут изображать человека больше здания.

Отлично работает пересечение. Если яблоко частично закрывает собой грушу, то мозг не ошибется: яблоко находится впереди груши. Модель, частично закрывающая собой мебель, создает тем самым глубину интерьера.

Глубину изображению придает также чередование светлых и темных пятен. Мозг знает по опыту, что находящиеся рядом предметы освещены примерно одинаково, поэтому интерпретирует по-разному освещенные предметы как расположенные на разном расстоянии. Для такого эффекта, пятна чередуются в направлении оси перспективы — вглубь изображения, а не поперек него. Например, снимая модель, лежащую от камеры в темном кадре, положите блики света возле ягодиц и возле ног. Можно осветлять/ затемнять области в пост-обработке.

Последовательность все более темных предметов воспринимается уменьшающейся. За счет постепенного затенения объектов, расположенных по активной линии, можно получить тонкое ощущение перспективы. Аналогично, глубина передается ослаблением света: пустите полосу света по мебели или на полу.

Трехмерное изображение можно получить за счет не только светового, но и цветового контраста. Этот прием был известен фламандским живописцам, которые располагали на своих натюрмортах яркие цветные пятна. Красный гранат и желтый лимон рядом будут смотреться трехмерно даже при плоском фронтальном освещении. Особенно хорошо они будут выступать вперед на фоне фиолетового винограда: теплый цвет на фоне холодного. Яркие цветные поверхности хорошо вырываются из темноты даже слабым светом, типичным для натюрморта. Контраст цветов лучше работает с основными цветами: красным, желтым, синим, а не оттенками.

На черном фоне, желтый цвет выступает вперед, синий прячется назад. На белом фоне — наоборот. Насыщенность цвета усиливает этот эффект. Почему так происходит? Желтый цвет не бывает темным, поэтому мозг отказывается верить в то, что желтый предмет может быть погружен в темный фон, не освещен. Синий цвет, наоборот, темный.

Усиление перспективы в пост-обработке сводится к имитации атмосферного восприятия: удаленные объекты кажутся нам более светлыми, размытыми, со сниженным контрастом по яркости, насыщенности и тону.

Помимо больших расстояний, атмосферные эффекты естественно выглядят в утренней дымке, тумане, накуренном баре. Учитывайте погоду: в облачный день или в сумерках не может быть значительного отличия между передним и задним планами.

Самый сильный из факторов — контраст по яркости. В настройках это обычный контраст. Снизьте контрастность удаленных предметов, поднимите контрастность переднего плана — и изображение станет выпуклым. Речь не о контрасте между передним и задним планами, а о контрастности заднего плана, которая должна быть ниже контрастности переднего. Этот метод подходит не только для пейзажей и жанровой съемки, но и студийного портрета: поднимите контраст передней части лица, снизьте контраст на волосах и скулах, одежде. Портретные фильтры делают нечто похожее, размывая кожу модели и оставляя резкими глаза и губы.

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

На снижение контраста похоже размытие, но это разные процессы. Изображение может быть низкоконтрастным, оставаясь резким. В силу ограниченной глубины резкости, размытие удаленных предметов остается наиболее популярным способом передачи трехмерности на фотографии, и его легко усилить, размыв дальний план в пост-обработке. Поэтому же на заднем плане следует располагать поменьше деталей — мозг не ожидает различимых предметов вдалеке. Между тем, снижение контраста лучше отвечает естественному восприятию: удаленные горы видны низкоконтрастными, а не размытыми, потому что сканируя пейзаж, взгляд постоянно перефокусируется, ему чужда проблема глубины резкости. Размывая задний план, можно заодно поднять резкость переднего. Дополнительно, на переднем плане можно усилить линии изображения (High Pass Filter или Clarity). Именно высокая резкость переднего плана объясняет характерную выпуклость изображения высококачественных объективов. Осторожно: ради незначительного увеличения трехмерности вы можете сделать изображение слишком жестким.

Более светлые объекты кажутся более удаленными. Связано это с тем, что в природе мы видим дальние объекты сквозь толщу рассеивающего свет воздуха; дальние горы кажутся светлыми. В пейзажной съемке следует, поэтому, с осторожностью относиться к расположению светлых объектов на переднем плане.

Осветлите дальние объекты. Чем удаленнее, тем больше они сливаются с яркостью и тоном неба. Обратите внимание, что горизонтальные объекты (земля, море) лучше освещаются, чем вертикальные (стены, деревья), поэтому не переусердствуйте с осветлением последних. В любом случае, объекты должны оставаться заметно менее светлыми, чем небо.

Хорошо, если вы заметили, что осветление — это другой способ снизить контраст по яркости заднего плана. Чуть затемните передний план для усиления эффекта выпуклости.

Казалось бы, в интерьере все наоборот. Если на улице глаз привык к тому, что даль светла, то в комнате свет зачастую сосредоточен на человеке, а интерьер погружен в темноту; мозг привык к освещению переднего плана, а не заднего.

На интерьерных изображениях с малой глубиной сцены, в отличие от пейзажных, освещенная модель выступает из темного фона. Но есть и противоположный фактор: 99% своей эволюции, человек наблюдал перспективу на открытой местности, и с появлением комнат мозг еще не успел перестроиться. Вермеер предпочитал светлый фон для портретов, и они у него действительно выпуклые. Освещение вертикального фона, рекомендуемое в фотографии, не только отделяет от него модель, но и за счет осветления фона придает изображению небольшую трехмерность. Здесь мы сталкиваемся с тем, что мозг анализирует расположение объектов по нескольким факторам, и они могут быть конфликтующими.

Интересно выглядит студийное освещение, в котором световые пятна лежат на удаленных от камеры зонах модели. Например, подсвечена та грудь, которая дальше от камеры.

Снизьте насыщенность цвета на удаленных объектах: из-за толщи разделяющего нас воздуха, дальние горы десатурированы почти до уровня монохрома и покрыты синей дымкой. Насыщенность переднего плана можно увеличить.

Поскольку желтый цвет светлый, а синий и красный — темные, то цветовой контраст заодно является и контрастом по яркости.

Десатурируя удаленный фон, не дайте ему пропасть из виду. Часто, напротив, нужно поднять насыщенность дальнего плана, чтобы проявить его. Это важнее трехмерности.

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

Очень удаленные предметы кажутся более холодного цвета, потому что воздух поглощает теплый оранжевый свет. Фотографируя модель на пляже на фоне кораблей, расположенных у горизонта, в пост-обработке снизьте цветовую температуру далекого моря и судов. Модель в красном купальнике выступает из синего моря, а модель в желтом свете уличного фонаря — из синеватых сумерек.

В этом заключается раздельное тонирование: модель делаем теплее, фон — холоднее. Мозг понимает, что в одной плоскости разных цветовых температур не бывает, и воспринимает такое изображение трехмерным, на котором модель выступает из фона. Раздельное тонирование придает глубину и пейзажам: сделайте передний план теплее, задний холоднее.

Важное исключение из раздельного тонирования: на восходе и закате, удаленный фон вовсе не холодный, а теплый, с желтыми и красно-оранжевыми тонами. Очевидное решение — использовать белокожую модель в фиолетовом купальнике — не работает, потому что закатный свет наносит теплый оттенок и на тело модели.

Обобщим: для придания фотографии трехмерности на основе атмосферных эффектов, необходимо противопоставить передний и задний планы. Основное противопоставление — по обычному контрасту: передний план контрастный, задний — слабоконтрастный. Второе противопоставление — по резкости: передний план резкий, задний — размытый. Третье противопоставление — по светлости: передний план темный, задний — светлый. Четвертое противопоставление — по насыщенности: цвета переднего плана насыщены, заднего — десатурированы. Пятое противопоставление — по температуре: передний план теплый, задний — холодный.

Перечисленные факторы нередко разнонаправленны. Желтый цвет ярче синего, а светлые предметы кажутся дальше темных. Естественно было бы ожидать, что желтый цвет отступает, а синий — приближается к зрителю. На самом деле, наоборот: теплый цвет выступает из холодного фона. То есть, цвет оказывается более сильным фактором, чем яркость. Что, по размышлении, и не удивительно: желтый и красный хорошо различимы только вблизи, и зритель не ожидает их встретить на большом расстоянии.

Итог: удерживайте задний план низкоконтрастным, размытым, светлым, десатурированным, синеватым. И будьте готовы к тому, что зритель, привыкший к гипертрофированному 3D кинофильмов, сочтет созданную вами трехмерность едва заметной или отсутствующей.

В портретной съемке, лучше полагаться на проверенный эффект chiaroscuro — игру светотени на лице модели, которая сделает изображение достаточно выпуклым. В жанровой съемке, перспектива дает наиболее заметный эффект трехмерности. В натюрморте, основным фактором будет пересечение (наложение) предметов.

Не увлекайтесь перспективой; она лишь фон для фронтальной плоскости, на которой трепещет ваше изображение. В современной живописи, далекой от реализма, перспектива не в почете.

Скачать книгу целиком: pdfepubazw3mobifb2litОглавление

September 19th, 2009
Тессеракт (от др.-греч. τέσσερες ἀκτῖνες — четыре луча) — четырёхмерный гиперкуб — аналог куба в четырёхмерном пространстве.

Изображение является проекцией (перспективой) четырёхмерного куба на трёхмерное пространство.

Согласно Оксфордскому словарю, слово «tesseract» было придумано и начало использоваться в 1888 Чарльзом Говардом Хинтоном (1853—1907) в его книге «Новая эра мысли». Позже некоторые люди назвали ту же самую фигуру «тетракубом».

Геометрия

Обычный тессеракт в евклидовом четырёхмерном пространстве определяется как выпуклая оболочка точек (±1, ±1, ±1, ±1). Иначе говоря, он может быть представлен в виде следующего множества:

Тессеракт ограничен восемью гиперплоскостями, пересечение которых с самим тессерактом задаёт его трёхмерные грани (являющиеся обычными кубами). Каждая пара непараллельных трёхмерных граней пересекается, образуя двумерные грани (квадраты), и так далее. Окончательно, тессеракт обладает 8 трёхмерными гранями, 24 двумерными, 32 рёбрами и 16 вершинами.

Популярное описание

Попытаемся представить себе, как будет выглядеть гиперкуб, не выходя из трёхмерного пространства.

В одномерном «пространстве» — на линии — выделим отрезок АВ длиной L. На двумерной плоскости на расстоянии L от АВ нарисуем параллельный ему отрезок DC и соединим их концы. Получится квадрат ABCD. Повторив эту операцию с плоскостью, получим трехмерный куб ABCDHEFG. А сдвинув куб в четвёртом измерении (перпендикулярно первым трём) на расстояние L, мы получим гиперкуб ABCDEFGHIJKLMNOP.
http://upload.wikimedia.org/wikipedia/ru/1/13/Построение_тессеракта.PNG

Одномерный отрезок АВ служит стороной двумерного квадрата ABCD, квадрат — стороной куба ABCDHEFG, который, в свою очередь, будет стороной четырёхмерного гиперкуба. Отрезок прямой имеет две граничные точки, квадрат — четыре вершины, куб — восемь. В четырёхмерном гиперкубе, таким образом, окажется 16 вершин: 8 вершин исходного куба и 8 сдвинутого в четвёртом измерении. Он имеет 32 ребра — по 12 дают начальное и конечное положения исходного куба, и ещё 8 ребер «нарисуют» восемь его вершин, переместившихся в четвёртое измерение. Те же рассуждения можно проделать и для граней гиперкуба. В двумерном пространстве она одна (сам квадрат), у куба их 6 (по две грани от переместившегося квадрата и ещё четыре опишут его стороны). Четырёхмерный гиперкуб имеет 24 квадратные грани — 12 квадратов исходного куба в двух положениях и 12 квадратов от двенадцати его ребер.

Аналогичным образом можно продолжить рассуждения для гиперкубов большего числа измерений, но гораздо интереснее посмотреть, как для нас, жителей трёхмерного пространства, будет выглядеть четырёхмерный гиперкуб. Воспользуемся для этого уже знакомым методом аналогий.

Развёртка тессеракта

Возьмём проволочный куб ABCDHEFG и поглядим на него одним глазом со стороны грани. Мы увидим и можем нарисовать на плоскости два квадрата (ближнюю и дальнюю его грани), соединённые четырьмя линиями — боковыми рёбрами. Аналогичным образом четырёхмерный гиперкуб в пространстве трёх измерений будет выглядеть как два кубических «ящика», вставленных друг в друга и соединённых восемью рёбрами. При этом сами «ящики» — трёхмерные грани — будут проецироваться на «наше» пространство, а линии, их соединяющие, протянутся в четвёртом измерении. Можно попытаться также представить себе куб не в проекции, а в пространственном изображении.

Подобно тому, как трёхмерный куб образуется квадратом, сдвинутым на длину грани, куб, сдвинутый в четвёртое измерение, сформирует гиперкуб. Его ограничивают восемь кубов, которые в перспективе будут выглядеть как некая довольно сложная фигура. Её часть, оставшаяся в «нашем» пространстве, нарисована сплошными линиями, а то, что ушло в гиперпространство, пунктирными. Сам же четырёхмерный гиперкуб состоит из бесконечного количества кубов, подобно тому как трёхмерный куб можно «нарезать» на бесконечное количество плоских квадратов.

Разрезав шесть граней трёхмерного куба, можно разложить его в плоскую фигуру — развёртку. Она будет иметь по квадрату с каждой стороны исходной грани плюс ещё один — грань, ей противоположную. А трёхмерная развертка четырёхмерного гиперкуба будет состоять из исходного куба, шести кубов, «вырастающих» из него, плюс ещё одного — конечной «гиперграни».

Свойства тессеракта представляют собой продолжение свойств геометрических фигур меньшей размерности в четырёхмерное пространство.

Проекции

На двухмерное пространство

Данная структура сложна для воображения, но возможно спроектировать тессеракт в двухмерные или трёхмерные пространства. Кроме того, проектирование на плоскость позволяет легко понять расположение вершин гиперкуба. Таким образом, можно получить изображения, которые больше не отражают пространственные отношения в пределах тессеракта, но которые иллюстрируют структуру связи вершин, как в следующих примерах:


На трёхмерное пространство

Проекция тессеракта на трёхмерное пространство представляет собой два вложенных трёхмерных куба, соответствующие вершины которых соединены между собой отрезками. Внутренний и внешний кубы имеют разные размеры в трехмерном пространстве, но в четырёхмерном пространстве это равные кубы. Для понимания равности всех кубов тессеракта была создана вращающаяся модель тессеракта.



Шесть усеченных пирамид по краям тессеракта — это изображения равных шести кубов.
Стереопара

Стереопара тессеракта изображается как две проекции на трёхмерное пространство. Такое изображение тессеракта разрабатывалось с целью представить глубину, как четвёртое измерение. Стереопара рассматривается так, чтобы каждый глаз видел только одно из этих изображений, возникает стереоскопическая картина, воспроизводящая глубину тессеракта.

Развёртка тессеракта

Поверхность тессеракта может быть развёрнута в восемь кубов (аналогично тому, как поверхность куба может быть развернута в шесть квадратов). Существует 261 различная развёртка тессеракта. Развёртки тессеракта могут быть подсчитаны нанесением на граф соединённых углов.

Тессеракт в искусстве

У Эдвине А. «Новая Равнина Абботта», гиперкуб выступает рассказчиком.
В одном эпизоде «Приключений Джимми Нейтрона»: «Мальчик-гений» Джимми изобретает четырёхмерный гиперкуб, идентичный фолдбоксу из романа «Дорога славы» 1963 Хайнлайна.
Роберт Э. Хайнлайн упоминал гиперкубы, по крайней мере, в трёх научно-фантастических рассказах. В «Дом четырех измерений» («Дом, который построил Тил») (1940) он описал дом, построенный как развёртка тессеракта.
В романе «Дорога славы» Хайнлайна описана гиперразмерная посуда, которая была изнутри больше, чем снаружи.
Рассказ Генри Каттнера «Mimsy Were the Borogoves» описывает развивающую игрушку для детей из далёкого будущего, по строению похожую на тессеракт.
В романе Алекса Гарленда (1999), термин «тессеракт» используется для трехмерной развёртки четырёхмерного гиперкуба, а не гиперкуба непосредственно. Это метафора, призванная показать, что познающая система должна быть шире познаваемой.
Сюжет фильма «Куб 2: Гиперкуб» сосредотачивается на восьми незнакомцах, пойманных в ловушку в «гиперкубе», или сети связанных кубов.
Телесериал «Андромеда» использует тессеракт-генераторы как устройство заговора. Они прежде всего предназначены, чтобы управлять пространством и временем.
Картина «Распятие на кресте» (Corpus Hypercubus) Сальвадора Дали (1954)
Комиксы «Nextwave comic book» изображают средство передвижения, включающее в себя 5 зон тессеракта.
В альбоме Voivod Nothingface одна из композиций названа «В моём гиперкубе».
В романе Энтони Пирса «Маршрут Куба» одна из орбитальных лун Международной ассоциации развития называется тессерактом, который был сжат в 3 измерения.
В сериале «Школа „Чёрная дыра“» в третьем сезоне есть серия «Тессеракт». Лукас нажимает на секретную кнопку и школа начинает складываться как математический тессеракт.
Термин «тессеракт» и производный от него термин «тессировать» встречается в повести Мадлен Л’Энгл «Складка времени»

Начнём с объяснения, что же такое четырёхмерное пространство.

Это - одномерное пространство, то есть просто ось OX. Любая точка на ней характеризуется одной координатой.


Теперь проведём ось OY перпендикулярно оси OX. Вот и получилось двумерное пространство, то есть плоскость XOY. Любая точка на ней характеризуется двумя координатами - абсциссой и ординатой.


Проведём ось OZ перпендикулярно осям OX и OY. Получится трёхмерное пространство, в котором у любой точки есть абсцисса, ордината и аппликата.


Логично, что четвёртая ось, OQ, должна быть перпендикулярной осям OX, OY и OZ одновременно. Но мы не можем точно построить такую ось, и потому остаётся только попытаться представить её себе. У каждой точки в четырёхмерном пространстве есть четыре координаты: x, y, z и q.

Теперь посмотрим, как появился четырёхмерный куб.


На картинке изображена фигура одномерного пространства - линия.


Если сделать параллельный перенос этой линии вдоль оси OY, а потом соединить соответствующие концы двух получившихся линий, получится квадрат.


Аналогично, если сделать параллельный перенос квадрата вдоль оси OZ и соединить соответствующие вершины, то получится куб.


А если сделать параллельный перенос куба вдоль оси OQ и соединить вершины двух этих кубов, то мы получим четырёхмерный куб. Кстати, он называется тессеракт .

Чтобы нарисовать куб на плоскости, нужно его спроецировать . Наглядно это выглядит так:

Представим, что в воздухе над поверхностью висит каркасная модель куба, то есть как бы «сделанная из проволоки», а над ней - лампочка. Если включить лампочку, обвести карандашом тень от куба, а потом выключить лампочку, то на поверхности будет изображена проекция куба.

Перейдём к немного более сложному. Ещё раз посмотрите на рисунок с лампочкой: как видите, все лучи сошлись в одной точке. Она называется точкой схода и используется для построения перспективной проекции (а бывает и параллельная, когда все лучи параллельны друг другу. Результат - не создаётся ощущения объёма, но она легче, и при том если точка схода достаточно сильно удалена от проецируемого объекта, то разница между этими двумя проекциями мало заметна). Чтобы спроецировать данную точку на данную плоскость, используя точку схода, нужно провести прямую через точку схода и данную точку, а потом найти точку пересечения получившейся прямой и плоскости. А для того, чтобы спроецировать более сложную фигуру, скажем, куб, нужно спроецировать каждую его вершину, а потом соответствующие точки соединить. Следует заметить, что алгоритм проекции пространства на подпространство можно обобщить для случая 4D->3D, а не только 3D->2D.

Как я уже говорил, мы не можем себе точно представить, как выглядит ось OQ, равно как и тессеракт. Зато мы можем получить ограниченное представление о нём, если мы спроецируем его на объём, а потом нарисуем это на экране компьютера!

Теперь поговорим о проекции тессеракта.


Слева находится проекция куба на плоскость, а справа - тессеракта на объём. Они довольно схожи: проекция куба выглядит как два квадрата, маленький и большой, один внутри другого, и у которых соответствующие вершины соединены линиями. А проекция тессеракта выглядит как два куба, маленький и большой, один внутри другого, и у которых соответствующие вершины соединены. Но мы все видели куб, и можем с уверенностью сказать, что и маленький квадрат, и большой, и четыре трапеции сверху, снизу, справа и слева от маленького квадрата, на самом деле являются квадратами, при чём равными. И у тессеракта тоже самое. И большой куб, и маленький куб, и шесть усечённых пирамид по бокам от маленького куба - это всё кубы, при чём равные.

Моя программа умеет не только рисовать проекцию тессеракта на объём, а ещё и вращать его. Рассмотрим, как делается это.

Для начала я вам расскажу, что такое вращение параллельно плоскости .

Представьте себе, что куб вращается вокруг оси OZ. Тогда каждая из его вершин описывает окружность вокруг оси OZ.

А окружность - фигура плоская. И плоскости каждой из этих окружностей параллельны между собой, и в данном случае параллельны плоскости XOY. То есть мы можем говорить не только о вращении вокруг оси OZ, а ещё и о вращении параллельно плоскости XOY.Как видим, у точек, которые вращаются параллельно оси XOY меняются только абсцисса и ордината, аппликата же остаётся неизменной И, вообще-то, мы можем говорить о вращении вокруг прямой только тогда, когда имеем дело с трёхмерным пространством. В двумерном всё вращается вокруг точки, в четырёхмерном - вокруг плоскости, в пятимерном пространстве мы говорим о вращении вокруг объёма. И если вращение вокруг точки мы можем себе представить, то вращение вокруг плоскости и объёма - что-то немыслимое. А если будем говорить о вращении параллельно плоскости, то тогда в любом n-мерном пространстве точка может вращаться параллельно плоскости.

Многие из вас, вероятно, слышали о матрице поворота. Умножив точку на неё, получим точку, повёрнутую параллельно плоскости на угол фи. Для двумерного пространства она выглядит так:

Как умножать: икс точки, повёрнутой на угол фи = косинус угла фи*икс первоначальной точки минус синус угла фи*игрек первоначальной точки;
игрек точки, повёрнутой на угол фи=синус угла фи*икс первоначальной точки плюс косинус угла фи*игрек первоначальной точки.
Xa`=cosф*Xa - sinф*Ya
Ya`=sinф*Xa + cosф*Ya
, где Xa и Ya - абсцисса и ордината точки, которую нужно повернуть, Xa` и Ya` - абсцисса и ордината уже повёрнутой точки

Для трёхмерного пространства это матрица обобщается следующим образом:

Вращение параллельно плоскости XOY. Как видим, координата Z не меняется, а меняются только X и Y
Xa`=cosф*Xa - sinф*Ya + Za*0
Ya`=sinф*Xa +cosф*Ya + Za*0
Za`=Xa*0 + Ya*0 + Za*1 (по сути, Za`=Za)


Вращение параллельно плоскости XOZ. Ничего нового,
Xa`=cosф*Xa + Ya*0 - sinф*Za
Ya`=Xa*0 + Ya*1 + Za*0 (по сути, Ya`=Ya)
Za`=sinф*Xa + Ya*0 + cosф*Za


И третья матрица.
Xa`=Xa*1 + Ya*0 + Za*0 (по сути, Xa`=Xa)
Ya`=Xa*0 + cosф*Ya - sinф*Za
Za`=Xa*0 + sinф*Ya + cosф*Za

А для четвёртого измерения они выглядят вот так:


Думаю, вы уже поняли, что на что множить, потому лишний раз расписывать не буду. Зато замечу, что она делает то же самое, что и матрица для поворота параллельно плоскости в трёхмерном пространстве! И та, и эта изменяют только ординату и аппликату, а остальные координаты не трогают, потому её можно использовать и в трёхмерном случае, просто не обращая внимания на четвёртую координату.

А вот с формулой проекции не всё так просто. Сколько я ни читал форумов, мне не подошёл ни один из способов проекции. Параллельная мне не подходила, так как проекция не будет выглядеть объёмной. В одних формулах проекции для нахождения точки нужно решить систему уравнений(а я не знаю, как научить компьютер их решать), другие я просто-напросто не понял… В общем, я решил придумать свой способ. Рассмотрим для этого проекцию 2D->1D.


pov значит «Point of view» (точка зрения), ptp значит «Point to project» (точка, которую нужно спроецировать), а ptp` - это искомая точка на оси OX.

Углы povptpB и ptpptp`A равны как соответствующие(пунктирная линия параллельна оси OX, прямая povptp - секущая).
Икс точки ptp` равен иксу точки ptp минус длина отрезка ptp`A. Этот отрезок можно найти из треугольника ptpptp`A: ptp`A = ptpA/тангенс угла ptpptp`A. Мы можем найти этот тангенс из треугольника povptpB: тангенс угла ptpptp`A = (Ypov-Yptp)(Xpov-Xptp).
Ответ: Xptp`=Xptp-Yptp/тангенс угла ptpptp`A.

Я не стал подробно расписывать этот алгоритм тут, так как там куча частных случаев, когда формула несколько меняется. Кому это интересно - посмотрите в исходниках программы, там всё расписано в комментариях.

Для того, чтобы спроецировать точку трёхмерного пространства на плоскость, просто рассмотрим две плоскости - XOZ и YOZ, и для каждой из них решим эту задачу. В случае четырёхмерного пространства нужно рассмотреть уже три плоскости: XOQ, YOQ и ZOQ.

И наконец, про программу. Она действует так: инициализировать шестнадцать вершин тессеракта -> в зависимости от введённых пользователем команд повернуть его -> спроецировать на объём -> в зависимости от введённых пользователем команд повернуть его проекцию -> спроецировать на плоскость -> нарисовать.

Проекции и повороты я написал сам. Они работают по формулам, которые я только что описал. Библиотека OpenGL рисует линии, а так же занимается смешиванием цветов. А координаты вершин тессеракта вычисляются таким образом:

Координаты вершин линии с центром в начале координат и длинной 2 - (1) и (-1);
- " - " - квадрата - " - " - и ребром длинной 2:
(1; 1), (-1; 1), (1; -1) и (-1; -1);
- " - " - куба - " - " -:
(1; 1; 1), (-1; 1; 1), (1; -1; 1), (-1; -1; 1), (1; 1; -1), (-1; 1; -1), (1; -1; -1), (-1; -1; -1);
Как можно было заметить, квадрат - это одна линия над осью OY и одна линия под осью OY; куб - это один квадрат спереди от плоскости XOY, и один за ней; тессеракт - это один куб по ту сторону объёма XOYZ, и один - по эту. Но куда легче воспринять это чередование единиц и минус единиц, если их записать в столбик

1; 1; 1
-1; 1; 1
1; -1; 1
-1; -1; 1
1; 1; -1
-1; 1; -1
1; -1; -1
-1; -1; -1

В первом столбце один и минус один чередуются. Во втором столбце сначала идёт два плюса, потом два минуса. В третьем - четыре плюс единицы, а потом четыре минус единицы. Это были вершины куба. У тессеракта их в два раза больше, и потому нужно было написать цикл для их объявления, иначе очень легко запутаться.

Моя программа так же умеет рисовать анаглиф. Счастливые обладатели 3D-очков могут наблюдать стереоскопическую картинку. В рисовании картинки нет ничего хитрого, просто рисуется две проекции на плоскость, для правого и левого глаз. Зато программа становится намного более наглядной и интересной, а главное - даёт лучшее представление о четырёхмерном мире.

Менее значительные функции - подсветка одной из граней красным, чтобы лучше можно было разглядеть повороты, а так же мелкие удобства - регуляция координат точек-«глаз», увеличение и уменьшение скорости поворота.

Архив с программой, исходником и инструкцией пользования.