Федорков Е.Д., Скрипченко Ю.С., Кольцов А.С. Компьютерная графика (учебное пособие с грифом УМО) - файл n1.doc

приобрести
Федорков Е.Д., Скрипченко Ю.С., Кольцов А.С. Компьютерная графика (учебное пособие с грифом УМО)
скачать (2053 kb.)
Доступные файлы (1):
n1.doc2053kb.07.07.2012 01:24скачать

n1.doc

1   2   3   4   5   6   7   8   9   ...   12

Сканеры

Аппаратное обеспечение

В настоящее время существует 5 типов сканеров: ручные, страничные, планшетные, проекционные, барабанные. Рассмотрим кратко их основные достоинства и недостатки.

Ручные сканеры представляют собой небольшое по размерам устройство, состоящее из оптической системы, ручки для перемещения сканера по изображению и одной-двух кнопок для включения-выключения процесса сканирования. Подключаются они обычно к параллельному порту компьютера. Из достоинств можно выделить только их дешевизну и наличие программ "склейки" изображения. Недостатки - это низкая разрешающая способность и количество цветов, что делает их непригодными для ввода фотографий высокого качества. Кроме того, ширина оптической системы обычно меньше ширины стандартного печатного листа.

Листовые (страничные) сканеры имеют лучшие технические характеристики, такие как разрешение и глубина цвета. Они снабжены устройством для протягивания листа бумаги. Их основной недостаток - это невозможность сканирования оригиналов, состоящих из нескольких страниц или превышающих по размеру формат сканера.

Существует три вида подключения таких сканеров к компьютеру.

  1. Через параллельный порт.

  2. Используя SCSI-порт, для этого необходимо в свободный разъем компьютера установить SCSI-плату, скорость сканирования возрастает, но и соответственно, увеличивается цена за сам сканер.

  3. Подключение через USB-порт. Многие современные компьютеры оснащены таким портом.

Планшетные сканеры имеют такие же технические характеристики и способы подключения к компьютеру, как и листовые сканеры. Они позволяют сканировать многостраничные и широкие (превышающие размеры сканера) оригиналы. Максимальное оптическое разрешение 600-9600 dpi, в зависимости от модели, глубина цвета до 36 бит. Кроме того, используя специальную приставку можно сканировать негативные фотопленки и слайды. В этом случае существует еще одна характеристика - оптическая плотность или диапазон оптических плотностей сканируемого оригинала. Некоторые профессиональные модели современных планшетных сканеров не уступают, а иногда и превосходят по техническим характеристикам барабанные сканеры.

Проекционные сканеры имеют оптическую систему, как у фотоаппарата и поэтому позволяют вводить в ЭВМ объемные изображения, имеют сравнимые или лучшие характеристики. Стоимость таких систем выше, чем у рассмотренных ранее типов сканеров. Альтернативой для них является использование цифровых фотоаппаратов.

Барабанные сканеры предназначены для ввода изображения с фотопленок. Глубина цвета более 32 бит. Имеют очень высокую цену. Используются в полиграфической промышленности.

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

Программное обеспечение

В комплекте с любым сканером поставляется какая-либо программа для выполнения процесса сканирования изображения и сохранения его в файле. С разными моделями сканеров, даже одной и той же фирмы производителя, например Hewlett Packard, Agfa, Umax, Mustek и др., поставляются различные программы.

Поэтому целесообразно указать основные принципы при работе с такими программами. Обычно, ПО поставляемое с планшетными сканерами, предназначено для работы в Windows 3.xx, Windows 95 или Windows NT. Соответственно они имеют оконный интерфейс, систему меню, горячие кнопки и т.д. Процесс сканирования обычно осуществляется в несколько этапов.

  1. Предварительное сканирование документа (изображения). Необходимо нажать кнопку "Предварительный просмотр" (Preview, Scan или др.).

  2. Установить параметры сканирования, обычно требуется выполнить один раз для сканирования серии однотипных изображений. Здесь обычно настраивается оптическое разрешение и глубина цвета, яркость и контрастность, а также режим - цветное изображение или градации серого.

  3. Выделить область (блок, регион, area) для сканирования или изменить размеры и положение уже выделенной области.

  4. Чтобы выполнить процесс сканирования выделенной области необходимо нажать кнопку "Сканировать" (Scan, Accept, Ok или др.).

  5. Сохранить отсканированное изображение в файле. Большинство программ предлагают сохранить изображение сразу после сканирования. Другие же, например, Paper Port позволяет отсканировать несколько изображений, помещая их на свой рабочий стол, а затем изображение можно отправить на печать, передать в другое приложение или экспортировать (сохранить) в каком-либо графическом файле.

