КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Зображення відрізка з нецілочисловими координатами кінців
Для відрізка з нецілочисловими координатами кінців будемо будувати відповідну 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-мірний випадок.
Дата добавления: 2014-01-07; Просмотров: 379; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |