Компоненты отображения графической информации
Решение задачи построения растрового изображения отрезка, соединяющего заданные точки. Основные недостатки простейших пошаговых алгоритмов представления отрезка, их устранение в алгоритме Брезенхейма. Разработка программы для построения графика функции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 06.12.2012 |
Размер файла | 57,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
Армавирский механико-технологический институт (филиал)
Государственного образовательного учреждения
высшего профессионального образования
«Кубанский государственный технологический университет»
Кафедра внутризаводского электрооборудования и автоматики
КОНТРОЛЬНАЯ РАБОТА
по дисциплине: Инженерная и компьютерная графика
на тему «Компоненты отображения графической информации»
Выполнил
студент группы 11ЗФАБИВ009с
Попов С.А.
Проверил
доц. каф. ВЭА, к.г.н.
О.М. Лазырина
Армавир 2011
Реферат
1. Простейший алгоритм растрового представления отрезка.
2. Построить график функции f(x)=tn(x), x [0,2р]. За начало координат принять нижний левый угол области рисования. Вычертить координатную плоскость, подписать оси координат и график функции. Вывести полученное изображение на печать.
Содержание
Введение
Теоретическая часть. Простейший алгоритм растрового представления отрезка
Практическая часть
Заключение
Список использованных источников
Введение
В данной контрольной работе необходимо построить график функции f(x)=tn(x), x [0,2р]. За начало координат принять нижний левый угол области рисования. Вычертить координатную плоскость, подписать оси координат и график функции. Вывести полученное изображение на печать.
Данная контрольная работа содержит введение, основную часть, заключение и список используемых источников.
Теоретическая часть. Простейший алгоритм растрового представления отрезка
Растровое представление отрезка. Алгоритм Брезенхейма
Рассмотрим задачу построения растрового изображения отрезка, соединяющего точки A(xa, ya) и B(xb, yb). Для простоты будем считать, что
0 ? yb- ya ? xb- xa.
Тогда отрезок описывается уравнением:
y = ya + (x-xa), xЄ [xa, xb], илиy = kx + b
Отсюда получаем простейший алгоритм растрового представления отрезка:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure line(xa, ya, xb, yb:integer; color: TColor);
vark,b,y:real;
x:word;
begin
k:=(yb - ya) / (xb - xa);
b:= ya - k * xa;
x:=xa;
while x<=xb do begin
Form1.Image1.Canvas.Pixels[x,round(k * x + b)]:=color;
inc(x);
end;
Вычислений значений функции y = kx + b можно избежать, используя в цикле рекуррентные соотношения, так как при изменении x на 1 значение y меняется на k.
//ВАРИАНТ С РЕКУРСИВНЫМ МЕТОДОМ!
{
k:= (yb - ya) / (xb - xa);
x:=xa;
y:=ya;
while x<=xb do begin
Form1.Image1.Canvas.Pixels[x,round(y)]:=color;
inc(x); y:=y+k;
end;
}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
line(100,130,200,157,clRed);
end;
end.
Приведенные простейшие пошаговые алгоритмы построения отрезка имеют ряд недостатков:
1. Выполняют операции над числами с плавающей точкой, а желательно было бы работать с целочисленной арифметикой;
2. На каждом шаге выполняется операция округления, что также снижает быстродействие.
Эти недостатки устранены в следующем алгоритме Брезенхейма.
Как и в предыдущем случае будем считать, что тангенс угла наклона отрезка принимает значение в диапазоне от 0 до 1. Рассмотрим i шаг алгоритма (Рис. 1.). На этом этапе пиксель Pi-1 уже найден как ближайший к реальному отрезку. Требуется определить какой из пикселейTi или Si будет установлен следующим.
Размещено на http://www.allbest.ru/
Рис. 1. i шаг алгоритма Брезенхейма
В алгоритме используется управляющая переменная di, которая на каждом шаге пропорциональна разности между S и T. Если S<T, то Si ближе к отрезку, иначе выбирается Ti.
Пусть изображаемый отрезок проходит из точки (x1, y1) в точку (x2, y2). Исходя из начальных условий точка (x1, y1) ближе к началу координат. Тогда перенесем оба конца отрезка с помощью преобразования T(-x1, -y1), так чтобы первый конец отрезка совпал с началом координат. Начальной точкой отрезка стала точка (0, 0), конечной точкой (dx, dy), где dx = x2 - x1, dy = y2 - y1 (Рис. 2).
Размещено на http://www.allbest.ru/
Рис. 2. Вид отрезка после переноса в начало координат
Уравнение прямой в этом случае будет иметь вид:
y=x
Обозначим координаты точки Pi-1 после переноса через (r, q). Тогда
Si = (r+1, q) иTi = (r+1, q+1).
Из подобия треугольников на рис 2 можно записать
=
Выразим S
S = (r + 1) - q
T можно представить как T = 1 - S. Используем предыдущую формулу
T = 1 - S = 1 - (r + 1) - q
Найдем разницу S - T
S - T = (r + 1) - q - 1 + (r + 1) - q = 2 (r + 1) - 2 q - 1
Помножим левую и правую часть на dx
dx (S - T) = 2 dy (r + 1) - 2 q dx - dx = 2(r dy - q dx) + 2 dy - dx
Величина dx положительная, поэтому неравенство dx (S - T) < 0 можно использовать в качестве проверки при выборе Si. Обозначим di= dx (S - T), тогда
di= 2(rdy - qdx) + 2 dy - dx
Поскольку r = xi-1 и q = yi-1, то
di= 2 xi-1 dy -2 yi-1 dx + 2 dy - dx
Прибавляя 1 к каждому индексу найдем di+1
di+1= 2 xi dy -2 yi dx + 2 dy - dx
Вычитаяdi изdi+1 получим
di+1- di = 2 dy (xi - xi-1) - 2 dx (yi - yi-1)
Известно, что xi- xi-1 = 1, тогда
di+1- di= 2 dy - 2 dx (yi -yi-1)
Отсюда выразим di+1
di+1 = di + 2 dy - 2 dx (yi -yi-1)
Таким образом, получили итеративную формулу вычисления управляющего коэффициента di+1, по предыдущему значению di. С помощью управляющего коэффициента выбирается следующий пиксель Si или Ti.
Если di ? 0, тогда выбирается Ti и yi = yi-1 + 1 и di+1 =di +2 (dy - dx). Если di< 0, тогда выбирается Si и yi = yi-1 и di+1 =di +2 dy.
Начальные значения d1 с учетом того, что (x0, y0) = (0, 0)
d1 = 2 dy - dx
Преимуществом алгоритма является то, что для работы алгоритма требуются минимальные арифметические возможности: сложение, вычитание и сдвиг влево для умножения на 2.
Реализация этого алгоритма на Паскале выглядит следующим образом.
Procedure MyLine(x1, y1, x2, y2, c: Integer);
Var dx, dy, inc1, inc2, d, x, y, Xend: Integer;
Begin
dx := abs(x2 - x1);
dy := abs(y2 - y1);
d := dy shl 1 - dx;
inc1 := dyshl 1;
inc2 := (dy - dx) shl 1;
If x1>x2 then
Begin
x := x2;
y := y2;
Xend := x1;
End
Else
Begin
x := x1;
y := y1;
Xend := x2;
End;
Putpixel(x, y, c);
While x <Xend do
Begin
Inc(x);
If d < 0 then d := d + inc1
else
Begin
Inc(y);
d := d + inc2;
End;
Putpixel(x, y, c);
End;
End;
Если dy>dx, то необходимо будет использовать этот же алгоритм, но пошагово увеличивая y и на каждом шаге вычислять x.
Практическая часть
Построить график функции f(x)=tn(x), x ? [0,2р]. За начало координат принять нижний левый угол области рисования. Вычертить координатную плоскость, подписать оси координат и график функции. Вывести полученное изображение на печать.
using System;
usingSystem.Drawing;
using System.Drawing.Drawing2D;
usingSystem.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
float W = panel1.Width, H = panel1.Height;
floathalfW = W / 2, halfH = H / 2;
// оси координат
e.Graphics.DrawLine(Pens.Black, halfW, 0, halfW, H);
e.Graphics.DrawLine(Pens.Black, 0, halfH, W, halfH);
// координаты предыдущей точки
intixPrev = -1, iyPrev = (int)halfH;
// тангенс на интервале x=[-Pi..Pi]
// проходим по всем точкам на форме, вычисляем x и y=tg(x)
for (int ix = 0; ix < W; ix++)
{
// переводим x в диапазон -1..1
float x = (ix - halfW) / halfW;
// переводим x в -pi..pi
x *= (float)Math.PI;
// получаем tg(x)
float y = (float)Math.Tan(x);
// переводим y из -1..1 в пиксели на форме
intiy = (int)(halfH - y * halfH);
// вуаля
e.Graphics.DrawLine(Pens.Red, ixPrev, iyPrev, ix, iy);
ixPrev = ix;
iyPrev = iy;
}
}
}
}
Заключение
растровый изображение отрезок алгоритм
В результате контрольной работы мной была создана программа, которая строит график функции f(x), x 0 [0,2п].
Список использованных источников
1. Фаронов: Программирование C#
2.Савельев А.Я. Основы информатики: Учебник для вузов. - М.: Издательство МГТУ им. Н.Э. Баумана, 2001. - 328 с., ил.
Размещено на Allbest.ru
...Подобные документы
Среда Borland Delphi и ее графические средства для построения фрактальных множеств. Разработка программы для построения изображения листа папоротника при помощи вероятностных распределений с использованием средств для отображения графической информации.
курсовая работа [1,3 M], добавлен 29.07.2013Векторная графика как способ описания изображения при помощи прямых и изогнутых линий. Пример растрового и векторного представления листа с дерева. Редакторы векторной графики. Особенности растрового изображения. Методы сжатия с потерями и без потерь.
реферат [2,1 M], добавлен 28.09.2014Метод установления границ начального отрезка локализации минимума. Метод золотого сечения. Оценивание точки минимума внутри найденного отрезка локализации. Программная реализация метода Свенна на языке C++. Текст программы нахождения точки минимума.
контрольная работа [47,3 K], добавлен 27.01.2011Создание приложения для просмотра графических файлов. Компоненты, объекты и операторы для отображения графической информации в библиотеке Delphi. Канва как область компонента для рисования и отображения изображений. Рисование пером, закрашивание кистью.
методичка [98,1 K], добавлен 19.06.2011Понятие машинного и реального времени, дискретизация времени. Реализация временных задержек в программе. Вычисление значения многочлена методом Горнера. Разработка схем алгоритмов, основной программы и подпрограмм. Построение графика временной функции.
курсовая работа [40,7 K], добавлен 18.04.2012Стандартное устройство вывода графической информации в компьютере IBM - система из монитора и видеокарты. Основные компоненты видеокарты. Графическое и цветовое разрешение экрана. Виды мониторов и видеокарт. Мультимедиа-проекторы, плазменные панели.
контрольная работа [38,7 K], добавлен 09.06.2010Рассмотрение алгоритма, основанного на использовании рекурсивной функции. Пример построения простого самоподобного фрактала - ковра Серпинского, снежинки Коха, кривых Пеано и Гильберта. Понятие L-система и терл-графика. Составление программы "Koch.m".
курсовая работа [3,6 M], добавлен 14.12.2012Составление схемы алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Выбор и обоснование методов расчета. Разработка основной программы. Блок-схемы алгоритмов. Распечатка листинга.
курсовая работа [1,5 M], добавлен 21.11.2013Разработка программы построения графика экспериментальных точек и полинома регрессии второй степени в среде Turbo Pascal. Блок-схемы алгоритмов используемых процедур. Листинг программы. Составление вектора свободных членов и матрицы коэффициентов.
курсовая работа [46,6 K], добавлен 24.11.2013Сравнение методов деления отрезка пополам, хорд, касательных и итераций, поочередно используя их для решения одного и того же уравнения. Построение диаграммы и графика изменения числа. Исследование алгоритма работы программы, перечня идентификаторов.
курсовая работа [1,3 M], добавлен 06.08.2013Разработка программного обеспечения для решения нелинейного уравнения методом деления отрезка пополам, методом деления Гаусса. Алгоритм определения и методика уточнения корней. Составление и тестирование программы, ее листинг и оценка эффективности.
контрольная работа [638,0 K], добавлен 16.12.2013Оценка неизвестной функции распределения величины или ее плотности распределения вероятности. Алгоритм основной программы, функции для построения графика исходного массива, гистограммы и графика функции Лапласа. Результат обработки сейсмического сигнала.
курсовая работа [194,4 K], добавлен 16.12.2012Основные этапы и принципы решения задач на ЭВМ, порядок постановки задачи и построения алгоритма. Сущность теории алгоритмов, ее основные элементы и взаимосвязь, свойства, методика представления в виде схемы, ее обозначения и использующиеся символы.
лекция [136,3 K], добавлен 11.03.2010Виды компьютерной графики: растровая, векторная, фрактальная и трёхмерная. Основные понятия компьютерной графики. Кодирование аудиоинформации, основные аудио форматы. Смешение сигналов и видео форматы. Разработка программы построения фракталов.
дипломная работа [1,2 M], добавлен 14.01.2015Определение номера бурового станка с максимальной суммарной производительностью за весь период. Решение задачи с помощью электронных таблиц. Расчетная таблица с формулами. Разработка макроса для построения графика. Разработка интерфейса программы.
курсовая работа [1,9 M], добавлен 10.04.2014Понятие защиты информации, классификация угроз информационной безопасности. Разработка программы для построения графика заданной функции. Написание макросов для создания проекта распоряжения, вычисления радиуса, выдачи информации о свободной памяти.
контрольная работа [266,2 K], добавлен 07.07.2012Выбор и обоснование методов составления схемы алгоритма и разработки программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Алгоритм Горнера. Программа на языке Quick BASIC (с распечаткой листинга).
курсовая работа [55,1 K], добавлен 21.11.2012Основные понятия компьютерной графики. Представление графической информации в компьютере. Внутреннее устройство персонального компьютера. История графической программы Macromedia Flash, принципы и методы работы с рисунками, технология создания фильма.
дипломная работа [5,9 M], добавлен 06.04.2012Общие требования к изображению отрезка с помощью цифрового дифференциального анализатора. Сравнительный анализ обычного и несимметричного алгоритмов и алгоритма Брезенхема для генерации векторов (соединения двух точек изображения отрезком прямой).
презентация [65,3 K], добавлен 14.08.2013Основные концепции построения реляционных СУБД, базовые принципы проектирования данных. Базы данных: способы представления и модели. Цели построения инфологического моделирования. Разработка структуры программы. Даталогическая модель, разработка процедур.
курсовая работа [1,7 M], добавлен 11.07.2012