Разработка приложения для создания и преобразования графических объектов
Математическое описание операций преобразования плоских фигур. Выбор и обоснование языка программирования и среды разработки. Задание базовой фигуры. Разработка алгоритма работы программы. Проверка корректности работы программы в различных режимах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.10.2014 |
Размер файла | 567,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования РБ
Учреждение образования «Витебский государственный технологический университет»
Кафедра «Автоматизация технологических процессов и производств»
Курсовая работа
по дисциплине «Системы компьютерной графики»
Разработка приложения для создания и преобразования графических объектов
Выполнил: студент группы ИТ-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;
e - параметр масштабирования в направлении оси Y;
s - параметр общего изменения масштаба (вдоль осей X и Y).
Если они «включены», то a, e, s - любые положительные вещественные числа. Если они «выключены», то их значения равны 1.
Произвольная точка A(x, y) преобразуется с помощью матрицы (10) следующим образом
Выражение (11) показывает, что исходные координаты точки А - x и y изменяются в a и e раз соответственно. Этим обеспечивается изменение масштабов вдоль осей X и Y. Если а и е больше единицы, масштаб фигуры увеличивается, если они меньше единицы (но больше нуля) - уменьшается.
Параметр s, на который делится каждый элемент результирующей матрицы координат при нормировке (для перехода от однородных координат к декартовым) действует на масштаб фигуры в обратно-пропорциональном порядке. Если s больше единицы - масштаб вдоль осей X и Y уменьшается, если меньше единицы - увеличивается.
Отображение
Матрица отображения Тотобр имеет вид
где: a - параметр отображения относительно оси Y;
e - параметр отображения относительно оси X;
s - параметр отображения относительно начала координат.
Если параметры отображения a, e, s «включены», то они равны -1, если «выключены», то - +1.
Матрица (12) обеспечивает «зеркальное» отображение, если численные значения параметров a, e, s - равны -1. Если параметры a, e, s отличаются от -1 в большую или меньшую сторону (но не больше 0) они начинают работать одновременно и как параметры масштабирования, вследствие чего преобразованный объект оказывается не только отраженным, но и искаженным. Такое двойное преобразование объекта называется - эффект “кривого зеркала”.
Поворот вокруг центра координат
X=x0 + (x - x0) * cos(a) - (y - y0) * sin(a);
Y=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++. Внешнеязыковой интерфейс является прозрачным, так что библиотеки на Си могут вызываться из 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 - отрисовка части дуги окружности.
Инструкция вызова метода в общем виде выглядит так :
Image->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);
N = Y+(-D/2)*sin(B *M_PI/180);
M1 = X + D/2*cos(B *M_PI/180);
N1 = Y + D/2*sin(B *M_PI/180);
M3 = X+(-3*D/4)*cos(B *M_PI/180)-(-3*D/4)*sin(B *M_PI/180);
N3 = Y+(-3*D/4)*cos(B *M_PI/180)+(-3*D/4)*sin(B *M_PI/180);
K = X+(-D/2+D/32)*cos(B *M_PI/180);
L = Y+(-D/2+D/32)*sin(B *M_PI/180);
K1= X -(-D/4)*sin(B *M_PI/180);
L1= Y+(-D/4)*cos(B *M_PI/180);
K2 = X + D/4*cos(B *M_PI/180)-(-D/4)*sin(B *M_PI/180);
L2 = Y+(-D/4)*cos(B *M_PI/180)+D/4*sin(B *M_PI/180);
K3 = X+3*D/4*cos(B *M_PI/180);
L3 = Y+3*D/4*sin(B *M_PI/180);
Form2->PaintBox1->Canvas->Brush->Color=clBlack;
Form2->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M , N, M1, N1 );
Form2->PaintBox1->Canvas->Brush->Color=clWhite;
Form2->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M1, N1, M, N );
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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.
PaintBox1 - поле отображения объекта
Timer1 - таймер для исполнения эмуляции вращения
Button1 - кнопка отрисовки фигуры
Button2 - кнопка изменения масштаба
Button3 - кнопка пуска эмуляции вращения объекта в таймере
Button4 - кнопка остановки эмуляции вращения
Button5 - изменение направления вращения объекта
Button6 - изменение направления вращения объекта
Button7 - кнопка увеличения скорости вращения
Button8 - кнопка уменьшения скорости вращения
Edit1 - поле для ввода числа процентного изменения масштаба фигуры.
Edit2 - поле отображения изменения скорости вращения объекта
В процессе разработки программы вначале производились вычисления для задания базовой фигуры, затем был выбран наиболее подходящий для практической реализации целей и задач язык программирования С++. Был разработан алгоритм работы программы, после чего произошло написание исходного кода.
фигура алгоритм плоский операция
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>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published: // IDE-managed Components
TPaintBox *PaintBox1;
TTimer *Timer1;
TButton *Button1;
TPanel *Panel1;
TPanel *Panel2;
TEdit *Edit1;
TButton *Button2;
TButton *Button3;
TEdit *Edit2;
TButton *Button4;
TPanel *Panel3;
TButton *Button5;
TButton *Button6;
TButton *Button7;
TButton *Button8;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button7Click(TObject *Sender);
void __fastcall Button8Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
void __fastcall Button5Click(TObject *Sender);
void __fastcall Button6Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall gjgjg(TObject *Sender, System::WideChar &Key);
void __fastcall trththt(TObject *Sender, System::WideChar &Key);
private: // User declarations
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
class FGRClass
{
public:
void Draw();
double X,Y,D,B,M,N,M1,N1,M2,N2,M3,N3,K,L,K1,L1;
double K2,L2,K3,L3;
double H;
double Vx, By;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
--------------------- UNIT2.CPP--------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
const int H = 150;
//---------------------------------------------------------------------------
FGRClass FGR[1];
void FGRClass::Draw()
{
M = X +(-D/2)*cos(B *M_PI/180);
N = Y+(-D/2)*sin(B *M_PI/180);
M1 = X + D/2*cos(B *M_PI/180);
N1 = Y + D/2*sin(B *M_PI/180);
M3 = X+(-3*D/4)*cos(B *M_PI/180)-(-3*D/4)*sin(B *M_PI/180);
N3 = Y+(-3*D/4)*cos(B *M_PI/180)+(-3*D/4)*sin(B *M_PI/180);
K = X+(-D/2+D/32)*cos(B *M_PI/180);
L = Y+(-D/2+D/32)*sin(B *M_PI/180);
K1= X -(-D/4)*sin(B *M_PI/180);
L1= Y+(-D/4)*cos(B *M_PI/180);
K2 = X + D/4*cos(B *M_PI/180)-(-D/4)*sin(B *M_PI/180);
L2 = Y+(-D/4)*cos(B *M_PI/180)+D/4*sin(B *M_PI/180);
K3 = X+3*D/4*cos(B *M_PI/180);
L3 = Y+3*D/4*sin(B *M_PI/180);
Form2->PaintBox1->Canvas->Brush->Color=clBlack;
Form2->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M , N, M1, N1 );
Form2->PaintBox1->Canvas->Brush->Color=clWhite;
Form2->PaintBox1->Canvas->Pie(X-D/2 ,Y-D/2 ,X+D/2 ,Y+D/2, M1, N1, M, N );
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
Form2->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);
}
void __fastcall TForm2::Button1Click(TObject *Sender)
{
FGR[1].X = 285;
FGR[1].Y = 175;
FGR[1].D = H;
FGR[1].Vx = 0;
FGR[1].By = 0;
FGR[1].B = 0;
Button1->Caption = "Исходное состояние" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
FGR[1].B += FGR[1].By;
PaintBox1 -> Repaint();FGR[1].Draw();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
FGR[1].By = 5;
Edit2 -> Text = FGR[1].By;
Button6->Enabled = false;
Button5->Enabled = true;
Button3->Caption = "Заново" ;
}
//--------------------------------------------------------------------------
void __fastcall TForm2::Button7Click(TObject *Sender)
{
Button8->Enabled = true ;
FGR[1].By += 5;
if (FGR[1].By >=180)
{
Button7->Enabled = false;
}
Edit2 -> Text = FGR[1].By;
if ( Button6->Enabled )
{ if (FGR[1].By >=0)
{
Button7->Enabled = false ;
Button8->Enabled = true ;
}
Edit2 -> Text = FGR[1].By;
}
if ( Button5->Enabled )
{
if (FGR[1].By >=0||FGR[1].By <=180)
{
Button8->Enabled = true ;
}
Edit2 -> Text = FGR[1].By;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button8Click(TObject *Sender)
{
FGR[1].By -= 5;
if (FGR[1].By <=-180)
{
Button8->Enabled = false ;
}
Edit2 -> Text = FGR[1].By;
if ( Button6->Enabled )
{
if (FGR[1].By <=0)
{
Button7->Enabled = true ;
}
Edit2 -> Text = FGR[1].By;
}
if ( Button5->Enabled )
{
if (FGR[1].By <=0)
{
Button8->Enabled = false ;
}
Button7->Enabled = true ;
Edit2 -> Text = FGR[1].By;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{
FGR[1].By = 0;
Edit2 -> Text = FGR[1].By;
Button3->Caption = "Пуск" ;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button5Click(TObject *Sender)
{
FGR[1].By = -FGR[1].By;
Edit2 -> Text = FGR[1].By;
Button8 :Button7;
Button5->Enabled = false;
Button6->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button6Click(TObject *Sender)
{
FGR[1].By = -FGR[1].By;
Edit2 -> Text = FGR[1].By;
Button6->Enabled = false;
Button5->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
FGR[1].Vx =StrToFloat(Edit1 -> Text);
if (FGR[1].Vx>=232||FGR[1].Vx<=0)
{
ShowMessage (" \n ОШИБКА ЗНАЧЕНИЯ 404 \n Введите рекомендуемые значения, после чего нажмите клавишу МАСШТАБ");
return ; }
else if (Edit1->Text=="")
{ShowMessage (" \n ОШИБКА ЗНАЧЕНИЯ 404 \n Введите рекомендуемые значения, после чего нажмите клавишу МАСШТАБ");
return ; }
else if(FGR[1].Vx<=232||FGR[1].Vx>=0)
{FGR[1].D = H * (FGR[1].Vx/100);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::gjgjg(TObject *Sender, System::WideChar &Key)
{
if((Key!=VK_BACK)&&(Key<'0'||Key>'9'))Key=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::trththt(TObject *Sender, System::WideChar &Key)
{Key=0;
}
//---------------------------------------------------------------------------
5. ПРОВЕРКА КОРРЕКТНОСТИ РАБОТЫ ПРОГРАММЫ В РАЗЛИЧНЫХ РЕЖИМАХ
1. Рабочее окно программы с прорисованным объектом
2. На этом этапе происходит масштабирование объекта
3. На этом этапе происходит вращение объекта
Список использованной литературы
1. Архангельский А.Я. C++Builder 6. Справочное пособие. Книга 1.Язык C++. М.: Бином 2002 г. --- 544 ил.
2. Архангельский А.Я. C++Builder 6. Справочное пособие. Книга 2. Классы и компоненты. -- М.: Бином-Пресс, 2002 г. -- 528 с: ил.
3. Шикин Е. В., Боресков А. В. Компьютерная графика. Динамика, реалистические изображения. М.: ДИАЛОГ МИФИ, 1996. 288 с.
4. Культин Н. Б. C++ Builder в задачах и примерах. - СПб.: БХВ- Петербург, 2005. -- 336 с
5. Подкур М. Л., Подкур П. Н., Смоленцев Н. К. Программирование в среде Borland C++ Builder с математическими библиотеками MATLAB С/С++. - М.: ДМК Пресс, 2006.- 496 с.: ил.
6. Бруно Бабэ Просто и ясно о Borland C++: Пер. с англ. -- М.: БИНОМ. -- 416 с.: ил.
Размещено на Allbest.ur
Подобные документы
Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.
курсовая работа [616,4 K], добавлен 18.10.2010Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.
курсовая работа [1,3 M], добавлен 28.07.2013Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.
отчет по практике [700,5 K], добавлен 24.11.2014Исследование теоретических аспектов разработки программы посредством использования Visual Basic. Анализ достоинств и недостатков данного языка программирования. Изучение особенностей создания интерфейса приложения. Основные этапы реализации программы.
практическая работа [460,6 K], добавлен 22.01.2013Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.
курсовая работа [1,5 M], добавлен 17.01.2011Разработка прикладной программы для операций создания и уничтожения объектов в системе визуального объектно-ориентированного программирования C++Builder. Алгоритм работы программы, набор функций и операторов, компонент и модулей, кнопки событий.
дипломная работа [672,5 K], добавлен 16.08.2012Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.
курсовая работа [823,0 K], добавлен 18.12.2011Технология создания многопоточных приложений в современных системах программирования с использованием языка C# в Visual Studio.NET. Разработка алгоритма и структуры программы. Описание и особенности тестирования приложения с разным количеством потоков.
курсовая работа [773,0 K], добавлен 14.03.2013Изучение базовых понятий объектно-ориентированного программирования. Исследование принципов работы с классами и объектами. Построение системы классов для описания плоских геометрических фигур. Анализ методов создания объектов, перемещения на плоскости.
лабораторная работа [212,0 K], добавлен 10.03.2013