русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритм Брезентхема


Дата добавления: 2013-12-23; просмотров: 954; Нарушение авторских прав


Простой пошаговый алгоритм вычерчивания отрезков

Численная и компьютерная графика

Перспективные преобразования

Проецирование трехмерного пространства на плоскость

Аксонометрические проекции

 

Классификация общих аксонометрических проекций приведена в таблице:

 

Проекция Описание
1. Ортогональная Матрица преобразований осуществляет только вращение, т.о. координаты осей остаются ортогональными во время проецирования.
2. Диметрическая Две их трех осей во время проецирования одинаковы сокращены.
3. Изометрическая Все три оси во время проецирования сокращены.

 

Пример для изометрической проекции матрицы преобразований:

 

 


 

Проекция из трехмерного пространства XYZ может быть получена при помощи следующей операции:

 

 

 


 

Перспективная проекция получается путем преобразования и проецирования на некоторую двухмерную плоскость наблюдения.

 

Перспективная проекция на плоскость ось Z.

 

= * =

 

 


 

 

Поскольку экран растрового дисплея может рассматривать матрицу дискретных элементов (пикселей), каждый из которых может быть подсвеченным, нельзя непосредственно провести отрезок от одной точки к другой.

 

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

 

В большинстве алгоритмов вычерчивается простейшим пошаговым методом.

 

Приведем пример подобного алгоритма:

 

(начало)

 

шаг = приращение

 

1. if (позиция – конец) < точность then 4

 

if позиция > конец then 2



if позиция < конец then 3

2. позиция = позиция – шаг go to 1

3. позиция = позиция + шаг go to 1

4. (stop. END)

 

 


 

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

 

Алгоритм выбирает оптимальные растры из координат для построения отрезка. В процессе работы одна из координат либо X, либо Y, в зависимости от углового коэффициента изменяется на 1, изменение другой координаты равно нулю или единице. Это зависит от расстояния действий положения отрезков, ближайшим координатам сетки.

 

Алгоритм построен так, что требуется только проверить знак ошибки. Проиллюстрируем на рисунке для отрезка, лежащего в диапазоне от 0 до 1.

 

 

≤ 1

 

Ошибка = ошибка + .

 

На рисунке можно увидеть, что угловой коэффициент из точки (0.0) > 1/2.

Приведём алгоритм для первого октанта.

 

х, y, , Δу – целые

е – вещественное

 

1) инициализация переменных

х = х1

у = у1

Δх = х21

Δу = у21

е = Δу*Δх-1/2

 

2) начало основного цикла

for i:=1 to Δx

plot (x,y)

while (e>0)

y = y+1;

e = e-1;

and while

x = x+1

e = e+

end;

end;

 


Обобщённый целочисленный алгоритм

 

Предполагается, что концы отрезка не совпадают и все переменные считаются целыми. Функция sign возвращает -1, 0, 1 для отрицательного, нулевого и положительного аргумента соответственно.

 

Инициализация переменных:

 

х = х1

у = у1

Δх = abs (x2-x1)

Δy = abs (y2-y1)

S1 = sign (x2-x1)

S2 = sign (y2-y1)

 

Обмен значений Δх и Δу в зависимости от углового коэффициента наклона отрезка.

 

if Δy > Δx then

временная = Δx

Δх = Δу

Δу = временная

else

обмен = 0

end if

 

Инициализация с поправкой на половину пикселя

= 2* Δy – Δх

 

Основной цикл:

 

for i:= 1 to Δх

plot (x, y)

while () ≥ 0

if обмен = 1 then

x = x+S1

else

y = y+S2

end if

= - 2 * Δх

end while

if обмен = 1 then

y = y+S2

else

x = x + S1

else if

= + 2 * Δy

next i

finish

 




<== предыдущая лекция | следующая лекция ==>
Отображение в пространстве | Растровая развертка в реальном времени


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.