Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Зображення відрізка з нецілочисловими координатами кінців

Читайте также:
  1. Алгоритм Брезенхема растрової дискретизації відрізка
  2. Варіанти іммобілізації кінцівок
  3. Вплив умов закріплення кінців стрижня на величину критичної сили
  4. Выполняем расчет относительно центра вращения с координатами
  5. Графічне зображення статистичних даних.
  6. Зображення відрізка із цілочисловими координатами кінців
  7. Зображення як функція
  8. Лекція 2. Графічні методи зображення статистичного матеріалу
  9. Малюнок №1.1. Зображення універсальної множини.

Для відрізка з нецілочисловими координатами кінців будемо будувати відповідну 4-зв'язну лінію на растрі.

 

Рис. 6.5. Малювання відрізка з нецілочисловими координатами кінців.

Існує два підходи.

1. Округлити координати кінців до целочисленных і скористатися алгоритмом для цілочислового случаючи. Недолік: може викликати істотні перекручування (особливо у випадку відрізків невеликої довжини).

2. Перейдемо до нашого канонічного випадку, що тепер характеризується тим, що відрізок лежить у першому октанті, але координати в цьому випадку: . Параметризуємо наш відрізок стандартним образом:

де A і B - кінцеві крапки, c > 0 - якийсь масштабний коефіцієнт. Зробимо c досить більшим цілим числом, щоб зменшити помилки округлення. Тоді розглянемо

- збільшення t, при зрушенні на 1 піксель по x;

- збільшення t, при зрушенні на 1 піксель по y.

Будемо порівнювати поточні значення h і v, а потім, залежно від цього, робити крок по x або y і надавати відповідні збільшення h і v. Алгоритм закінчиться, коли h або v перевищить c.

 

Рис. 6.6. Зміна параметрів h і v.

x = 0; y = 0; // Канонічний випадок: початкова крапка// лежить в [0, 1) [0, 1) /* Збільшення t, що відповідають зсувам від початковоїкрапки до границь першого пікселя. */ h = ?h * (1 - x); // ?h0v = ?v * (1 - y); // ?v0 while( (h < c) AND (v < c) ){ plot(x, y); if( h < v ) { // Зрушення по горизонталі x++; h += ?h; } else if( h > v ) { // Зрушення по вертикалі y++; v += ?v; } else { // h = v : Вироджений випадок (див. мал. 6.5) // малюємо довільний із двох можливих пикселей, // наприклад, верхній: plot(x,y+1); x++; y++; h += ?h; v += ?v; }}

Лістинг 6.4. Алгоритм відображення відрізка з нецілочисловими координатами кінців

Зауваження. Наведений вище алгоритм легко узагальнюється на n-мірний випадок.


Дата добавления: 2015-04-05; просмотров: 9; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
Алгоритм Кастла-Пітвея | Алгоритм Брезенхема
lektsii.com - Лекции.Ком - 2014-2018 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты