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

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


Это — одномерное пространство, то есть просто ось 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-очков могут наблюдать стереоскопическую картинку. В рисовании картинки нет ничего хитрого, просто рисуется две проекции на плоскость, для правого и левого глаз. Зато программа становится намного более наглядной и интересной, а главное — даёт лучшее представление о четырёхмерном мире.

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

Архив с программой, исходником и инструкцией пользования: www.dropbox.com/s/xilxouqmgnsf6zs/%D0%A2%D0%B5%D1%81%D1%81%D0%B5%D1%80%D0%B0%D0%BA%D1%82.rar (нужно скачать и установить программу Dropbox: www.dropbox.com)

Исходник: docs.google.com/document/d/1sGjBTb-od84Qp_la0LS9tWFZL4aYk-1exUs0Za5_Uq0/edit
Поделиться публикацией
Комментарии 56
    +20
    Вариант улучшения. Сделайте стереопару, как на картинке:

    image
      0
      Хорошая идея, как раз для тех, у кого очков нет. Но расскажи поподробнее, как делаются стереопары.
        +1
        Рендерится со смещением точки «камеры» в пространстве (сначала от одного глаза, потом от второго). Для одиночного объекта в данном случае задача сводится к 2 рендерам, отличающимся поворотом объекта вокруг вертикальной оси на несколько градусов (конкретное значение зависит от удаленности объекта от «глаза» и его размера).
          0
          Ага, понял. Но это получится написать не раньше, чем через неделю.
            +1
            в 2005 еще написал програмку чтоб его вращать поразному:
            www.dropbox.com/s/aplo04jt0kocx9n/FourthCube.exe
              0
              Мне кажется, немного не то. Посмотрите, например, как это реализовано в инди-игре FEZ. Там при его вращении (обычная анимация) сразу видно, что кубик какой-то не трёхмерный. А у Вас, сколько его ни вращай, получается трёхмерный объект, который просто может менять координаты своих вершин по колесу мыши.
                +1
                В данной программе не реализовано вращение параллельно плоскостям XOQ, YOQ и ZOQ, потому и вращается «по-трёхмерному».
                  0
                  Ну просто насколько я вижу, это просто набор трёхмерных точек, и двигаются они по трёхмерным правилам :) Мне кажется, было бы надёжней добавить разноцветные плоскости каждого из всех кубов (чтобы каждый куб в итоге был своего цвета) — будет гораздо наглядней.
                    0
                    именно.
          • НЛО прилетело и опубликовало эту надпись здесь
            –1
            Минут 5 смотрел в анаглифных очках, ничего не понял (
              +1
              Это перекрестная стереопара. Очков не надо — надо скосить глаза таким образом, чтобы обе картинки слились в одну. Это напрягает глаза, но лично мне больше нравится так, чем через анаглиф.
                0
                Прошу прощения, в архиве, который ты скачал точка схода была слишком близко к тессеракту. Скачай ещё раз, и посмотри снова. Архив был обновлён.

                Если не помогло, отрегулируй положение точек схода( как — написано в инструкции). Когда увидишь чёткую картинку, а не две размытые, тогда и должен появиться 3D-эффект.
                  0
                  Ты смотрел на анаглиф, который рисовала программа, или на стереопару Banzeq'a? Стереопары смотрятся без очков. Я делаю так: однин палец прикладываю к правой щеке так, чтобы правый глаз видел только правое изображение, потом вторым пальцем закрываю правое изображение левому глазу. В итоге я вижу одну картинку, но объёмную. Правда, косить глаза я не умею, и потому руки заняты.

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

                    чтобы кончик карандаша указывал для каждого глаза на один и тотже фрагмент одного из рисунков. И постепернно переносить внимание с предмета на картинку.
                      +2
                      Вы заставили меня прослезится.
                        +1
                        Глаза болят?

                        Вообще, способ отличный, но очень сложно найти нужное положение карандаша.
                        0
                        Я умею сводить две картинки в одну нормальным способом (под «нормальным способом» я подразумеваю «взгляд сквозь», т.е. не приближение точки фокуса, а наоборот, отдаление). На вашей картинке я чуть не сломал глаза, но свёл воедино два крайних изображения. Скажу я вам, приятного мало. И стереоскопический эффект почти не виден, потому что глаза болят и напряжены очень.
                          0
                          Я поставил Zoom=75% (на 22-дюймовом экране), тогда при взгляде «сквозь» крайние изображения свелись легко. И похоже, что со стереоэффектом там перебор (слишком большая выбрана база).
                            0
                            Вон что. А я решил проблему по-старинке — сел подальше от ноутбука :)
                          0
                          Бывают обратные стереопары. Местами поменять левое и правое изображения. Тогда точка фокусировки наоборот должна находится за плоскостью изображения. Меньше глаза устают и отличная зарядка для них.
                          0
                          Как накинулись. Не знал. Все понял и все увидел. Но глазам неприятно.
                        +5


                        Чуть глубже в размерностях:
                          0
                          Второе видео завораживает!
                            +14
                            Каждый раз когда слышу про четырех и более мерное пространство чувствую себя умственно отсталым. Так как в моей голове оно не укладывается. Вот и сейчас просмотрев эти ролики я не увидел его. Все что я вижу это трехмерные фигуры у которых изменяется длинна их сторон, а во втором ролике эти стороны с легкостью способны проходить сквозь друг друга. Я понимаю что это все математически рассчитывается и доказывается, но от этого мне только хуже.
                              +1
                              На самом деле это не так сложно. Представьте себе 3хмерный куб, на который вы смотрите под углом, что он кажется двухмерным. Когда вы чуть-чуть меняете угол, появляются другие, «3хмерные» грани.
                              А теперь представьте себе 4хмерный куб, который при правильном угле выглядит как 3хмерных. Но если вы измените угол, то появится еще больше граней. И так дальше.
                                +3
                                Это объяснение из серии «как нарисовать сову» :) Понятно, как оно строится, понятно, как надо представлять, но проблема как раз именно в этом. Дальше третьего измерения представить себе угол, под которым надо посмотреть — самое сложное, потому что этого угла в реальном трехмерном проостранстве просто не существует.
                                  0
                                  Вот! Полностью поддерживаю. Чтобы увидеть тессеракт под нужным углом, нужно, чтобы координата Q у нашего глаза была больше нуля. То есть находилась за пределами объёма XOYZ.
                                0
                                те трехмерные фигуры, которые вы видите, — это проекция четырехмерных фигур. Также как плоская фигура — это проекция трехмерной. Проходящие сквозь друг друга ребра — это «вращение». Вообще мне кажется не совсем корректным вставлять картинки и ролики и подписывать их «4-мерный куб/тор/и т.д.» или как на видео «Tour 6D» Это сбивает с толку. Все эти игры с количеством измерений всё же лучше всего изображаются в математическом виде, а не в виде визуальных представлений.
                              +2
                              Мне кажется основная проблема 4D, то чты мы пытаемся его увидеть на 2D монитора. Есть ли какие-нибудь способы моделирования на столе с помощью спичек и пластилина?
                                0
                                Из спичек делаете куб, делаете куб поменьше и соединяете соответствующие угловые точки спичками же.

                                Можно на пластилине.
                                  0
                                  Но ведь программа и рисует трёхмерную картинку, хоть и на плоскости. Можно сделать из спичек, но зачем, если трёхмерное и так вполне сносно воспринимается с экрана. Основная проблема, на самом деле, в том, что мы воспринимаем тессеракт не как четырёхмерную фигуру, а как набор кубов. У нас в голове не укладывается, что объёмы могут не пересекаться друг с другом, могут быть друг другу перпендикулярны, что в четырёхмерном пространстве существует четыре прямые, которые перпендикулярны между собой.
                                    +1
                                    В том-то и дело, что я хочу представить 4-мерное пространство, а не представить проекцию 4-мерной фигуры на 3D.
                                      0
                                      Ну, этого нам, трёхмерным существам, понять не дано.

                                      Например, для нас вращение куба ( а не его проекции!) параллельно плоскостям XOY, XOZ и YOZ выглядит аналогичным. Когда мы вращаем тессеракт параллельно этим плоскостям, нам такое вращение кажется привычным. Но когда он вращается параллельно плоскостям XOQ, YOQ и ZOQ, это уже непривычно. Мы видим, что в результате поворота на 90 градусов параллельно плоскости YOQ маленький куб перейдёт на место усечённой пирамиды над ним, а усечённая пирамида, которая находилась под ним, станет на место маленького куба. А если бы мы обладали четырёхмерным восприятием, вращение параллельно всем шести плоскостям для нас выглядело бы аналогичным.
                                        +1
                                        Ну, этого нам, трёхмерным существам, понять не дано.

                                        Печально. А может быть есть люди, которые заявляли, что понимают это?
                                          0
                                          Надо спросить у Митио Каку или Брайана Грина. Они там в теории струн 11 пространствами оперируют. Может статься, что научились хотя бы в 4-х измерениях мыслить (:
                                            –1
                                            В релятивистской физике, где расстояния порядка расстояния от звезды до звезды, и скорости, близкие к скорости света, рассматриваю не отдельно пространство и время, а отдельный пространственно-временной континуум. Пространство и время у них измеряются в одних и тех же единицах, и если какое-то событие совершилось в разных точках пространства в одно и то же время, то это не сильно отличается от того, что это событие совершилось в одном и том же месте, но в разное время. Математически доказать это всё можно, а головой понять — нет.

                                            Производить точные вычисления в многомерных пространствах можно так. Четырёхмерное пространство с четырьмя осями рассмотрим, как шесть двумерных( ну или же четыре трёхмерных). А как оперировать с плоскостью мы знаем. Но ещё нужно знать уравнения плоскости, объёма, четырёхмерного объёма… Короче, можно, но сложно.
                                              0
                                              Так в том-то и дело, что это только математически возможно. А хотелось бы именно ощущать эти измерения.
                                            +2
                                            Есть. Я один из них :)
                                              0
                                              В АФСБ есть профессор, который, по заявлению его коллег, свободно оперирует 8-ми мерными пространствами. Вот только подтвердить это довольно сложно.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                            +9
                                            Но вы же представляете трёхмерное пространство, наблюдая всего лишь его проекцию на двумерную сетчатку? Конечно, бинокулярность немного помогает (для близких предметов), но на больших расстояниях уже всё равно, одним или двумя глазами мы смотрим. Тем не менее, мы интерпретируем этот калейдоскоп двумерных картинок как трёхмерное пространство — и некоторые даже верят, что оно действительно существует.
                                            То же самое и с 4D. После того, как вы освоились с трёхмерными сценами, надо понять, каким образом эта сцена может быть центральной проекцией четырёхмерного пространства. А для этого немного напрячь фантазию и представить себе, как будеть выглядеть, например, дом в виде четырёхмерного куба. А теперь тот же дом с крышей в виде кубической пирамиды. Или в виде {3,4} дуопризмы. А теперь нарисуйте на этом доме дверь — в цетре ниженй части одной из стен. И кубическое окно с центре другой стены. Рядом с домом проложите дорогу. И тропинку вокруг неё. Нарисуйте озеро тороидальной формы, заставьте дорогу пройти по внутренней трубке этого тора. За домом вдали разместите гору сфероконической формы, заросшую лесом — как будут выглядеть деревья на склоне… Довольно быстро оказывается, что всё это удобнее «видеть» сразу в 4D, чем вычислять 3D-проекции.
                                            Всё это делается, вот только заниматься надо довольно плотно. Если отвлечься на несколько месяцев, четырёхмерное воображение теряется, и всё приходится начинать почти сначала.
                                              0
                                              Коментарий дня. По крайней мере вы утверждаете, что это возможно и это здорово.
                                                0
                                                Вы довольно точно подметили «Всё это делается, вот только заниматься надо довольно плотно».
                                                Если дать токарю четвертого разряда взглянуть на чертеж трехмерной детали состоящего из двухмерных рисунков в трех плоскостях, он представит его себе за три секунды, а неподготовленный человек потратит на это гораздо больше времени.
                                                  0
                                                  Я работаю с этой программой уже с пол года. Но я не могу с уверенностью сказать, что точно представляю себе то, что описал Mrrl.

                                                  Mrrl, а если тебе дать поиграть в экшн-шутер 4D, то ты тоже уверен на все сто, что поймёшь, как в него играть? Мне лично это представляется научной фантастикой( как, впрочем, и написание экшн-шутера 4D).
                                                    +1
                                                    Интересно, смог бы мозг приспособится к 4д пространству в 3д очках. Это же почти как путешествие в космос.
                                                      0
                                                      Надо будет попробовать… Должно получиться.
                                                      0
                                                      Сильно зависит от реализации. Думаю, что если это будет векторная графика (рёбра и контуры), не слишком перегруженная объектами, да ещё и в стереопредставлении, то шансы разобраться будут. Как раз собираюсь заняться чем-то подобным, но пока не экшн — для начала что-нибудь вроде Сокобана.
                                                    0
                                                    Вспомнился рассказ Роберта Хайнлайна «Дом, который построил Тил»
                                                      0
                                                      Там они бегали по поверхности 4-мерного куба (это гораздо проще себе представить). Причём, склеился этот куб как-то криво (скажем, окно, соединённое со входной дверью, должно быть не в стене, а в полу).
                                                        0
                                                        Видимо у автора, как и у подавляющего большинства были проблемы с пониманием 4-х мерного куба:)
                                                +1
                                                Суть в том что в «реальном» мире мы способны воспроизводить и создавать только трехмерные объекты, так к примеру у нас не получится сделать двухмерный или одномерный объект, даже нарисовав линию на листке мы все равно создадим трехмерный объект, так как ваш лист и чернила имеют ширину высоту и глубину на микро уровне. Однако измерения производимые в одномерном и двухмерном пространстве имеют большую практическую ценность, так для измерения длинны мы используем одномерное пространство, а для создания чертежей или игр для планшета — двухмерное. Четырехмерное пространство также имеет большую практическую ценность, для примера для осуществления расчета маршрутов на большие расстояниях при передвижении космического корабля, полезно будет использовать не только пространство (XYZ) но и время (T).
                                                  0
                                                  Наверно стоит пояснить важность временной координаты.
                                                  На поверхности земли наше пространство статично и мало подвержено изменению, дома, реки, дороги редко перемещаются, поэтому тут достаточно трех координат XYZ. Все меняется когда мы находимся в космосе, земля вращается вокруг своей оси и вокруг нашего солнца, и ее положение в пространстве за 6 месяцев может изменится на 300 млн. км. Также наше солнце вращается вокруг центра галактики и чем дальше мы улетаем тем больше изменяется положение исходной точки. Поэтому навигационные системы космического позиционирования включают в себя четвертое измерение — время (T).
                                                +1
                                                Не могли бы Вы выложить исходник в другое место (или просто положить его в архив с бинарником) — Google Docs требует разрешение на просмотр:
                                                You need permission to access this item.

                                                You are signed in as *** @ gmail.com, but you don't have permission to access this item. You can request access from the owner or choose a different account.
                                                  0
                                                  Хорошо.
                                                  +2
                                                  Сперва подумал у меня déjà vu, а нет — действительно когда-то читал про программу генерирующую проекции кубов и стереопары разных размерностей.
                                                  Тут

                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                  Самое читаемое