
- •Методические указания
- •Оглавление Лабораторная работа №1
- •Лабораторная работа № 2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа № 5
- •Лабораторная работа № 6
- •Лабораторная работа № 7
- •Лабораторная работа № 8
- •Лабораторная работа №9
- •Лабораторная работа №10
- •Лабораторная работа №12.
- •Лабораторная работа №13.
- •Лабораторная работа № 14
- •Лабораторная работа № 15
- •Лабораторная работа №16
- •Лабораторная работа №17.
- •Лабораторная работа №18
- •Лабораторная работа №19
- •Лабораторная работа № 20
- •Лабораторная работа №21
- •Лабораторная работа № 22
- •Литература
Лабораторная работа №21
Тема: Создание видеоролика для презентации.
Цель: Изучить возможности создания видеоролика.
Используемые команды: Рисование (Моделирование), Вид (Орбита, Анимация траектории движения), Сервис-Панель управления(3D навигация-Параметры анимации).
Презентация служит для всестороннего показа объекта с динамическим изменением точки зрения. Точка зрения моделируется камерой. Камеры имеют параметры настройки, например, параметр ширины угла зрения. Траектория движения камеры должна быть выбрана с учетом возможности удаления и приближения к объекту. Во время движения камера может смотреть по касательной к траектории движения, смотреть на постоянную неподвижную точку или постоянно менять направление взгляда. Скорость движения камеры регулируется временем записи презентации и длиной траектории перемещения. Презентация записывается в файл специального видеоформата.
Практическое задание:
Построить натюрморт из трехмерных библиотечных объектов.
Задать траекторию движения камеры по спирали.
Записать два видеоролика презентации объекта.
Ход работы:
Построить натюрморт из разноцветных тел, как в предыдущих работах.
Установить Вид-Визуальные стили-Концептуальный.
Командой Вид-орбита-непрерывная задать объектам движение.
Сервис-Панель управления-3D навигация-Параметры анимации (открыть панель навигации, а затем анимации).
Задать 20 кадров в секунду, формат AVI, разрешение 800х600.
Начать запись движения (нажать на красную кнопку, подождать 15 сек.).
Остановить запись, воспроизвести сюжет на экране предварительного осмотра (нажать на зеленый треугольник).
Записать ролик в файл (нажать на черный квадрат).
Выйти из режима орбиты.
Найти ролик и просмотреть его.
Построить спираль вокруг натюрморта. Свойства спирали отрегулировать через меню «Свойства».
Использовать команду Вид-Анимация траектории перемещения (указать движение камеры по траектории спирали, указать цель на вершине какого-нибудь объекта, задать частоту 25 кадров/сек., формат WМV, разрешение 800х600, время 20 сек. Тип представления концептуальный).
Записать презентацию в файл.
Просмотреть файл.
Вопросы для самопроверки:
Какие варианты записи видеороликов были использованы в работе?
Как регулировать скорость движения объектов при записи?
Какие способы задания направления взгляда камеры предлагаются?
Какие форматы видеофайлов предлагаются?
От чего зависит размер файла видеопрезентации?
Лабораторная работа № 22
Тема: Использование графических приложений языка фортран и языка СИ.
Цель работы:
1. Изучить графические возможности языков фортран и СИ.
2. Запрограммировать алгоритм построения диаграммы.
Языки программирования имеют графические возможности, т.е. библиотеки графических примитивов. Для каждого графического примитива имеются подпрограммы-процедуры, позволяющие вызвать, описать и визуализировать объект.
Для работы с графикой необходимо подключить графические библиотеки, например в фортран (Watfor77) *$include путь\gkscover.for. Кроме того, нужно выяснить, как называются соответствующие подпрограммы и какие параметры доступны для настройки в данном языке. Например для языка фортран, команда call block(X1,Y1,X2,Y2,color), рисует прямоугольник, левый нижний угол которого имеет координаты (X1,Y1), а правый верхний (X2,Y2), закрашенный цветом color. Цвета в фортране имеют номера от 0 до 7. В фортране Экран имеет размер 1Х1, то есть левый нижний угол имеет координаты (0,0), а правый верхний (1,1). Необходимо включить графический режим, соответствующий графической карте монитора Call init(0).
В задаче требуется построить диаграмму, отображающую введенные числовые значения. Для оформления диаграммы необходимо организовать диалог с пользователем и узнать общее название диаграммы, а также название всех частей диаграммы. Эта информация будет отображаться в виде заголовка и легенды диаграммы (Рис. 52).
Диалог:
- Название диаграммы.
- Количество частей (максимум 5).
- Название каждой части.
- Численное значение каждой части.
Практическое задание:
Разобрать предложенные тексты программ.
Надписать назначение операторов программ.
Выполнить дополнительное задание.
Рис. 52. Результат работы Диаграммы.
Программа на языке Фортран
*$nolist
*$include с:\WF77\gkscover.for
*$list
Character*80 a(5),h
Integer y(5),b
Real x(5)
Print*, ‘Введите название диаграммы’
Read 10,h
Print*,’Введите количество частей’
Read*,n
Do 1 i=1,n
Print*,’Введите значение ’, i ,’-той части’
Read*,x(i)
Print*,’ Введите описание ’, i ,’-той части’
Read*,a(i)
10 format(a)
1 continue
Do 2 i= 1,n
2 S = S + x(i)
Do 3 i=1,n
3 y(i)=x(i)/S*360
Call init(0)
B=0
C=0.3
D=0.35
Call block (0.,0.,1.,1.,8)
Call block (0.095,0.8, 0.4,0.95,4)
Call text(0.1,0.85,h,5)
Do 4 i=1,n
Call slice(0.5,0.6,0.2,I,b,b+y(i))
B=B+y(i)
Call block(0.1,c,0.14,d,i)
Call text(0.15,c,a(i),i)
C=c-0.05
4 D=d-0.05
End
Вариант программы на языке СИ.
#include <math.h> /* Прототипы математических функций */
#include <conio.h> /* Прототипы функций ввода/вывода на консоль */
#include <stdio.h> /* Прототипы стандартных функций ввода/вывода */
#include <stdlib.h> /* Прототипы универсальных процедур */
#include <graphics.h> /* Прототипы графических функций */
#define Pi 3.1415 /* Объявление константы */
/*
Переменные, используемые в программе, и краткий комментарий к ним
A - Проекция C на ось X
Alpha - Угол между C и A
B - Проекция C на ось Y
C - Расстояние между центром диаграммы и точкой вывода значения
Color - Цвет сектора
DName - Название диаграммы
dR - Центральный угол сектора
E - Переменная общего назначения
Element - Массив, содержащей значения элементов диаграммы(типа double)
Elements - Количество элементов диаграммы
ElementString - Массив, содержащей значения элементов диаграммы(типа char)
GDriver - Тип адаптера
GMode - Режим графики
MaxX - Максимальное значение координаты X в графическом режиме
MaxY - Максимальное значение координаты Y в графическом режиме
Pattern - Тип штриховки
RF - Угол левой границы сектора
RS - Угол правой границы сектора
SE - Сумма элементов диаграммы
*/
main(void)
{
int MaxX, MaxY;
int GDriver, GMode;
char DName[80];
int Elements, E, SE=0, dR=360;
char **ElementString;
double *Element;
int Pattern=1, Color=0;
int RS=0, RF=0;
int A, B, C;
int Alpha;
detectgraph(&GDriver, &GMode); /*Автоматическое определение подходящего режима*/
initgraph(&GDriver, &GMode,""); /*Переход в выбранный графический режим*/
MaxX = getmaxx(); /*В MaxX помещаем максимальную координату по оси X*/
MaxY = getmaxy(); /*B MaxY помещаем максимальную координату по оси Y*/
C = MaxY / 6;
printf("Введите название диаграммы:");
scanf("%s", DName);
printf("Введите количество элементов:");
scanf("%d", &Elements);
ElementString = (char**)malloc(Elements * sizeof(char*));
for (E = 0; E < Elements; E++)
/* Выделяем память под массивы */
ElementString[E]=(char*)malloc(12*sizeof(char));
Element=(double*)malloc(Elements*sizeof(double));
/* Вводим значения элементов */
for (E=0;E<Elements;E++)
{
printf("Введите значение элемента №%d:",E+1);
scanf("%s",ElementString[E]);
Element[E]=atof(ElementString[E]);
SE += Element[E];
}
/* Установка параметров для вывода синего прямоугольника */
setfillstyle(SOLID_FILL,BLUE); /* Залить синим цветом */
bar(0,0,MaxX,MaxY/25); /* Нарисовать прямоугольник */
/* Установка параметров для вывода названия диаграммы */
setcolor(WHITE); /* Цвет белый */
settextjustify(CENTER_TEXT,CENTER_TEXT); /* Центрировать строку относительно CP */
settextstyle(DEFAULT_FONT,0,2); /* Шрифт стандартный, ориентация нормальная, размер символов 2 */
outtextxy(MaxX/2,MaxY/50+2,DName); /* Вывод названия */
/* Установка параметров для вывода белого прямоугольника */
setfillstyle(SOLID_FILL,WHITE); /* Залить белым цветом */
bar(0,MaxY/25,MaxX,MaxY); /* Нарисовать */
/* Установка шрифта для вывода значений элементов */
settextstyle(SMALL_FONT,0,5);
/* Основ ная часть программы */
for (E=0;E<Elements;E++)
{
/* Расчёт нужного цвета и нужной штриховки */
Color ++;
if (Color == 15)
{
Color = 1;
Pattern ++;
}
if (Pattern == 12) Pattern = 1;
/* Параметры закраски сектора */
setfillstyle(Pattern,Color);
setcolor(Color);
/* Расчёт размеров сектора */
RS=RF;
RF=Element[E]/SE*dR+RS;
/* Вывод сектора */
sector(MaxX/2,MaxY/2,RS,RF,MaxY/3,MaxY/3);
/* Установка цвета для вывода значения сектора */
setcolor(WHITE);
/* Расчёт позиции CP */
Alpha = (RS + RF) / 2; /* Расчёт центрального угла */
A = cos(Alpha * Pi / 180) * C; /* Расчёт проекции на ось X */
B = sin(Alpha * Pi / 180) * C; /* Расчёт проекции на ось Y */
/* Вывод значения */
outtextxy(MaxX / 2 + A, MaxY / 2 - B, ElementString[E]);
dR -= RF - RS;
SE -= Element[E];
}
/* Установка параметров для вывода Copyright*/
setcolor(GREEN);
settextjustify(RIGHT_TEXT,TOP_TEXT);
settextstyle(DEFAULT_FONT,0,1);
/* Вывод */
outtextxy(MaxX-10,MaxY-10,"(c) 2009");
/* Задержка до нажатия любой клавиши */
getch();
closegraph(); /* Выход из графического режима */
/* код возврата */
return 23;
}
Дополнительные задания:
Изменить цвет рабочего поля.
Изменить цвет заголовка.
Расположить легенду над диаграммой.
В правом нижнем углу подписать фамилию.
Вопросы для самопроверки:
Какими параметрами описывается отрезок?
Какой стандарт для описания прямоугольного окна?
Как задается цвет объекта?
Как указывается место расположения текста?
Каков алгоритм вычисления угла сектора на диаграмме?