Acsocad

3D объект


Обозначение


Описание

Блок предназначен для реализации рисования с использованием OpenGL на основе получаемых в процессе моделирования данных.

Выбор 3D-объекта из списка

Для выбора 3D-объекта из списка необходимо на дополнительной панели инструментов нажать на кнопку "Импорт 3D" и в меню выбрать необходимый объект.  



Для выбора доступны следующие объекты:
- график (в осях x,y), график RT (осциллограф, предназначенный для использования в режиме реального времени), график 3D (3D-поверхность с градиентной закраской);
- индикаторы: искусственный горизонт и компас;
- поверхности: сетка, поверхность, сфера, дорога, вода;
- объекты: точки и линии;
- маятник;
- обратный маятник;
- пружина;
- двигатель;
- манипулятор;
- танк;
- корабль;
- самолет;
- ракета-носитель.
На 3D-объект с отметкой "Среда:" и "Объект:" первым входом подается вектор из 6 элементов: координаты x, y, z и угол поворота по осям rx, ry, rz. Например, входное воздействие со значением "[0 0 0; 0 0 0]". В этом случае объект построится в начале системы координат.
Следующее входное воздействие - это параметры конкретного объекта (длина, наклон и т.д.).

Программирование объекта

Для написания кода в пакете моделирования необходимо выделить 3D-объект и нажать на кнопку "Изменить код" в дополнительной панели инструментов.


Загрузка программы рисования объекта

В меню "Импорт 3D" имеется возможность загрузить внешнюю программу из файла формата acs3dc для построения 3D-объекта.
Файл должен содержать функцию ACSGL, в которую передается:
state - состояние: 0 - при инициализации, 1 - при обычной прорисовке, 2 - при завершении
UN - число доступных подключенных входов объекта
S - шаг моделирования
N - текущее число снятых точек
t - текущее время моделирования
U[i] - текущее значение i-го входа (U[0] - первый вход, U[1] - второй вход, ...)
dN - число точек в хранилище
dT[0...dN-1] - массив времени моделирования в хранилище
dU[i][0...dN-1] - массив значения i-го входа в хранилище
userdata - пользовательская переменная (при инициализации в неё может быть выделена память)

void ACSGL(char state, long UN, double S, long N, double t, double* U, long dN, double* dT, double** dU, void** userdata, double* cam_scale, double* cam_rx, double* cam_ry, double* cam_rz, double* cam_px, double* cam_py, double* cam_pz){
 
if(state==0){} // Выполняется при инициализации
if(state==2){return;} // Выполняется при выходе
// далее производится требуемое рисование
}

Сцена

Несколько 3D-объектов с разными координатами возможно расположить в одном окне, для этого создается дополнительный 3D-объект, на дополнительной панели инструментов нажимается "Импорт 3D", в меню выбирается "Режим сцены" и задается порядковый номер сцены.
Далее на модели выделяется необходимый 3D-объект и на дополнительной панели инструментов нажимается кнопка "На сцене" и в появившемся окне выбирается сцена, в которой будет отрисовываться этот 3D объект.

Пример - построение локсодромы в 3d



 
Рейтинг@Mail.ru
Все материалы сайта принадлежат лично Василию Щербакову.
Допускается использование материалов в некоммерческих или учебных целях с указанием ссылки на этот сайт.