Задание 1. Построение схемы
Постройте схему, отображающую двухмерную круговую диаграмму из 4 секторов (красный, зеленый, синий и желтый). С помощью управляторов проверьте работоспособность диаграммы.
Создайте новый проект. Поместите на главную схему имидж GraphicSpace.
Создайте новый имидж (например A01) с текстом:
a := a1 + a2 + a3 + a4
x1 := (a1*2*PI) / ~a
x2 := (a2*2*PI) / ~a
x3 := (a3*2*PI) / ~a
x4 := (a4*2*PI) / ~a
b1 := x1
b2 := x1 + x2
b3 := x1 + x2 + x3
b4 := 2*pi //x1 + x2 + x3 + x4
c1 := "красный " + String(x1*100 / (x1 + x2 + x3 + x4)) + "%"
c2 := "синий " + String(x2*100 / (x1 + x2 + x3 + x4 )) + "%"
c3 := "зеленый " + String(x3*100 / (x1 + x2 + x3 + x4 )) + "%"
c4 := "желтый " + String(x4*100 / (x1 + x2 + x3 + x4 )) + "%"
Назначение переменных :
a1,a2,a3,a4 | входные величины, |
a | сумма входных величин, |
x1,x2,x3,x4 | относительные углы поворота секторов в радианах, |
b1,b2,b3,b4 | абсолютные углы поворота секторов в радианах, |
с1,c2,c3,c4 | текстовые переменные, содержащие величины секторов в процентах, |
Установите на схему четыре имиджа Pie (сектор) для отображения секторов диаграммы. Соедините между собой переменные x,y,r1,r2 во всех имиджах для согласования центров. Установите в переменные имиджей Pie x,y - координаты диаграммы (например 100,100), r1,r2 - радиусы (например 60,60) и в BrushColor - цвет каждого сектора. Соедините переменные b1,b2,b3,b4 имиджа A01 c переменными angle1 и angle2 каждого сектора. Установите на схему четыре имиджа VSlider (управлятор) для задания величин секторов. Соедините переменные Value каждого из них с переменными a1,a2,a3,a4 имиджа A01 соответственно. Установите на схему четыре имиджа Text (текст) для отображения величин секторов в процентах. Установите переменные x,y - координаты текста и соедините переменные text каждого из них с переменными c1,c2,c3,c4 имиджа A01 соответственно.
Поясним значения углов. Первый сектор рисуется от 0 до b1. Второй сектор от b1 до b2. Третий сектор от b2 до b3. Четвертый сектор от b3 до 2PI или до b4. Поэтому первому сектору требуется подать b1 на angle2. angle1 у него изначально равен 0. Второму сектору b1 на angle1 и b2 на angle2. Третьему и четвертому аналогично: b3 на angle1 и b4 на angle2, или b3 на angle1 а angle2 установить в 2pi, что равно 6.28236.
Обратите внимание на то, что в процессе расчета может возникнуть деление на 0. Поэтому при возникновении этого сообщения выбирайте кнопку "Больше не замечать" и запускайте проект вновь. |
Пример собранной схемы:
Результаты ее работы:
Форма отчета:Сохраните проект со своей работой и покажите преподавателю.
Выводы: В результате выполнения лабораторной работы студенты должны научиться построению круговой двухмерной диаграммы.
Вопросы к защите лабораторной работы
1. Каково назначение имиджа GraphicSpace?
2. Ограничено ли количество секторов в круговой двухмерной диаграмме?
- Лабораторная работа 7
Тема:Трехмерная графика.
Цель: Краткое знакомство с трехмерной графикой в среде Stratum Computer.
Общие сведения:
Трехмерные объекты существуют в рамках трехмерного пространства и могут быть визуализированы в специальном двухмерном объекте: проекции трехмерного пространства. Трехмерное пространство находится в двухмерном пространстве (записывается вместе с ним в файл). Визуализация трехмерных объектов осуществляется в проекции трехмерного пространства, большинство из параметров которой определяются выбранной в проекции камерой. Камера - это специальный графический объект, определяющий направление взгляда и координаты наблюдателя, а также и другие параметры, влияющие на отображение. Конструирование трехмерных объектов можно производить в программном продукте 3d Studio и импортировать их в Stratum. Простейшие трехмерные объекты можно создавать с Stratume, для этого следует в режиме редактирования трехмерного пространства нажать на кнопку с изображением соответствующего примитива.
Операции с графическими 3D объектами.
Имиджи операций (управления объектами) располагаются в библиотеке GRAPH3D.LIB. Во всех имиджах имеется переменная hSpace3d, задающая дескриптор (уникальный номер) трехмерного пространства. Эту переменную можно устанавливать либо по связи, либо определить ее в имидже уровнем выше.
![]() | Move3d – управление перемещением графического объекта |
![]() | Resize3d – управление масштабом графического объекта |
![]() | Rotate3d – управление вращением графического объекта |
Данные имиджи во многом схожи и имеют одинаковые переменные HANDLE hSpace3d,hBase,hObject STRING ObjName,BaseName
Имя | Тип | Назначение |
hSpace3d | HANDLE | Дескриптор трехмерного пространства. Если эта переменная не устанавливается по связи, то она берется из переменной имиджа уровнем выше. |
hBase | HANDLE | Дескриптор объекта, в локальной системе координат которого происходят эволюции объекта. |
hObject | HANDLE | Дескриптор управляемого объекта. |
ObjName | STRING | Имя управляемого объекта. |
BaseName | STRING | Имя объекта, в локальной системе координат которого происходят эволюции объекта. |
Кроме этого имиджи имеют еще и специальные переменные.
![]() | Move3d | FLOAT x,y,z. Координаты объекта. В момент старта имидж получает координаты 3d объекта и записывает их в эти переменные. В дальнейшем следит за их изменениями и соответственно перемещает 3d объект. |
![]() | Resize3d | FLOAT x,y,z. Коэффициенты масштабирования по соответствующим осям. Коэффициенты изначально устанавливаются в 1. В дальнейшем масштабирование ведется относительно этих первоначальных значений. Поэтому для удобства эти переменные можно установить в другие значения. |
![]() | Rotate3d | FLOAT AxisX,AxisY,AxisZ,Angle,matrix. matrix- номер матрицы, задающей ось поворота, значение этой равно 0, то матрица создается автоматически, используя значения переменных AxisX, AxisY, AxisZ. AxisX, AxisY, AxisZ - координаты вектора, лежащего на оси поворота. Если ось поворота задается через значения этих переменных, то поворот возможен только вокруг оси, проходящей через начало координат. В противном случае координаты следует задавать непосредственно в матрице. Angle - угол поворота. Имидж обеспечивает поворот объекта на этот угол |
Порядок выполнения лабораторной работы: