Программизм |
![]() |
|
|
Реализация алгоритмов БрезенхемаСложно сегодня найти человека, который бы не сталкивался с машинной
графикой в тех или иных проявлениях. Если человек начинает
интересоваться алгоритмами, лежащими в её основе, то одними из первых
будут алгоритмы Брезенхема. Беда лишь в том, что мне до сих пор не
попадалось простого и вразумительного описания этих алгоритмов, а уж тем
более — реализации. В этой статье я попытаюсь по возможности
просто рассказать о семействе алгоритмов Брезенхема, а также приведу
готовый к использованию код на JavaScript, который практически не
отличается от кода на Хотелось бы выразить свои глубокие и искренние чувства к разработчикам стандартов www и тем, кто их реализует. Вариант JavaScript-кода, работающий во всех доступных броузерах, т.е. IE 6.0, NN 7.0 и Opera 6.0x, не отличается красотой и изысканностью. Впрочем, «к науке, которую я в настоящий момент представляю, это отношения не имеет».
При одном из возможных шагов Z растёт, при другом — уменьшается. Каждый шаг выбирается с тем расчётом, чтобы значение Z для нового пикселя было как можно ближе к 0. Таким образом, мы будем двигаться вдоль линии, создавая её изображение. Рисование отрезкаСразу договоримся, что алгоритм для прямой не рисует горизонтальные и вертикальные линии. Это связано с тем, что рисование таких линий можно реализовать гораздо более простым способом, часто на уровне BIOS или драйвера. Оставшиеся отрезки делятся на две группы: горизонтальные и вертикальные.
Если представить уравнение прямой в виде Для горизонтальных отрезков каждый новый пиксель будет правее предыдущего на 1, при этом он
может также быть выше (ниже), т.е. возможны два шага — вправо и Если координаты концов отрезка Рисование окружностиАлгоритм рисования дуги останется за рамками статьи, а вот алгоритм для рисования окружности получился значительно проще, чем для прямой. Связано это со многими причинами. Во-первых, мы рисуем только одну восьмую часть окружности — от Во-вторых из-за симметрии отклонения линии от окружности не так заметны, как отклонения от прямой, поэтому Z можно сравнивать с нулём, не вычисляя максимально допустимого отклонения. Допустимые шаги — вправо и Вот, собственно, и всё. Ниже вы найдёте скрипт, демонстрирующий работу описанных алгоритмов, а для того, чтобы понять, как он работает, просто посмотрите исходный текст страницы. Удачи!
3.04.2003 * то есть эллипса (и окружности), гиперболы и параболы |
ПоискСм. такжеПользователи всех клонов *nix давно уже могут писать командные файлы на любом языке. Для этого надо лишь указать в первой строке имя интерпретатора... »»» Именно им призван помочь описанный здесь скрипт, сохраняющий письма с бесплатных ящиков на локальный диск.... »»» архив с драйвером занимает около Рекомендую
e.g.Orius Copyright noticeъ) Все материалы, размещённые на странице, являются неотъемлемой собственностью автора с вытекающими отсюда правами, как ©, так и (ъ). Некоммерческое их распространение всячески приветствуется, разумеется, при условии сохранения ссылки на оригинал. Что касается коммерческого использования — пишите письма, договориться можно всегда. Удивительное рядом
Пишите письма
Счётчики |