Программы сканирования позволяют сохранять файлы в нескольких графических форматах. Обычно это BMP, PCX, TIF и ряд других. На выбор формата графического файла влияет, в первую очередь, в какой программе, в дельнейшем вы будете использовать полученное изображение, т.е. может ли программа прочитать (загрузить) выбранный графический формат.

Для распознавания текстов, т.е. перевода из графического изображения в текстовый формат, служат программы оптического распознавания текстов (OCR). Программы зарубежных фирм распознают тексты на русском языке не очень хорошо (или вообще их не распознают), поэтому целесообразнее использовать одну из двух российских программ - Fine Reader и Cunei Form. Обе системы, если сравнивать их версии с одинаковыми номерами, работают примерно одинаково и по скорости, и по качеству распознавания (количеству ошибок). Хорошие оригиналы (на белой бумаге, типографские или отпечатанные на лазерном принтере) распознаются практически без ошибок. Хорошо распознаются таблицы, а последние версии справляются с рукописными, но только печатными буквами. Таким образом, на выбор программы распознавания влияет только личный вкус, т.е. интерфейс какой из программ больше нравится тому или иному пользователю. В обеих программах есть словари русского, английского и других языков.

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

Вопросы для самоконтроля

  1. Какими параметрами определяется разрешающая способность устройств ввода и вывода?

  2. Для чего предназначены видео адаптеры?

  3. Опишите устройство современной графической платы.

  4. Перечислите устройства визуального отображения.

  5. Приведите основные характеристики мониторов.

  6. Что такое ширина полосы?

  7. Дайте определение динамической фокусировке?

  8. Какие типы принтеров используются для вывода графической информации?

  9. Какие существуют стандарты на мониторы?

  10. Какие средства распознавания текста используются в графических системах?

8. Базовые растровые алгоритмы компьютерной графики
Сформировать растровое изображение можно по-разному. Для того чтобы создать изображение на растровом дисплее, можно просто скопировать готовый растр в видеопамять. Этот растр может быть получен, например, с помощью сканера или цифрового фотоаппарата. А можно создавать изображение объекта путем последовательного рисования отдельных простых элементов.

Простые элементы, из которых складываются сложные объекты, будем называть графическими примитивами. Их можно встретить повсюду. Например, для построения изображения используется некоторый набор примитивов, которые поддерживаются определенными графическими устройствами вывода.

Графические примитивы также можно применять для описания пространственных объектов в базе данных компьютерной системы - модели объектов.

Могут использоваться различные множества примитивов для модели и для алгоритмов отображения. Удобно, когда эти множества совпадают, тогда упрощается процесс отображения.

Простейшим и, вместе с тем, наиболее универсальным растровым графическим примитивов является пиксел. Любое растровое изображение можно нарисовать по пикселам, но это сложно и долго. Необходимы больше сложные элементы для которых рисуются сразу несколько пикселов.

Рассмотрим графические примитивы, которые используются наиболее часто в современных графических системах, — это линии и фигуры.
Алгоритмы вывода прямой линии

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

Наиболее просто нарисовать отрезок горизонтальной линии:

for (x=xl; х<=х2; х++) Пиксел(х, yl) ;

Вычисление текущих координат пиксела здесь выполняется как приращение по х (необходимо, чтобы х1<=х2) а вывод пиксела обеспечивается функцией Пиксел(). Поскольку в языке С, C++ для названия функции нельзя использовать кириллицу, то будем дальше использовать ее как комментарий.

Аналогично рисуется отрезок вертикали:

for (y=yl; у<=у2; у++) //Пиксел(xl, у);

Как видим, в цикле выполняются простейшие операции над целыми числами— приращение на единицу и проверка на "< =". Поэтому операция рисования отрезка выполняется быстро и просто. Ее используют как базовую операцию для других операций, например, в алгоритмах заполнения плоскости полигонов.

Можно поставить такой вопрос: какая линия рисуется быстрее — горизонталь или вертикаль? На первый взгляд — одинаково быстро. Если учитывать только математические аспекты, то скорость должна быть одной и той же при одинаковой длине линий, поскольку в обоих случаях выполняется равное количество идентичных операций. Однако если кроме расчета координат анализировать также вывод пикселов, то могут быть отличия. В растровых системах рисование пиксела обычно означает запись одного или нескольких бит в память, где сохраняется растр. И здесь уже не все равно — по строкам или по столбцам заполняется растр. Необходимо учитывать логическую организацию памяти компьютера, в которой хранятся биты или байты растра. Даже для компьютеров одного типа (например, персональных компьютеров) для различных поколений процессоров и памяти скорость записи по сосед- ним адресам может существенно отличаться от скорости записи по не соседним адресам [40]. В особенности это заметно, когда для растра используется виртуальная память с сохранением отдельных страниц на диске и (или) в оперативной памяти (RAM). При работе графических программ в среде операционной системы Windows часто случается так, что горизонтали рисуются быстрее вертикалей, поскольку в страницах памяти хранятся соседние байты. А может быть, что RAM достаточно, но скорости рисования все же различны.

Например, если используется черно-белый растр в формате один бит на пиксел, то для вертикали битовая маска одинакова для всех пикселов линии, а для горизонтали маску нужно изменять на каждом шаге. Здесь необходимо заметить, что рисование черно-белых горизонталей можно существенно ускорить, если записывать сразу восемь соседних пикселов — байт в памяти.

Горизонтали и вертикали представляют собой частный случай линий. Рассмотрим линию общего вида. Для нее также необходимо вычислять координаты каждого пиксела. Известно несколько методов расчетов координат точек линии.




Генерация векторов

Назначение генератора векторов - соединение двух точек изображения отрезком прямой.

Далее будут рассмотрены четыре алгоритма:

 два алгоритма ЦДА - цифрового дифференциального анализатора (DDA - Digital Differential Analyzer) для генерации векторов - обычный и несимметричный;

 алгоритм Брезенхема для генерации векторов;

 алгоритм Брезенхема для генерации ребер заполненного многоугольника с уменьшением ступенчатости.

Перед рассмотрением конкретных алгоритмов сформулируем общие требования к изображению отрезка:

 концы отрезка должны находиться в заданных точках;

 отрезки должны выглядеть прямыми,

 яркость вдоль отрезка должна быть постоянной и не зависеть от длины и наклона.

Ни одно из этих условий не может быть точно выполнено на растровом дисплее в силу того, что изображение строится из пикселов конечных размеров, а именно:

 концы отрезка в общем случае располагаются на пикселах, лишь наиболее близких к требуемым позициям и только в частных случаях координаты концов отрезка точно совпадают с координатами пикселов;

 отрезок аппроксимируется набором пикселов и лишь в частных случаях вертикальных, горизонтальных и отрезков под 45 они будут выглядеть прямыми, причем гладкими прямыми, без ступенек только для вертикальных и горизонтальных отрезков.

 яркость для различных отрезков и даже вдоль отрезка в общем случае различна, так как, например, расстояние между центрами пикселов для вертикального отрезка и отрезка под 45 различно .

Объективное улучшение аппроксимации достигается увеличением разрешения дисплея, но в силу существенных технологических проблем разрешение для растровых систем приемлемой скорости разрешение составляет порядка 1280Ч1024.

Субъективное улучшение аппроксимации основано на психофизиологических особенностях зрения и, в частности, может достигаться просто уменьшением размеров экрана. Другие способы субъективного улучшения качества аппроксимации основаны на различных программных ухищрениях по "размыванию" резких границ изображения.

Далее в этом разделе рассмотрены три алгоритма генерации отрезка.

Цифровой дифференциальный анализатор

С помощью ЦДА решается дифференциальное уравнение отрезка, имеющее вид:






dY

dX

=

Py

Px

,



где Py = Yk - Yn - приращение координат отрезка по оси Y, а Px = Xk - Xn - приращение координат отрезка по оси X.

При этом ЦДА формирует дискретную аппроксимацию непрерывного решения этого дифференциального уравнения.

В обычном ЦДА, используемом, как правило, в векторных устройствах, тем или иным образом определяется количество узлов N, используемых для аппроксимации отрезка. Затем за N циклов вычисляются координаты очередных узлов:

X0 =   Xn;     Xi+1 = Xi + Px/N.

Y0 =   Yn;     Yi+1 = Yi + Py/N.

Получаемые значения Xi, Yi преобразуются в целочисленные значения координаты очередного подсвечиваемого пиксела либо округлением, либо отбрасыванием дробной части.

Генератор векторов, использующий этот алгоритм, имеет тот недостаток, что точки могут прописываться дважды, что увеличивает время построения.

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

Субъективно лучше смотрятся вектора с единичным шагом по большей относительной координате (несимметричный ЦДА). Для Px > Py (при Px, Py > 0) это означает, что координата по X направлению должна увеличиться на 1 Px раз, а координата по Y-направлению должна также Px раз увеличиться, но на Py/Px.

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

Для генерации отрезка из точки (x1,y1) в точку (x2,y2) в первом октанте (Px  Py  0) алгоритм несимметричного ЦДА имеет вид:

  1. Вычислить приращения координат:

  2. Px= x2 - x1;

  3. Py= y2 - y1;

  4. Занести начальную точку отрезка

  5. PutPixel (x1, y1);

  6. Сгенерировать отрезок

  7. while (x1 < x2) {

  8. x1:= x1 + 1.0;

  9. y1:= y1 + Py/Px;

  10. PutPixel (x1, y1);

  11. }

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

Так как приращения координат, как правило, не являются целой степенью двойки, то в ЦДА-алгоритме (см. предыдущий пункт) требуется выполнение деления, что не всегда желательно, особенно при аппаратной реализации.

Брезенхем в работе предложил алгоритм, не требующий деления, как и в алгоритме несимметричного ЦДА, но обеспечивающий минимизацию отклонения сгенерированного образа от истинного отрезка, как в алгоритме обычного ЦДА. Основная идея алгоритма состоит в том, что если угловой коэффициент прямой < 1/2, то естественно точку, следующую за точкой (0,0), поставить в позицию (1,0) (рис. а), а если угловой коэффициент > 1/2, то - в позицию (1,1) (рис. б). Для принятия решения куда заносить очередной пиксел вводится величина отклонения Е точной позиции от середины между двумя возможными растровыми точками в направлении наименьшей относительной координаты. Знак Е используется как критерий для выбора ближайшей растровой точки.

Если Е < 0, то точное Y-значение округляется до последнего меньшего целочисленного значения Y, т.е. Y-координата не меняется по сравнению с предыдущей точкой. В противном случае Y увеличивается на 1.

Для вычисления Е без ограничения общности упрощающе положим, что рассматриваемый вектор начинается в точке (0,0) и проходит через точку (4, 1.5), т.е. имеет положительный наклон меньший 1.

Отклонение для первого шага:

Е1 = Py/Px - 1/2 < 0,

поэтому для занесения пиксела выбирается точка (1,0).

Отклонение для второго шага вычисляется добавлением приращения Y-координаты для следующей X-позиции:

Е2 = Е1 + Py/Px > 0,

поэтому для занесения пиксела выбирается точка (2,1). Так как отклонение считается от Y-координаты, которая теперь увеличилась на 1, то из накопленного отклонения для вычисления последующих отклонений надо вычесть 1:

Е2 = Е2 - 1.

Отклонение для третьего шага:

Е3 = Е2 + Py/Px < 0,

поэтому для занесения пиксела выбирается точка (3,1).

Суммируя и обозначая большими буквами растровые точки, а маленькими - точки вектора, получаем:

Е1 = y1 - 1/2 = dY/dX - 1/2.

Возможны случаи:

Е1 > 0

E1  0

ближайшая точка есть:

X1 = X0 + 1;    Y1 = Y0 + 1;

X1 = X0 + 1;     Y1 = Y0;

E2 = Е1 + Py/Px - 1;

E2 = E1 + Py/Px.

Так как интересует только знак Е, то можно избавиться от неудобные частных умножением E на 2ЧPx:




E1 = 2ЧPy - Px

E1 > 0:

E2 = E1 + 2Ч(Py - Px)

E1  0:

E2 = E1 + 2ЧPy

Таким образом получается алгоритм, в котором используются только целые числа, сложение, вычитание и сдвиг:

X= x1;

Y= y1;

Px= x2 - x1;

Py= y2 - y1;

E= 2Py - Px;

i= Px;

PutPixel(X, Y); /* Первая точка вектора */

while (i= i- 1  0) {

if (E  0) {

X= X + 1;

Y= Y + 1;

E= E + 2(Py - Px); } else

X= X + 1;

E= E + 2Py;

PutPixel(X, Y); /* Очередная точка вектора */}

Этот алгоритм пригоден для случая 0       dY       dX. Для других случаев алгоритм строится аналогичным образом.

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

Улучшение качества аппроксимации векторов

Выше было отмечено, что растровая генерация отрезков имеет следующие недостатки:

 неточное расположение начала и конца,

 ступенчатый вид отрезка,

 яркость зависит от наклона и длины.

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

Наиболее заметно ухудшает качество изображения ступенчатость. Имеется следующие способы борьбы со ступенчатостью :

 увеличение пространственного разрешения за счет усовершенствования аппаратуры,

 трактовка пиксела не как точки, а как площадки конечного размера, яркость которой зависит от размера площади пиксела, занятой изображением отрезка,

 "размывание" резкой границы, за счет частичной подсветки пикселов, примыкающих к формируемому отрезку. Понятно, что при этом ухудшается пространственное разрешение изображения.

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

Модифицированный алгоритм Брезенхема

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

При построении ребра многоугольника с тангенсом угла наклона t  (0  t  1) могут захватываться либо один пиксел (пикселы (0,0), (2,1), (4,2), (6,8)) либо два пиксела (пикселы (1,0) и (1,1), (3,1) и (3,2), (5,2) и (5,3)). Если захватывается один пиксел, то часть его площади, попавшая внутрь многоугольника, равна dy + t/2 (рис. a).

Если же захватывается два пиксела, то часть площади нижнего пиксела, попавшая внутрь многоугольника равна 1 - [((1 - dy)2)/ 2t], а верхнего - [((dy - 1 + 2)2)/ 2t]. Суммарная площадь частей для двух пикселов, попавшая внутрь многоугольника, равна dy + t/2.

Если теперь в исходном алгоритме Брезенхема заменить отклонение E на E' = E + (1-t), то 0  E'  1) и значение E' будет давать значение той части площади пиксела, которая находится внутри многоугольника.

Выполняя преобразование над значением отклонения для первого шага получим, что начальное значение станет равным 1/2. Максимальное значение отклонения E'max, при превышении которого производится увеличение Y-координаты занесения пикселов, станет равным (1 - t).

Для того, чтобы оперировать не дробной частью максимальной интенсивности, а непосредственно ее значениями достаточно домножить на полное число уровней интенсивности I тангенс угла наклона (t), начальное (E') и максимальное (E'max) значения отклонения.

В результате получается следующий алгоритм, пригодный для случая 0       dY       dX:

X= x1;

Y= y1;

Px= x2 - x1;

Py= y2 - y1;

t= IPy / Px;

E'= I/2;

E'max= I - IPy / Px;

i= Px;

PutPixel(X, Y, t/2); /* Первая точка вектора */

