Компьютерная графика
Разработка программы, которая позволяет управлять размерами и положением прямоугольника на экране. Локон Аньези как плоская алгебраическая кривая третьего порядка, алгоритм программы ее построения. Демонстрация результатов работы разработанных программ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 12.10.2017 |
Размер файла | 168,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
8
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Российский государственный гидрометеорологический университет
Кафедра МИТ
Контрольная работа
"Компьютерная графика"
Выполнил: студент гр. ОИ-209
Пухов К.В.
Проверил: Шишкин А.Д.
программа локон аньези
Санкт-Петербург
2008
Постановка задачи
Задание 1: На экране изображён прямоугольник.
Необходимо управлять его размерами и положением на экране
Задание 2: Локон Аньези
Y=A3/ (X2 + A2)
на промежутке f [-5, 5], где A=2
Текст программы 1
// ---------------------------------------------------------------------------
#include <vcl. h>
#pragma hdrstop
#include "Unit1. h"
// ---------------------------------------------------------------------------
#pragma package (smart_init)
#pragma resource "*. dfm"
TForm1 *Form1;
bool mousedown1;
int x0, y0;
// ---------------------------------------------------------------------------
__fastcall TForm1:: TForm1 (TComponent* Owner)
: TForm (Owner)
{
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: FormMouseMove (TObject *Sender, TShiftState Shift,
int X, int Y)
{
// выведем на экран координаты мыши и прямоугольника
Lab1->Caption=IntToStr (Mouse->CursorPos. x-Form1->Left);
Lab2->Caption=IntToStr (Mouse->CursorPos. y-Form1->Top);
Lab3->Caption=IntToStr (Shape1->Left);
Lab4->Caption=IntToStr (Shape1->Top);
Lab5->Caption=IntToStr (Shape1->Left+Shape1->Width);
Lab6->Caption=IntToStr (Shape1->Top+Shape1->Height);
}
void __fastcall TForm1:: Shape1MouseDown (TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
mousedown1=true; // нажали кнопку мыши
// запомним координаты мыши при нажатии кнопки
x0=Mouse->CursorPos. x;
y0=Mouse->CursorPos. y;
}
void __fastcall TForm1:: Shape1MouseUp (TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
mousedown1=false; // отпустили кнопку мыши
}
void __fastcall TForm1:: Shape1MouseMove (TObject *Sender, TShiftState Shift,
int X, int Y)
{
Shape1->Cursor=crSizeAll; // курсор по центру
if ( (Mouse->CursorPos. x>Form1->Left+Shape1->Left-15) &
(Mouse->CursorPos. x<Form1->Left+Shape1->Left+15) |
(Mouse->CursorPos. x>Form1->Left+Shape1->Left+Shape1->Width-15) & (Mouse->CursorPos. x<Form1->Left+Shape1->Left+Shape1->Width+15))
Shape1->Cursor=crSizeWE; // курсор слева и справа
if ( (Mouse->CursorPos. y>Form1->Top+Shape1->Top+ (Form1->Height-Form1>ClientHeight) - 15) & (Mouse->CursorPos. y<Form1->
Top+Shape1->Top+ (Form1->Height-Form1->ClientHeight) +15) |
(Mouse->CursorPos. y>Form1->Top+Shape1->Top+
(Form1->Height-Form1->ClientHeight) +Shape1->Height-15) &
(Mouse->CursorPos. y<Form1->Top+Shape1->Top+
(Form1->Height-Form1->ClientHeight) +Shape1->Height+15))
Shape1->Cursor=crSizeNS; // курсор сверху и снизу
if (mousedown1==true)
{
// двигаем прямугольник
Shape1->Left=Shape1->Left+ (Mouse->CursorPos. x-x0);
Shape1->Top=Shape1->Top+ (Mouse->CursorPos. y-y0);
// двигаем левый край
if ( (Mouse->CursorPos. x>Form1->Left+Shape1->Left-15) &
(Mouse->CursorPos. x<Form1->Left+Shape1->Left+15))
Shape1->Width=Shape1->Width- (Mouse->CursorPos. x-x0);
// двигаем правый край
if ( (Mouse->CursorPos. x>Form1->Left+Shape1->Left+
Shape1->Width-15) & (Mouse->CursorPos. x<Form1->Left+
Shape1->Left+Shape1->Width+15))
{
Shape1->Left=Shape1->Left- (Mouse->CursorPos. x-x0);
Shape1->Width=Shape1->Width+ (Mouse->CursorPos. x-x0);
}
// двигаем верх
if ( (Mouse->CursorPos. y>Form1->Top+Shape1->Top+
(Form1->Height-Form1->ClientHeight) - 15) &
(Mouse->CursorPos. y<Form1->Top+Shape1->Top+
(Form1->Height-Form1->ClientHeight) +15))
Shape1->Height=Shape1->Height- (Mouse->CursorPos. y-y0);
// двигаем низ
if ( (Mouse->CursorPos. y>Form1->Top+Shape1->Top+
(Form1->Height-Form1->ClientHeight) +Shape1->Height-15) &
(Mouse->CursorPos. y<Form1->Top+Shape1->Top+
(Form1->Height-Form1->ClientHeight) +Shape1->Height+15))
{
Shape1->Top=Shape1->Top- (Mouse->CursorPos. y-y0);
Shape1->Height=Shape1->Height+ (Mouse->CursorPos. y-y0);
}
}
// опять запомним координаты мыши при нажатии кнопки
x0=Mouse->CursorPos. x;
y0=Mouse->CursorPos. y;
Form1->FormMouseMove (Sender, Shift, X, Y); // обновим координаты
}
// ---------------------------------------------------------------------------
Текст программы 2
#include <vcl. h>
#pragma hdrstop
#include "Unit1. h"
#include <stdlib. h>
#include <conio. h>
#include <stdio. h>
#include <math. h>
#pragma package (smart_init)
#pragma resource "*. dfm"
TForm1 *Form1;
// ---------------------------------------------------------------------------
__fastcall TForm1:: TForm1 (TComponent* Owner)
: TForm (Owner)
{
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: OnPaint (TObject *Sender)
{
float x,y;
float dx=0.001; // приращение аргумента t
int d=0;
int A=2; // шаг для построения сетки
int x0=ClientWidth/2; // центр окна по х
int y0=ClientHeight/2; // центр окна по у
int px,py;
float my=50; // масштаб по оси y
float mx=50; // масштаб по оси x
// -----------------Сетка и оси-------------------------------------
Canvas->Pen->Color =clNavy; // стиль сетки
Canvas->Pen->Style = psDot;
// -----------------вертикальная сетка------------------------------
do
{
Canvas->MoveTo (d+11,5);
Canvas->LineTo (d+11,ClientHeight-5);
d+=60;
}
while (d<=ClientWidth-8);
// -----------------горизонтальная сетка----------------------------
d=0;
do
{
Canvas->MoveTo (11,3+d);
Canvas->LineTo (ClientWidth-10,3+d);
d+=60;
}
while (d<=ClientHeight-5);
// --------------- - ОСИ Х и У - ------------------------------------
Canvas->Pen->Color =clNavy; // стиль осей
Canvas->Pen->Style = psSolid;
Canvas->Pen->Width=2;
Canvas->MoveTo (x0,5);
Canvas->LineTo (x0,ClientHeight-5);
Canvas->MoveTo (11,y0);
Canvas->LineTo (ClientWidth-10,y0);
// -----------------Оцифровка сетки---------------------------------
d=0;
do
{
if (d! =0)
Canvas->TextOutA (x0-13,y0+d-15,FloatToStrF (-d/60,ffGeneral,6,3));
Canvas->TextOutA (x0-13+d,y0+3,FloatToStrF (d/60,ffGeneral,6,3));
if (d! =0)
Canvas->TextOutA (x0-d+5,y0+3,FloatToStrF (-d/60,ffGeneral,6,3));
Canvas->TextOutA (x0-13,y0-d+3,FloatToStrF (d/60,ffGeneral,6,3));
d+=60;
}
while (d<=ClientWidth-20);
// -----------------Построение графика------------------------------
for (x=-5; x<=5; x+=dx)
{
y=A*A*A/ (x*x + A*A);
px= (x0+mx*x);
py= (y0-my*y);
Canvas->Pixels [px] [py] =clBlack;
} }
// ---------------------------------------------------------------------------
Результат работы программы 1
Результат работы программы 2
Размещено на Allbest.ru
...Подобные документы
Исследование арифметических выражений и разработка простых программ. Таблица переменных для алгоритма и программы. Алгоритм решения, текст программы на языке С. Разработка программы вычисления значений выражений, сравнение результатов с ручным подсчетом.
лабораторная работа [282,7 K], добавлен 30.01.2015Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.
курсовая работа [506,5 K], добавлен 21.02.2011Разработка программы, которая позволяет вычислить данные для сечений стрежневых конструкций, нагруженных по определённой схеме, с вводом и выводом данных при помощи конструктивного графического интерфейса. Листинг и результаты работы программы.
курсовая работа [7,8 M], добавлен 19.09.2010Оценка неизвестной функции распределения величины или ее плотности распределения вероятности. Алгоритм основной программы, функции для построения графика исходного массива, гистограммы и графика функции Лапласа. Результат обработки сейсмического сигнала.
курсовая работа [194,4 K], добавлен 16.12.2012Алгоритм работы программы, которая выполняет записи в log-файл действий, идентифицированных как попытки атаки на страницу авторизации пользователей условного ресурса. Макет веб-сайта, листинги файлов программы и процесс ее взаимодействия с СУБД MySQL.
курсовая работа [1,3 M], добавлен 22.06.2015Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Анализ и постановка задач дисциплины "Компьютерная графика". Разработка структуры, функциональной схемы и программной документации. Руководство программисту и оператору. Выбор и обоснование языка программирования. Описание процедур, функций, оценок.
дипломная работа [3,6 M], добавлен 16.11.2011Разработка базы данных "Студенты", которая позволяет производить операции с данными: регистрацию студентов в базе данных, а также удаление, изменение, резервное копирование информации о студентах. Алгоритм работы программы и вспомогательных процедур.
курсовая работа [27,5 K], добавлен 06.02.2013Составление программы, которая по введенным значениям x, y и номеру действия выполняет то или иное арифметическое действие над положительными числами. Алгоритм и код программы. Проведение тестовых наборов. Тестирование и результат работы программы.
лабораторная работа [961,5 K], добавлен 23.11.2014Методика и основные этапы создания программы, взаимодействующей с пользователем посредствам графического интерфейса и выполняющей помехоустойчивое кодирование информации, ее цели. Алгоритм работы программы, отладка и проверка ее работоспособности.
курсовая работа [43,1 K], добавлен 12.05.2013Графическая схема алгоритма выполнения программы определения запасов сырья. Решение задачи с помощью программы MS Excel. Разработка макроса для построения диаграммы. Использование интерфейса программы для работы с таблицей. Разработка базы данных.
курсовая работа [1,2 M], добавлен 24.04.2014Разработка программы для изображения в графическом режиме на экране структуры модели вычислительной машины и демонстрация функционирования при выполнении программы вычисления. Описание процесса разработки, обоснование структур данных и их форматов.
курсовая работа [170,3 K], добавлен 07.06.2019Разработка программы в среде Delphi, показывающей на экране возможные варианты выбранной шахматной фигуры для хода. Спецификация исходных данных и функций программы, тексты разработанных классов приложения и их ключевые методы, тестирование программы.
курсовая работа [69,4 K], добавлен 19.10.2010Методика разработки, практической апробации программы в среде Turbo Pascal по построению графика прямой линии регрессии. Формирование блок-схемы данной программы, ее листинг. Построение графика с помощью математических формул и графического модуля Graph.
контрольная работа [46,2 K], добавлен 22.07.2011Формальная схема и закон функционирования моделируемой вычислительной системы для обработки программ. Составление алгоритма моделирующей программы на языке GPSS и листинга программы для стохастической модели. Верификация программы и анализ результатов.
курсовая работа [347,3 K], добавлен 21.01.2013Выбор и обоснование методов составления схемы алгоритма и разработки программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Алгоритм Горнера. Программа на языке Quick BASIC (с распечаткой листинга).
курсовая работа [55,1 K], добавлен 21.11.2012Основные операции с матрицами. Проектирование объектно-ориентированного модуля для работы с матрицами в среде Delphi 7. Разработка программы, которая позволяет выполнять различные действия над матрицами. Описание интерфейса программы, исходный код модуля.
курсовая работа [1014,2 K], добавлен 15.01.2013Создание приложения, исполняющего трансляцию программы из языка Паскаль в язык Си: разработка алгоритма реализации задачи, описание необходимых констант, переменных, функций и операторов, представление листинга программы и распечатка результатов.
курсовая работа [305,9 K], добавлен 03.07.2011Разработка компьютерной программы, которая реализует игру "Арканоид". Освоение приемов программирования на языке С++ с использованием средств OpenGL, разбор структуры и логики игры, приобретение навыков работы с 3D графикой. Руководство пользователя.
курсовая работа [1,2 M], добавлен 02.03.2017Преобразование матрицы по заданным правилам. Методика работы с массивами, основанная на классических алгоритмах. Разработка и описание блок-схемы алгоритма. Листинг программы, экраны работы и отладки программы. Инструкция для пользователей программы.
контрольная работа [338,4 K], добавлен 29.01.2013