Разработка приложения для создания и преобразования графических объектов

 

Министерство образования РБ

Учреждение образования «Витебский государственный технологический университет»

Кафедра «Автоматизация технологических процессов и производств»










Курсовая работа

по дисциплине «Системы компьютерной графики»

Разработка приложения для создания и преобразования графических объектов



Выполнил: студент группы ИТ-1

Репов Бегенч Тиркишмурадович

Проверил: старший преподаватель

кафедры АТПП

Надёжная Наталья Леонидовна





Витебск, 2014


Введение


Данная курсовая работа выполнена на языке программирования высокого уровня C++ с использованием компилятора версии RAD Studio XE4 фирмы Embarcadero Technologies.

Целью данной курсовой работы является демонстрация возможности создания приложения для создания и преобразования графических объектов на языке программирования С++.

Исходя из цели курсовой работы, были выявлены следующие задачи:

разработать структуру программы;

описать графические объекты;

осуществить выбор языка программирования и среды разработки;

описать алгоритм работы программы;

предоставить исходный код программы;

произвести тестирование программы


1. Анализ исходного графического объекта и методов преобразования фигур


Рис. 1. Исходный графический объект представляет собой круг Бэнхема. Объект обладает диаметром величиной d.


Видовыми преобразованиями графических объектов называются преобразования, ведущие к изменению их местоположения, формы, размеров или ориентации. Видовые преобразования разделяются на базовые и комбинированные. Базовые преобразования отвечают только за какой-либо один вид преобразования, а комбинированные - осуществляют сразу несколько видов преобразований. К базовым видовым преобразованиям относятся перенос, масштабирование, отображение. К комбинированным преобразованиям относятся вращение и др.

Масштабирование - это преобразование, при котором объект изменяет свои размеры пропорционально заданным значениям.

Отображение - это такое видовое преобразование при котором объект отображается относительно оси Х или оси Y или относительно начала координат.

В практической реализации видовые преобразования представляют собой операции перемножения двух матриц.

Первая матрица - это матрица координат исходной фигуры Мисх. Вторая - матрица видового преобразования Тпреобр. (переноса, масштабирования, отображения, или вращения). В результате получают результирующую матрицу координат нового положения объекта - Мрез..


1.1 Математическое описание операций преобразования плоских фигур


Матричное уравнение видового преобразования исходной фигуры выглядит следующим образом


Мисх× Тпреобр = Мрез(1)


Здесь Тпреобр - матрица двумерного видового преобразования, третьего ранга, квадратная, способна преобразовывать двумерные объекты, выраженные в однородных координатах, имеет вид:



Каждый элемент этой матрицы отвечает за свой, и только свой вид преобразования:

элементы l и m отвечают за перенос;

элементы b и d отвечают за сдвиг;

элементы a, e и s отвечают за масштабирование и отображение.

Матрица исходных координат фигуры Мисх задается в однородной системе координат, т.е. каждая строка этой матрицы состоит из трех параметров: координаты одной из вершин фигуры по оси X, координаты той же вершины по осиY и скалярного (масштабирующего) множителя h. Скалярный множитель добавляется для того, чтобы можно было выполнять перемножение двух матриц: Мисх и Тпреобр, и кроме этого, он позволяет дополнительно масштабировать координаты фигуры. Как правило, если значения координат фигуры, заданной в однородной системе соответствуют тем же значениям в декартовой системе, то скалярный множитель h равен единице. Тогда матрица исходных координат фигуры, состоящей из k вершин, будет иметь следующий вид



После подстановки Мисх и Тпреобр в уравнение (1) оно будет выглядеть следующим образом



Здесь результирующая матрица координат Мрез определяет новое неортонормированное состояние фигуры в однородной системе координат после преобразования. Координаты неортонормированной матрицы Мрез в большинстве случаев в декартовой системе не применяют поэтому, прежде чем выполнить прорисовку объекта на картинной плоскости (т.е. в декартовой системе координат), необходимо их ортонормировать. Для нормировки результирующих координат объекта параметры последнего столбца матрицы Мрез приводятся к единичному значению (в случае, если они не равны единице), для чего все значения каждой строки матрицы делятся на скалярный множитель hk данной строки и получается Мнорм т.е.




Масштабирование

Матрица масштабирования Тмасшт имеет вид:



где: a - параметр масштабирования в направлении оси X;- параметр масштабирования в направлении оси Y;- параметр общего изменения масштаба (вдоль осей X и Y).