while (i = i - 1  0) {

if (E'  E'max) {

X= X + 1;

Y= Y + 1;

E' = E'- E'max;

} else

X= X + 1;

E' = E'+ t;

PutPixel(X, Y, E'); /* Очередная точка вектора */}

Для избавления от вещественной арифметики при манипулировании с E' можно домножить уже упомянутые величины на 2Px. Но в этом случае при занесении пикселов потребуется деление E' на 2Px.

В Приложении 2 приведена процедура V_BreM, реализующая модифицированный алгоритм Брезенхема для генерации ребра заполненного многоугольника и пригодная для любого октанта.
Улучшение качества изображения фильтрацией

Мы здесь рассмотрим методы, основанные на "размывании" границы.

Один из них заключается в том, что изображение строится с большим пространственным разрешением, чем позволяет дисплей. При выводе на экран атрибуты пиксела экрана вычисляются усреднением по группе пикселов изображения, построенного с большим разрешением. Т.е. пикселы изображения рассматриваются как подпикселы соответствующих пикселов экрана. Усредняющая маска перемещается по изображению с шагами, равными ее размеру.

Другой метод заключается в усреднении изображения без изменения его разрешения. В этом случае усредняющая маска перемещается по изображению с единичными шагами.

Очевидно, что первый метод должен давать более качественное изображение, но при больших затратах ресурсов. Для усреднения предложены различные маски.

Простейшее усреднение - равномерное . Улучшить усреднение можно за счет использования весов, задающих влияние отдельных подпикселов на атрибут пиксела экрана

Эти массивы должны быть пронормированы для получения единичного коэффициента передачи, чтобы не вызывать неправильного смещения средней яркости изображения. Нормирующий коэффициент равен 1 / (сумму членов массива).

Ясно, что эти преобразования, примененные изображению зашумленному случайными импульсными помехами, будут подавлять шум. Это так называемые низкочастотные фильтры.

Генерация окружности

Во многих областях приложений, таких как, например, системы автоматизированного проектирования машиностроительного направления, естественными графическими примитивами, кроме отрезков прямых и строк текстов, являются и конические сечения, т.е. окружности, эллипсы, параболы и гиперболы. Наиболее употребительным примитивом, естественно, является окружность. Один из наиболее простых и эффективных алгоритмов генерации окружности разработан Брезенхемом.

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

Для простоты и без ограничения общности рассмотрим генерацию 1/8 окружности, центр которой лежит в начале координат. Остальные части окружности могут быть получены последовательными отражениями (использованием симметрии точек на окружности относительно центра и осей координат).

Окружность с центром в начале координат описывается уравнением:

X2 + Y2 = R2

Алгоритм Брезенхема пошагово генерирует очередные точки окружности, выбирая на каждом шаге для занесения пиксела точку растра Pi(Xi,  Yi), ближайшую к истинной окружности, так чтобы ошибка:

Ei(Pi)    =   (Xi2   +   Yi2)   -   R2

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

Рассмотрим генерацию 1/8 окружности по часовой стрелке, начиная от точки X=0, Y=R.

Проанализируем возможные варианты занесения i+1-й точки, после занесения i-й.

При генерации окружности по часовой стрелке после занесения точки (Xi, Yi) следующая точка может быть) либо Pg = (Xi+1, Yi) - перемещение по горизонтали, либо Pd = (Xi+1, Yi-1) - перемещение по диагонали, либо Pv = (Xi, Yi-1) - перемещение по вертикали.

Для этих возможных точек вычислим и сравним абсолютные значения разностей квадратов расстояний от центра окружности до точки и окружности:







Dg




=




 (X+1)2




+




Y2




-




R2




Dd




=




 (X+1)2




+




(Y-1)2




-




R2




Dv




=




 X2




+




(Y-1)2




-




R2











Выбирается и заносится та точка, для которой это значение минимально.
1   2   3   4   5   6   7   8   9   ...   12


Сканеры Аппаратное обеспечение
Учебный материал
© nashaucheba.ru
При копировании укажите ссылку.
обратиться к администрации