Да, отойдём от темы delphi и парсеров сегодня. Просто немного о насущном.

Почему такой пост? Вот, например, был один про 3d-движок на delphi, который очень условно можно таковым назвать. Просто пересчёт координат, да и то не лучшим способом. Теперь мы поступим умнее, но будем уже всё делать в маткаде. А что? Тоже ведь программирование.

Сначала вкратце о том, как рисовать отрезками на графике в MathCAD: нужно создать два вектора одного размера, которые будут содержать координаты точек, X и Y соответственно. И эти точки маткад сам соединит отрезками, если эти вектора указать в графике. Пример:
Рисование на графике MathCAD

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

Зададим координаты точек куба:
Куб в маткад

Сейчас уже практически ночь, и ничего умнее такой функции не придумал :) Можно проще, я уже так делал, но файл остался на другом компе. Да и ладно. Имеем восемь точек:
Точки куба MathCAD

Вывел чисто посмотреть, в конечном файле такого быть не должно. Теперь как нужно соединить эти точки, чтобы были видны все ребра куба (несколько отрезков повторяются – провести «чисто» не получится):
Точки куба

Понятно? Хорошо, вернёмся к этому порядку чуть позже, когда будем полностью выводить повёрнутый куб. Как помним, эти точки находятся в системе, которая повёрнута относительно основной. Как повёрнута? Да конечно же на три угла! Допустим, мы знаем все три угла, но как нам пересчитать координаты точек? Всё просто: используем матрицы поворота. Три матрицы: поворот на угол по оси X, по оси Y и по оси Z, вот:
Матрицы поворота и пересчёт в MathCad

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

В трёхмерном пространстве точки получили, как выводить будем? Достаточно одной из проекций, например, на плоскость 0xy. Теперь пора задать два вектора, где по порядку, который расписан моим карандашом на одной из картинок выше, будут идти x- и y-координаты точек:
Вектора с точками куба MathCAD

Оптимизируйте код, если есть желание, мне сейчас лень. А там есть что оптимизировать. Что нам ещё понадобится для анимации: переменная FRAME. Без анимации она равна нулю. Во время анимации – номеру кадра. У нас она будет от 1 до 100. Зададим законы изменения углов для анимации:
Рандомные функции
Задали рандомные функции (читай наобум, авось красиво получится вращение). Строим!
Рисунок куба MathCAD

Пока не очень убедительно? Запускаем анимацию:
Анимация MathCAD

Готовое видео:

При копировании материала обязательно оставляем прямую ссылку на http://parsers.info.