Если они «включены», то a, e, s - любые положительные вещественные числа. Если они «выключены», то их значения равны 1.

Произвольная точка A(x, y) преобразуется с помощью матрицы (10) следующим образом



Выражение (11) показывает, что исходные координаты точки А - x и y изменяются в a и e раз соответственно. Этим обеспечивается изменение масштабов вдоль осей X и Y. Если а и е больше единицы, масштаб фигуры увеличивается, если они меньше единицы (но больше нуля) - уменьшается.

Параметр s, на который делится каждый элемент результирующей матрицы координат при нормировке (для перехода от однородных координат к декартовым) действует на масштаб фигуры в обратно-пропорциональном порядке. Если s больше единицы - масштаб вдоль осей X и Y уменьшается, если меньше единицы - увеличивается.

Отображение

Матрица отображения Тотобр имеет вид



где: a - параметр отображения относительно оси Y;- параметр отображения относительно оси X;- параметр отображения относительно начала координат.

Если параметры отображения a, e, s «включены», то они равны -1, если «выключены», то - +1.

Матрица (12) обеспечивает «зеркальное» отображение, если численные значения параметров a, e, s - равны -1. Если параметры a, e, s отличаются от -1 в большую или меньшую сторону (но не больше 0) они начинают работать одновременно и как параметры масштабирования, вследствие чего преобразованный объект оказывается не только отраженным, но и искаженным. Такое двойное преобразование объекта называется - эффект кривого зеркала.

Поворот вокруг центра координат

=x0 + (x - x0) * cos(a) - (y - y0) * sin(a);=y0+ (y - y0) * cos(a) + (x - x0) *sin(a);


Где х0, у0 - координаты центра фигуры; угол а - угол смещения; х, у - исходные координаты смещаемой точки.

Матрица вращения вокруг центра есть комбинация матриц перемещения опорной точки в центр.


[cos(а) -sin(а)

sin(а) cos(а)]


1.2 Выбор и обоснование языка программирования и среды разработки


Для реализации курсового проекта был выбран C++. При решении поставленной задачи оптимально использовать для создания и преобразования графических объектов язык C++, который является языком высокого уровня и позволяет быстро и эффективно создавать приложения.

Для реализации данного графического объекта была выбрана система программирования C++ версии RAD Studio XE4 фирмы Embarcadero Technologies, так как она предоставляет наиболее широкие возможности для программирования приложений ОС Windows.++ содержит средства разработки программ контролируемой эффективности для широкого спектра задач, от низкоуровневых утилит и драйверов до весьма сложных программных комплексов. В основе C++ лежит язык Симула.

Достоинства С++:

Высокая совместимость с языком Си : код на Си может быть с минимальными переделками скомпилирован компилятором C++. Внешнеязыковой интерфейс является прозрачным, так что библиотеки на Си могут вызываться из C++ без дополнительных затрат, и более того - при определённых ограничениях код на С++ может экспортироваться внешне не отличимо от кода на Си (конструкция extern "C").

Как следствие предыдущего пункта - вычислительная производительность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Один из базовых принципов С++ - «не платишь за то, что не используешь» (см. Философия C++) - то есть ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования. Имеется возможность работы с памятью на низком уровне.

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

Имеется возможность управления константностью объектов (модификаторы const, mutable, volatile).

Использование константных объектов повышает надёжность и служит подсказкой для оптимизации. Перегрузка функций-членов по признаку константности позволяет определять выбор метода в зависимости цели вызова (константный для чтения, неконстантный для изменения). Объявление mutable позволяет сохранять логическую константность при виде извне кода, использующего кэши и ленивые вычисления.

Доступность. Для С++ существует огромное количество учебной литературы, переведённой на всевозможные языки. Язык имеет низкий порог вхождения, но среди всех языков такого рода обладает наиболее широкими возможностями.


1.3 Задание базовой фигуры


Базовая фигура задается с помощью математических формул, которые описывают данные объекты, и методов задания объектов языка программирования с++.

Окружность в данном случае проще реализовать в виде отрисовки двумя полукругами с помощью метода отрисовки секторов вида:

Image->Canvas->Pie(xl,yl,x2, y2,x3,y3,x4,y4)


