Разберем пример автоматического и ручного активного управления трехмерным объектом

Этот рисунок создан пультом примитивов Stratum или в 3Dstudio. Справа указаны имена объектов.

Разберем пример автоматического и ручного активного управления трехмерным объектом - student2.ru

Рис.1.0. Пример трехмерной сцены курсовой работы

Создайте новый проект, вставьте имидж GraphicSpace. Поскольку содержимое окна будет считываться из файла 3d.vdr, то установим переменную FileName в 3d.vdr (либо полный путь к файлу). Установим на схеме имидж Proection3D. Имидж Proection3D может создавать новую проекцию трехмерного пространства, но может и использовать уже заранее созданную и нарисованную. Для этого нужно в его переменной ObjectName установить имя уже существующей проекции. У нас это 3d. Запустите проект на выполнение и проверьте, что номер трехмерного пространства не равен 0 (переменная hSpace3d у имиджа Proection3D ). Для того, чтобы вид трехмерного пространства полностью располагался в окне установите переменную Control (у имиджа Proection3D) равной 6. Запустите проект на выполнение.

Теперь будем перемещать тор (трехмерный объект TORE01) вдоль цилиндра (по оси OY). Для этого установим имидж Move3d. Соединим связью переменные hSpace3d этого имиджа и имиджа Proection3D. Зададим имя перемещаемого объекта (переменная ObjName) - TORE01, и объекта, в системе координат которого осуществляется перемещение (переменная BaseName) - CYLINDER.

Внимание! При задании имен большие и маленькие буквы различаются.

Создайте новый имидж (имидж управления), текст которого будет задавать закон перемещения объекта:

t:=t+0.1
y:=y0+r*sin(t+f),

где y0 - начальное положение, r - амплитуда, f - фаза, t - время. Соединим переменные y нового имиджа и Move3d. Задайте начальные значения переменных (y0, r, f). Например (5, 4, 0). Запустите проект на выполнение, красный тор должен выполнять поступательные движения вдоль оси OY цилиндра. Аналогично установим перемещения для красного и синего торов. Вместо создания новых имиджей следует вставлять созданный вами имидж, либо использовать копирование. Также задайте начальные значения переменных (y0, r, f).

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

Организуем вращение шарика вокруг тора. Для этого установим имидж Move3d. Соединим связью переменные hSpace3d этого имиджа и имиджа Proection3D. Зададим имя перемещаемого объекта (переменная ObjName) - SPHERE, и объекта в системе координат которого осуществляется перемещение (переменная BaseName) - CYLINDER. Создайте новый имидж, текст которого будет задавать закон перемещения шарика.

Вращение по малому радиусу:

a1:=a1+0.2
y:=0.16*r1*sin(~a1)
_x:=r1*cos(~a1)

Вращение по большому радиусу

a:=a+0.02
z:=(r+~_x)*sin(a)
x:=(r+~_x)*cos(a)

Задайте начальные значения переменных: r1- 15, r - 40. Соедините переменные x,y,z нового имиджа и Move3d. Из библиотеки Controls.Lib установите управлятор Vslider и прицепите его переменную Value, например, на переменную rимиджа управления. Не забудьте установить пределы управления (переменная max), например 40. Теперь Вы получили управляемый пользователем трехмерный объект, реализовав активную его анимацию.

Наши рекомендации