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

Для відрізка з нецілочисловими координатами кінців будемо будувати відповідну 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-03; просмотров: 1056;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.