Параметры xl, yl, x2, у2 определяют круг, частью которого является сектор ; х3, у3, х4 и у4 - прямые - границы сектора . Начальная точка границ совпадает с центром круга. Сектор вырезается против часовой стрелки от прямой, заданной точкой с координатами ( х3, у3), к прямой , заданной точкой с координатами ( х4, у4). Вид границы сектора определяют значения свойства Реn, а вид заливки области , ограниченной линией границы - значения свойства Brush той поверхности , на которой метод рисует .

Для отрисовки дуг внутри белого сектора круга Бэнхема используется метод Arc - отрисовка части дуги окружности.

Инструкция вызова метода в общем виде выглядит так :

>Canvas->Arc(xl,yl,x2, y2,x3,y3,x4,y4) ,


Параметры x1, yl, х2, y2 определяют окружность , частью которого является дуга . Параметры х3 и y3 задают начальную , а х4 и у4 - конечную точку дуги . Начальная (конечная ) точка дуги - это точка пересечения границы окружности и прямой , проведенной из центра эллипса в точку с координатами х3 и y3 ( х4, у4). Метод Arc вычерчивает дугу против часовой стрелки от начальной точки до конечной. Цвет , толщина и стиль линии , которой вычерчивается дуга, определяются значениями свойства Реn поверхности, на которую выполняется вывод .

Для базовой фигуры


M = X +(-D/2)*cos(B *M_PI/180);= Y+(-D/2)*sin(B *M_PI/180);= X + D/2*cos(B *M_PI/180);= Y + D/2*sin(B *M_PI/180);= X+(-3*D/4)*cos(B *M_PI/180)-(-3*D/4)*sin(B *M_PI/180);= Y+(-3*D/4)*cos(B *M_PI/180)+(-3*D/4)*sin(B *M_PI/180);= X+(-D/2+D/32)*cos(B *M_PI/180);= Y+(-D/2+D/32)*sin(B *M_PI/180);= X -(-D/4)*sin(B *M_PI/180);= Y+(-D/4)*cos(B *M_PI/180);= X + D/4*cos(B *M_PI/180)-(-D/4)*sin(B *M_PI/180);= Y+(-D/4)*cos(B *M_PI/180)+D/4*sin(B *M_PI/180);= X+3*D/4*cos(B *M_PI/180);= Y+3*D/4*sin(B *M_PI/180);->PaintBox1->Canvas->Brush->Color=clBlack;->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M , N, M1, N1 );->PaintBox1->Canvas->Brush->Color=clWhite;->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M1, N1, M, N );->PaintBox1->Canvas->Arc(X-D/2+D/32 ,Y-D/2+D/32 ,X+D/2-D/32 ,Y+D/2-D/32, M3, N3, K, L);->PaintBox1->Canvas->Arc(X-D/2+2*D/32 ,Y-D/2+2*D/32 ,X+D/2-2*D/32 ,Y+D/2-2*D/32, M3, N3, K, L);->PaintBox1->Canvas->Arc(X-D/2+3*D/32 ,Y-D/2+3*D/32 ,X+D/2-3*D/32 ,Y+D/2-3*D/32, M3, N3, K, L);->PaintBox1->Canvas->Arc(X-D/2+4*D/32 ,Y-D/2+4*D/32 ,X+D/2-4*D/32 ,Y+D/2-4*D/32, K1, L1, M3, N3);->PaintBox1->Canvas->Arc(X-D/2+5*D/32 ,Y-D/2+5*D/32 ,X+D/2-5*D/32 ,Y+D/2-5*D/32, K1, L1, M3, N3);->PaintBox1->Canvas->Arc(X-D/2+6*D/32 ,Y-D/2+6*D/32 ,X+D/2-6*D/32 ,Y+D/2-6*D/32, K1, L1, M3, N3);->PaintBox1->Canvas->Arc(X-D/2+7*D/32 ,Y-D/2+7*D/32 ,X+D/2-7*D/32 ,Y+D/2-7*D/32, K2, L2, K1, L1);->PaintBox1->Canvas->Arc(X-D/2+8*D/32 ,Y-D/2+8*D/32 ,X+D/2-8*D/32 ,Y+D/2-8*D/32, K2, L2, K1, L1);->PaintBox1->Canvas->Arc(X-D/2+9*D/32 ,Y-D/2+9*D/32 ,X+D/2-9*D/32 ,Y+D/2-9*D/32, K2, L2, K1, L1);->PaintBox1->Canvas->Arc(X-D/2+10*D/32 ,Y-D/2+10*D/32 ,X+D/2-10*D/32 ,Y+D/2-10*D/32, K3, L3 ,K2, L2);->PaintBox1->Canvas->Arc(X-D/2+11*D/32 ,Y-D/2+11*D/32 ,X+D/2-11*D/32 ,Y+D/2-11*D/32, K3, L3 ,K2, L2);->PaintBox1->Canvas->Arc(X-D/2+12*D/32 ,Y-D/2+12*D/32 ,X+D/2-12*D/32 ,Y+D/2-12*D/32, K3, L3 ,K2, L2);



