Компоненты отображения графической информации

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.