2. РАЗРАБОТКА АЛГОРИТМА РАБОТЫ ПРОГРАММЫ


Программа начинает свою работу. Производится задание значений, после чего с помощью класса FGRClass от событий кнопок в метод Draw передаются первоначальные значения данных. Из метода Draw в таймер передаются данные о местоположении объекта и его характеристика. В таймере происходит обработка данных и проверка корректности условий. В случае корректности условия таймер выполняет отрисовку объекта в соответствии с заданными значениями, в случае несоответствия условий блокирует действие. Процесс отрисовки цикличен, цикл приостанавливается при остановке таймера и возобновляется при его запуске. Закрытие программы выполняется корректно.



3. ОПИСАНИЕ ОСНОВНЫХ КОМПОНЕНТОВ ПРОГРАММЫ И ПОСЛЕДОВАТЕЛЬНОСТИ РАЗРАБОТКИ


Основные компоненты программы: PaintBox1, Timer1, Button1, Panel1, Panel2, Edit1, Button2, Button3, Edit2, Button4, Panel3, Button5, Button6, Button7, Button8, Label1, Label2, Label3, Label4, Label5.1 - поле отображения объекта

Timer1 - таймер для исполнения эмуляции вращения

Button1 - кнопка отрисовки фигуры

Button2 - кнопка изменения масштаба

Button3 - кнопка пуска эмуляции вращения объекта в таймере

Button4 - кнопка остановки эмуляции вращения

Button5 - изменение направления вращения объекта

Button6 - изменение направления вращения объекта

Button7 - кнопка увеличения скорости вращения

Button8 - кнопка уменьшения скорости вращения

Edit1 - поле для ввода числа процентного изменения масштаба фигуры.- поле отображения изменения скорости вращения объекта

В процессе разработки программы вначале производились вычисления для задания базовой фигуры, затем был выбран наиболее подходящий для практической реализации целей и задач язык программирования С++. Был разработан алгоритм работы программы, после чего произошло написание исходного кода.

фигура алгоритм плоский операция


4. ИСХОДНЫЙ КОД ПРОГРАММЫ


----------------------------UNIT2.H------------------------------------

//---------------------------------------------------------------------------

#ifndef Unit2H

#define Unit2H

//---------------------------------------------------------------------------

#include <System.Classes.hpp>

#include <Vcl.Controls.hpp>

#include <Vcl.StdCtrls.hpp>

#include <Vcl.Forms.hpp>

#include <Vcl.ExtCtrls.hpp>

#include <Vcl.Menus.hpp>

//---------------------------------------------------------------------------TForm2 : public TForm

{

__published:// IDE-managed Components*PaintBox1;*Timer1;*Button1;*Panel1;*Panel2;*Edit1;*Button2;*Button3;*Edit2;*Button4;*Panel3;*Button5;*Button6;*Button7;*Button8;*Label1;*Label2;*Label3;*Label4;*Label5;__fastcall Button1Click(TObject *Sender);__fastcall Timer1Timer(TObject *Sender);__fastcall Button3Click(TObject *Sender);__fastcall Button7Click(TObject *Sender);

__fastcall Button8Click(TObject *Sender);__fastcall Button4Click(TObject *Sender);__fastcall Button5Click(TObject *Sender);__fastcall Button6Click(TObject *Sender);__fastcall Button2Click(TObject *Sender);__fastcall gjgjg(TObject *Sender, System::WideChar &Key);__fastcall trththt(TObject *Sender, System::WideChar &Key);

:// User declarations:// User declarations

__fastcall TForm2(TComponent* Owner);

};FGRClass

{:Draw();X,Y,D,B,M,N,M1,N1,M2,N2,M3,N3,K,L,K1,L1;K2,L2,K3,L3;H;Vx, By;

};

//---------------------------------------------------------------------------PACKAGE TForm2 *Form2;

//---------------------------------------------------------------------------

#endif

-------------------- UNIT2.CPP--------------------------------


//---------------------------------------------------------------------------


#include <vcl.h>

#pragma hdrstop


#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}int H = 150;


//---------------------------------------------------------------------------FGR[1];FGRClass::Draw()

{= X +(-D/2)*cos(B *M_PI/180);= Y+(-D/2)*sin(B *M_PI/180);

= X + D/2*cos(B *M_PI/180);= Y + D/2*sin(B *M_PI/180);


= X+(-3*D/4)*cos(B *M_PI/180)-(-3*D/4)*sin(B *M_PI/180);= Y+(-3*D/4)*cos(B *M_PI/180)+(-3*D/4)*sin(B *M_PI/180);

= X+(-D/2+D/32)*cos(B *M_PI/180);= Y+(-D/2+D/32)*sin(B *M_PI/180);

= X -(-D/4)*sin(B *M_PI/180);= Y+(-D/4)*cos(B *M_PI/180);

= X + D/4*cos(B *M_PI/180)-(-D/4)*sin(B *M_PI/180);= Y+(-D/4)*cos(B *M_PI/180)+D/4*sin(B *M_PI/180);

= X+3*D/4*cos(B *M_PI/180);= Y+3*D/4*sin(B *M_PI/180);

->PaintBox1->Canvas->Brush->Color=clBlack;

->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M , N, M1, N1 );->PaintBox1->Canvas->Brush->Color=clWhite;->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M1, N1, M, N );->PaintBox1->Canvas->Arc(X-D/2+D/32 ,Y-D/2+D/32 ,X+D/2-D/32 ,Y+D/2-D/32, M3, N3, K, L);->PaintBox1->Canvas->Arc(X-D/2+2*D/32 ,Y-D/2+2*D/32 ,X+D/2-2*D/32 ,Y+D/2-2*D/32, M3, N3, K, L);->PaintBox1->Canvas->Arc(X-D/2+3*D/32 ,Y-D/2+3*D/32 ,X+D/2-3*D/32 ,Y+D/2-3*D/32, M3, N3, K, L);->PaintBox1->Canvas->Arc(X-D/2+4*D/32 ,Y-D/2+4*D/32 ,X+D/2-4*D/32 ,Y+D/2-4*D/32, K1, L1, M3, N3);->PaintBox1->Canvas->Arc(X-D/2+5*D/32 ,Y-D/2+5*D/32 ,X+D/2-5*D/32 ,Y+D/2-5*D/32, K1, L1, M3, N3);->PaintBox1->Canvas->Arc(X-D/2+6*D/32 ,Y-D/2+6*D/32 ,X+D/2-6*D/32 ,Y+D/2-6*D/32, K1, L1, M3, N3);->PaintBox1->Canvas->Arc(X-D/2+7*D/32 ,Y-D/2+7*D/32 ,X+D/2-7*D/32 ,Y+D/2-7*D/32, K2, L2, K1, L1);->PaintBox1->Canvas->Arc(X-D/2+8*D/32 ,Y-D/2+8*D/32 ,X+D/2-8*D/32 ,Y+D/2-8*D/32, K2, L2, K1, L1);->PaintBox1->Canvas->Arc(X-D/2+9*D/32 ,Y-D/2+9*D/32 ,X+D/2-9*D/32 ,Y+D/2-9*D/32, K2, L2, K1, L1);->PaintBox1->Canvas->Arc(X-D/2+10*D/32 ,Y-D/2+10*D/32 ,X+D/2-10*D/32 ,Y+D/2-10*D/32, K3, L3 ,K2, L2);->PaintBox1->Canvas->Arc(X-D/2+11*D/32 ,Y-D/2+11*D/32 ,X+D/2-11*D/32 ,Y+D/2-11*D/32, K3, L3 ,K2, L2);->PaintBox1->Canvas->Arc(X-D/2+12*D/32 ,Y-D/2+12*D/32 ,X+D/2-12*D/32 ,Y+D/2-12*D/32, K3, L3 ,K2, L2);

}

__fastcall TForm2::Button1Click(TObject *Sender)

{[1].X = 285;[1].Y = 175;[1].D = H;[1].Vx = 0;[1].By = 0;[1].B = 0;

->Caption = "Исходное состояние" ;

}

//---------------------------------------------------------------------------__fastcall TForm2::Timer1Timer(TObject *Sender)

{

[1].B += FGR[1].By;-> Repaint();FGR[1].Draw();


}

//---------------------------------------------------------------------------__fastcall TForm2::Button3Click(TObject *Sender)

{[1].By = 5;-> Text = FGR[1].By;->Enabled = false;->Enabled = true;->Caption = "Заново" ;

}

//--------------------------------------------------------------------------__fastcall TForm2::Button7Click(TObject *Sender)

{->Enabled = true ;[1].By += 5;(FGR[1].By >=180)

{->Enabled = false;

}-> Text = FGR[1].By;( Button6->Enabled )

{ if (FGR[1].By >=0)

{->Enabled = false ;->Enabled = true ;

}-> Text = FGR[1].By;

}( Button5->Enabled )

{(FGR[1].By >=0||FGR[1].By <=180)

{->Enabled = true ;

}-> Text = FGR[1].By;

}

}

//---------------------------------------------------------------------------

__fastcall TForm2::Button8Click(TObject *Sender)

{[1].By -= 5;

(FGR[1].By <=-180)

{->Enabled = false ;

}-> Text = FGR[1].By;( Button6->Enabled )

{(FGR[1].By <=0)

{->Enabled = true ;

}-> Text = FGR[1].By;

}

( Button5->Enabled )

{(FGR[1].By <=0)

{->Enabled = false ;

}->Enabled = true ;-> Text = FGR[1].By;

}


}

//---------------------------------------------------------------------------__fastcall TForm2::Button4Click(TObject *Sender)

{[1].By = 0;-> Text = FGR[1].By;->Caption = "Пуск" ;

}

//---------------------------------------------------------------------------__fastcall TForm2::Button5Click(TObject *Sender)

{[1].By = -FGR[1].By;-> Text = FGR[1].By;:Button7;->Enabled = false;->Enabled = true;

}

//---------------------------------------------------------------------------__fastcall TForm2::Button6Click(TObject *Sender)

{[1].By = -FGR[1].By;-> Text = FGR[1].By;->Enabled = false;->Enabled = true;

}

//---------------------------------------------------------------------------__fastcall TForm2::Button2Click(TObject *Sender)

{[1].Vx =StrToFloat(Edit1 -> Text);

(FGR[1].Vx>=232||FGR[1].Vx<=0)

{(" \n ОШИБКА ЗНАЧЕНИЯ 404 \n Введите рекомендуемые значения, после чего нажмите клавишу МАСШТАБ");

return ; }if (Edit1->Text=="")

{ShowMessage (" \n ОШИБКА ЗНАЧЕНИЯ 404 \n Введите рекомендуемые значения, после чего нажмите клавишу МАСШТАБ");

return ; }if(FGR[1].Vx<=232||FGR[1].Vx>=0)

{FGR[1].D = H * (FGR[1].Vx/100);

}

}

//---------------------------------------------------------------------------__fastcall TForm2::gjgjg(TObject *Sender, System::WideChar &Key)

{((Key!=VK_BACK)&&(Key<'0'||Key>'9'))Key=0;

}

//---------------------------------------------------------------------------__fastcall TForm2::trththt(TObject *Sender, System::WideChar &Key)

{Key=0;

}

//---------------------------------------------------------------------------



5. ПРОВЕРКА КОРРЕКТНОСТИ РАБОТЫ ПРОГРАММЫ В РАЗЛИЧНЫХ РЕЖИМАХ


. Рабочее окно программы с прорисованным объектом



. На этом этапе происходит масштабирование объекта



3. На этом этапе происходит вращение объекта




Список использованной литературы


1.Архангельский А.Я. C++Builder 6. Справочное пособие. Книга 1.Язык C++. М.: Бином 2002 г. --- 544 ил.

2.Архангельский А.Я. C++Builder 6. Справочное пособие. Книга 2. Классы и компоненты. - М.: Бином-Пресс, 2002 г. - 528 с: ил.

.Шикин Е. В., Боресков А. В. Компьютерная графика. Динамика, реалистические изображения. М.: ДИАЛОГ МИФИ, 1996. 288 с.

.Культин Н. Б. C++ Builder в задачах и примерах. - СПб.: БХВ- Петербург, 2005. - 336 с

.Подкур М. Л., Подкур П. Н., Смоленцев Н. К. Программирование в среде Borland C++ Builder с математическими библиотеками MATLAB С/С++. - М.: ДМК Пресс, 2006.- 496 с.: ил.

.Бруно Бабэ Просто и ясно о Borland C++: Пер. с англ. - М.: БИНОМ. - 416 с.: ил.


Министерство образования РБ Учреждение образования «Витебский государственный технологический университет» Кафедра «Автоматизация технологи

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