Тарифы Услуги Сим-карты

Виды компьютерной графики и форматы изображений. Что такое масштаб? Масштаб фотографий, масштаб карт

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

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

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

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

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

На увеличенном изображении зрачка справа видно, что картинка состоит из множества разноцветных квадратиков.

Основным параметром растровой картинки является ее физическое разрешение, определяющееся количеством точек (пикселей) размещающихся по горизонтали и вертикали. Например, разрешение 1920x1080 означает, что ширина изображения составляет 1920 пикселов, а высота - 1080. Учтите, что при одинаковом размере изображения его разрешение может быть разным, и чем оно выше, тем качественнее картинка. В общем, чем из большего количества точек будет состоять рисунок, тем оно будет реалистичнее.

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

Наиболее распространенными форматами, обеспечивающими сжатие без потерь, являются BMP, PNG и GIF. В самом же широко используемом формате JPEG (JPG, JPE) используется сжатие с потерями. Еще один популярный формат TIFF имеет разные настройки сжатия, а вот RAW наиболее часто используется для хранения информации, получаемой с цифровых камер, без внесения в нее каких либо изменений. Практически все полупрофессиональные или профессиональные фотокамеры позволяют сохранять изображения именно в этом формате для последующей его обработки.

Программ, позволяющих создавать, редактировать и тем более просто просматривать растровые картинки великое множество. Но, наверное, самой популярной и профессиональной из них является графический редактор Adobe Photoshop (собственный формат PSD). Возможности этого инструмента воистину впечатляют и смогут удовлетворить потребности самых продвинутых пользователей. При этом Photoshop имеет в своем арсенале некоторые инструменты для работы с векторными и трехмерными изображениями, о которых мы поговорим ниже. Для тех же, кто не готов выкладывать почти тысячу долларов за данный продукт, можно попробовать в деле его облегченный вариант Photoshop Elements, стоимостью $100. Еще одним популярным продуктом в этой категории является редактор GIMP, который часто называют бесплатной альтернативой Photoshop, хотя сами разработчики с этим не согласны.

Впрочем, многим пользователям (особенно начинающим) для просмотра и редактирования растровых изображений хватит тех возможностей, которые предоставляют приложения, встроенные в систему Windows. К их услугам простенький редактор Paint и штатное средство для просмотра фотографий. В более продвинутых редакциях Windows для воспроизведения и каталогизации картинок можно использовать стильную оболочку Windows Media Center.

Для систематизации и упорядочивания коллекций, хранящихся на компьютере фотографий, рисунков и картинок, можно использовать бесплатное приложение Picasa или XnView, а так же более функциональный, но платный (чуть более 1000 рублей) графический редактор ACDSee. Хотя, как уже упоминалось, выбор программного обеспечения для работы с растровыми изображениями очень широк и недостатка, как в платных, так и бесплатных приложениях у пользователей нет.

Векторная графика

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

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

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

С большой долей уверенности можно сказать, что самой знаменитой и популярной программой для работы с векторными изображениями является Corel Draw, а файлы, создаваемые с ее помощью, имеют собственный формат CDR. Хотя такие приложения как Adobe Illustrator (собственный формат AI, EPS), Xara Designer (собственный формат XAR), бесплатный Inkscape(собственный формат SVG) и другие имеют так же не малое количество поклонников.

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

Трехмерная графика (3 D )

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

Одним из основных призваний трехмерной графики является создание движения 3D-модели в пространстве, называемое анимацией, которая в наше время является неотъемлемой частью не только для современных компьютерных игр, но и телевидения, кинематографа, а так же научного и промышленного моделирования. Так же трехмерная графика широко применяется в архитектурной визуализации и печатной продукции.

Самыми популярными программами, используемыми для создания 3D графики и анимации, являются пакеты компании Autodesk: 3DS Max (собственный формат MAX) и Maya (собственный формат MA). Стоит отметить и универсальное комплексное приложение Maxon Cinema 4D (собственный формат C4D) с более простым интерфейсом, чем у продуктов Autodesk и поддержкой русского языка, что делает его особенно привлекательным для русскоязычной аудитории.

Процесс трехмерного моделирования, визуализации и анимации является очень ресурсоемкой задачей, так что если вы решите попробовать свои силы на этом поприще, придется раскошелиться на высокопроизводительный компьютер. Более того, и само программное обеспечение стоит очень недешево. Например, за 3DS MAX просят около 4000 евро. Хотя Autodesk пошла навстречу тем людям, которые не собираются извлекать коммерческую выгоду при использовании этой программы, выпустив для них бесплатную версию, которая становится доступна после регистрации на сайте компании.

Заключение

Наверное, было бы неправильно не сказать несколько слов о компьютерных ресурсах, которые требуются для комфортной работы с графикой. Если в основном вы планируете заниматься лишь просмотром изображений или осуществлять их простое редактирование, то для этих задач подойдет даже самый простой и маломощный ПК. А вот для работы с такими тяжеловесами, как Adobe Photoshop или Corel Draw понадобится достаточно мощный процессор и большой объем оперативной памяти (от 4 Гб). Но самой требовательной к системным ресурсам является трехмерная графика. Здесь для комфортной работы потребуется не только топовый процессор в сочетании с немалым объемом «оперативки» (8 Гб и более), но и мощная видеокарта, со своей собственной видеопамятью и графическим чипом. Недаром, самыми дорогими компьютерами считаются, те, которые ориентированы на любителей современных 3D-игр и людей профессионально работающих с 3D-графикой.

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

А вот трехмерная графика - это лишь плод нашего воображения. Ведь экран монитора может формировать только плоскую (2D) картинку, которая является лишь проекцией объемных объектов, пространство для которых мы придумываем сами. То же самое, касается и новомодных 3D-телевизоров или 3D-мониторов. На самом деле эти устройства показывают обычное двухмерное изображение, которое может быть построено особым способом, при просмотре которого через специальные очки, создается иллюзия объема.

Читатйте также:

День добрый, любители астрономии и астрофотографии! В этой статье - короткий, но очень полезный расчет, который однажды пригодится даже тем, кто снимает небо редко. Ну а те кто занимается этим приятным ночным делом постоянно, должны знать его назубок! :) Речь пойдет о масштабе изображения получаемой с вашй техникой. У вас, наверное спрашивают - какое увеличение дает этот телескоп? И по сути ответить людям нечего, тк обычное понятие увеличение предполагает наличие окуляра, ибо считается оно по формуле F/f, где F - фокус объектива, а f - фокус окуляра. Как же быть в случае с одним лишь объективом и фотокамерой? Давайте посчитаем!

Предположим, у вас есть классический телескоп системы Ньютона с зеркалом D=200 мм и фокусным расстоянием F=1000мм. Съемка ведется на матрицу QHY5-L-II-M. Каков же будет масштаб изображения? Фактически вопрос заключается в том насколько большую картинку мы увидим на экране монитора. Но помимо визуального эффекта вопрос имеет и практическую составляющую. К примеру, зная сколько секунд дуги неба приходится на один пиксель матрицы можно оценить влияние турбуленции на изображение или понять какую выдержку надо дать чтобы движущийся с известной скоростью в кадре астероид/комета еще не успел размазаться в черточку. Также можно оценить видимость деталей на планетах, к примеру - сможем ли мы наблюдать в данный телескоп вулкан Олимп на Марсе в момент великого противостояния.

Поскольку нас известен из документации фокус нашего телескопа, начнем с него. Из геометрии известно, что 1 угловая секунда - это угловой размер объекта на расстоянии равном 206265 его линейных размеров. Отсюда масштаб изображения в секундах на миллиметр s = 206265/F, где F - фокус в миллиметрах, то есть s = 206,265"/мм. Обратите внимание, ответ в секундах дуги на миллиметр.

Но нам нужен масштаб в секундах на пиксель. Это легко! Из документации к матрице узнаем, что размер ее пикселя 3,75 мкм, то бишь миллионных долей метра или тысячных долей миллиметра. Значит, в одном миллиметре умещается 267 таких пикселей и окончательный масштаб s = 206,265/267 = 0,77"/px .

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

октябрь 2015,

Ваш Назаров Сергей.

Астробиблиотека

Масштабирование изображений

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

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

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

Одновременное изменение размеров
всех пикселей (в большую или меньшую сторону);

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

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

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

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

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

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

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

Что такое масштаб, и зачем он нужен

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

Масштаб увеличения

Данный вид применяется в том случае, когда изображение в натуральную величину значительно меньше, нежели на чертежах. В этом случае в специальной графе указываются пропорции данного изображения (2:1, 8:1, 16:1, 150:1 и так далее). Пропорции нужно понимать следующим образом: правая цифра обозначает, что весь чертеж необходимо делить на сантиметры (например, 1 сантиметр), а левая - во сколько раз объект уменьшен на 1 сантиметр чертежного изображения. То есть, если мы имеем обозначение 2:1, то это значит, что на 1 сантиметр чертежной линии приходится 0,5 сантиметра объекта.

Масштаб уменьшения

Этот вид применяется в том случае, если объект, который необходимо изобразить, значительно превышает размеры чертежа. В специальной графе пропорций мы указываем, во сколько раз объект превышает изображение (например, 1:2, 1:250, 1:1000 и так далее). Левая цифра обозначает, на сколько сантиметров необходимо делить чертеж (например, на 1 сантиметр), а правая - сколько измерительных единиц приходится на 1 сантиметр. Например, мы имеем карту с обозначением масштаба 1:2000000 см, это значит, что на 1 сантиметр карты приходится 2000000 сантиметров местности (или 20000 метров, или 20 километров на 1 сантиметр).

Как масштабировать фотографии

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

Масштабирование изображения позволяет сжать или растянуть его по горизонтали и/или вертикали. При этом изменяется ширина и/или высота изображения. Для масштабирования задаются масштабные коэффициенты – то, насколько нужно сжать/растянуть изображение по горизонтали или вертикали. Масштабные коэффициенты могут задаваться в нормализованной, процентной или непосредственной форме. В нормализованной форме за единицу принимаются размеры исходного изображения. Значения меньше единицы указывают на сжатие изображения, значения больше единицы – на растяжение. В процентной форме нормализованные значения умножаются на 100 %. В непосредственной форме новые размеры по горизонтали и вертикали задаются в виде количества пикселей по тому или другому измерению.

Возникает вопрос о том, каким образом определять цвета при изменении размеров изображения. Существует два основных подхода к этой проблеме:

1. Цвет пикселя в масштабированном изображении принимается равным цвету ближайшего к нему пикселя исходного изображения.

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

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

Первый подход достаточно прост, но не всегда даёт приемлемое качество обработанного изображения. Например, если новый размер намного больше старого, то возникает блочная структура изображения, т. е. каждый пиксель исходного изображения соответствует квадратной области пикселей одного и того же цвета в обработанном изображении. Эта аномалия представлена на рис. 2.15.

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



Рис. 2.15. Некорректное увеличение

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

Приведем простейшую формулу, которая позволяет определить ближайший пиксель исходного изображения (без использования интерполяции):

Параметр W определяет размер изображения по горизонтали, измеряемый в пикселях. Параметр H определяет размер по вертикали. Параметры i и j определяют соответственно строку и столбец матрицы изображения и изменяются в пределах высоты и ширины изображения соответственно.


15.Алгоритмы трёхмерного отсечения.

Прямоугольный параллелепипед

Усеченная пирамида

n Отсечение выпуклой многоугольной областью

n Выпуклый многоугольник = пересечение полуплоскостей, образованных сторонами многоугольной области

Алгоритм Сазерленда-Ходгмана

{ p – многоугольник, sp – полуплоскость, inp(p,sp) – лежит ли точка p в полуплоскости sp, add – добавление вершины в новый многоугольник }

p:=p[n]; ci:= inp(p[n],sp);

for i:=1 to n do begin

nci:= inp(p[i],sp);

if nci <> ci then begin

newp:=intersect(p,p[i],sp);

if nci then add(p[i]);

В результате отсечения получится многоугольник.

Проверка принадлежности полупространству

Нахождение отсечения на битовом уровне.

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

Как и при двумерном отсечении, отрезки, которые полностью видимы или тривиально невидимы, можно идентифицировать с использованием обобщения кодов концевых точек Коэна-Сазерленда. В трехмерном случае используется 6-битовый код. Вновь самый правый бит кода считается первым. В биты кода заносятся единицы с помощью обобщения двумерной процедуры. Конкретно единица заносится:

в первый бит - если конец ребра левее объема,

во второй бит - если конец ребра правее объема,

в третий бит - если конец ребра ниже объема,

в четвертый бит - если конец ребра выше объема,

в пятый бит - если конец ребра ближе объема,

Рис 9.8 Трехмерное отсечение

В противном случае в соответствующие биты заносятся нули. И опять, если коды обоих концов отрезка равны нулю, то оба конца видимы и отрезок тоже будет полностью видимым. Точно так же, если побитовое логическое произведение кодов концов отрезка не равно нулю, то он полностью невидим. Если же это логическое произведение равно нулю, то отрезок может оказаться как частично видимым, так и полностью невидимым. В этом случае необходимо определять пересечения отрезка с гранями отсекающего объема.

Поиск кодов точки относительно отсекающего прямоугольного параллелепипеда является прямым обобщением соответствующего двумерного алгоритма. Однако случай, когда отсекателем служит усеченная пирамида, показанная на рис.9.8.b, заслуживает дополнительного обсуждения. Один из методов заключается в преобразовании отсекателя в каноническую форму, где x прав = 1, x лев = -1, y верх = 1, y низ = -1 при z даль = 1. Если z ближ = a, где 0 < a <= 1, а центр проекции совпадает с началом левой системы координат, то проверка кодов концевых точек заметно упрощается.

В более естественном методе, меньше искажающем форму отсекателя, отрезок, соединяющий центр проекции с центром усеченной пирамиды, совмещается с осью z правой системы координат, как это показано на рис.9.8,Ь.

Вид усеченной пирамиды сверху показан на рис. 9.9. а. Уравнение прямой на плоскости xz, несущей проекцию правой грани отсекателя, имеет вид:

x = (z - z цп) * x п / (z д - z цп) = za 1 + a 2 ,

где a 1 = x п / (z д - z цп) и a 2 = - a 1 z цп

Рис 9.9 Усеченная пирамида

Уравнение этой прямой можно использовать для определения местоположения точки: справа, на или слева от прямой, т. е. вне отсекателя, на плоскости, несущей его правую грань, или внутри отсекателя. Подстановка координат х и z точки Р в пробную функцию правой грани дает следующий результат:

│ п = x - za 1 - a 2 м >

н = 0, если Р на плоскости

о < 0, если Р слева от плоскости

Пробные функции для левой, верхней и нижней граней имеют вид:

│ л = zb 1 - b 2 м > 0, если Р справа от плоскости

н = 0, если Р на плоскости

о < 0, если Р слева от плоскости

где b 1 = x л / (z д - z цп) и b 2 = - b 1 z цп

│ в = y - zg 1 - g 2 м > 0, если Р выше плоскости

н = 0, если Р на плоскости

о < 0, если Р ниже плоскости

где g 1 = y в / (z д - z цп) и g 2 = - g 1 z цп

│ н = y - zd 1 - d 2 м > 0, если Р ниже плоскости

н = 0, если Р на плоскости

о < 0, если Р выше плоскости

где d 1 = y н / (z д - z цп) и d 2 = - d 1 z цп

Наконец, пробные функции для ближней и дальней граней имеют вид:

│ б = z - z б м > 0, если Р ближе плоскости

н = 0, если Р на плоскости

н = 0, если Р на плоскости

о < 0, если Р ближе плоскости

Чем ближе z цп к бесконечности, тем больше форма отсекателя приближается к прямоугольному параллелепипеду. Пробные функции при этом тоже приближаются к соответствующим пробным функциям прямоугольного параллелепипеда.

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

http://www.mari-el.ru/mmlab/home/kg/Lection9/index.html

16. Алгоритм плавающего горизонта.

Из презентации:

Удаление невидимых линий трёхмерного представления функции, описывающих поверхность в виде
F(x, y, z) = 0

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

n F(x, y, z) = 0 приводится к виду y=f(x,z) или x=g(y,z)

n Удаление невидимой линии:

n Если для текущего значения z , при некотором x значение y больше значений y для всех предыдущих кривых при том же x, то текущая кривая видима в точке (x, y) , иначе – не видима.

n Добавляется «нижний» горизонт

n Плавающий горизонт – два массива (по значениям x), задающих минимальное и максимальное значения y при различных z.

n Зазубренные боковые рёбра. Чтобы их избежать, добавляют мнимые боковые рёбра

Алгоритм Робертса

На входе – n тел. Требуется отрисовать их с удалением невидимых линий

    1. Определение нелицевых граней для каждого тела . Из каждого тела удаляются те рёбра и грани, которые экранируются самим телом.
    2. Определение и удаление невидимых рёбер. Каждое из видимых рёбер каждого тела сравнивается с каждым из оставшихся тел для выделения видимой части.

n Сложность алгоритма растёт как квадрат от количества тел.

n Работает в объектном пространстве.

n Требуется, чтобы все тела были выпуклы.

n Тело представляется набором плоскостей – своих граней.

n Грани задаются коэффициентами уравнения a x + b y + c z + d = 0.

n Всё тело – матрицей размера 4 x n.

Алгоритм Кэтмула

n Работает в пространстве изображения.

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

F(x, у, z) = 0.

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

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

На рис. 5.2. приведен пример, где указанные параллельные плоскости определяются постоянными значениями z. Функция F(x,у,z) = 0 сводится к последовательности кривых, лежащих в каждой из этих параллельных плоскостей, например к последовательности у=f(x,z) или х=g(у,z), где z постоянно на каждой из заданных параллельных плоскостей.

Рис. 5.2. Секущие плоскости с постоянной координатой

Итак, поверхность теперь складывается из последовательности кривых, лежащих в каждой из этих плоскостей, как показано на рис. 5.3.

Рис. 5.3. Секущие плоскости с постоянной координатой

Алгоритм сначала упорядочивает плоскости z = const по возрастанию расстояния до них от точки наблюдения. Затем для каждой плоскости, начиная с ближайшей к точке наблюдения, строится кривая, лежащая на ней, т. е. для каждого значения координаты х в пространстве изображения определяется соответствующее значение y. Алгоритм удаления невидимой линии заключается в следующем.

Если на текущей плоскости при некотором заданном значении x соответствующее значение у на кривой больше значения y для всех предыдущих кривых при этом значении x, то текущая кривая видима в этой точке; в противном случае она невидима.

Невидимые участки показаны пунктиром на рис. 5.4. Реализация данного алгоритма достаточно проста. Для хранения максимальных значений y при каждом значении x используется массив, длина которого равна числу различимых точек (разрешению) по оси x в пространстве изображения. Значения, хранящиеся в этом массиве, представляют собой текущие значения "горизонта". Поэтому по мере рисования каждой очередной кривой этот горизонт "всплывает". Фактически этот алгоритм удаления невидимых линий работает каждый раз с одной линией.

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

Рис. 5.5. Обработка нижней стороны поверхности

Подобные кривые, естественно, видимы и представляют собой нижнюю сторону исходной поверхности, однако алгоритм будет считать их невидимыми. Нижняя сторона поверхности делается видимой, если модифицировать этот алгоритм, включив в него нижний горизонт, который опускается вниз по ходу работы алгоритма. Это реализуется при помощи второго массива, длина которого равна числу различимых точек по оси x в пространстве изображения. Этот массив содержит наименьшие значения y для каждого значения x. Алгоритм теперь становится таким: если на текущей плоскости при некотором заданном значении x соответствующее значение y на кривой больше максимума или меньше минимума по y для всех предыдущих кривых при этом значении x, то текущая кривая видима. В противном случае она невидима.

Полученный результат показан на рис. 5.5., б.

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

Изложенный алгоритм приводит к некоторым дефектам, когда кривая, лежащая в одной из более удаленных от точки наблюдения плоскостей, появляется слева или справа из-под множества кривых, лежащих в плоскостях, которые ближе к указанной точке наблюдения. Этот эффект продемонстрирован на рис. 5.6., где уже обработанные плоскости n-1 и n расположены ближе к точке наблюдения. На рисунке показано, что получается при обработке плоскости n+1. После обработки кривых n-1 и n верхний горизонт для значений x = 0 и x = 1 равен начальному значению y; для значений x от 2 до 17 он равен ординатам кривой n; а для значений 18, 19, 20 - ординатам кривой n-1. Нижний горизонт для значений x = 0 и x = 1 равен начальному значению y; для значений x = 2, 3, 4 - ординатам кривой n; а для значений x от 5 до 20 - ординатам кривой n-1. При обработке текущей кривой (n+1) алгоритм объявляет ее видимой при x = 4. Это показано сплошной линией на рис. 5.6. Аналогичный эффект возникает и справа при х = 18. Такой эффект приводит к появлению зазубренных боковых ребер. Проблема с зазубренностью боковых ребер решается включением в массивы верхнего и нижнего горизонтов ординат, соответствующих штриховым линиям на рис. 5.6. Это можно выполнить эффективно, создав ложные боковые ребра.

Рис. 5.6. Эффект зазубренного ребра

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

Вариант 2 ответа на вопрос

Рассмотрим задачу построения графика функций двух переменных z=f(x,y) в виде сетки координатных линий x=const и y=const.

Заметим, что каждая линия семейства z=f(x,y i) лежит в своей плоскости y=y i , причем эти плоскости параллельны и, следовательно, не пересекаются. Поэтому при y j >y i линия z=f(x,y j) не может закрывать линию z=f(x,y i).

Тогда возможен следующий алгоритм построения графика функции z=f(x,y):

Линии рисуются в порядке удаления (возрастания по y) и при рисовании очередной линии рисуется только та ее часть, которая не закрывается ранее нарисованными линиями. Такой алгоритм называется методом плавающего горизонта.

Для определения частей линии z=f(x,y k), которые не закрывают ранее нарисованные линии, вводятся линии горизонта или контурные линии.

Пусть проекцией линии z=f(x,y k) на картинную плоскость является линия Y=Y k (X), где (X,Y) – координаты на картинной плоскости. Контурные линии Y k max (X) и Y k min (X)определяются следующими соотношениями:

· Y k max (X)=max Y i (X),

· Y k min (X)=min Y i (X), где 1<=k<=k-1

На экране рисуются только те части линии Y=Y k (X), которые находятся выше линии Y k max (X) или ниже линии Y k min (X).

Одной из наиболее простых и эффективных реализации данного метода является растровая реализация, при которой в области задания вводится сетка

{ (x j ,y j), i=1, n i }

и каждая из линий Y=Y k (X) представляется в виде ломаной. Для рисования сегментов этой ломаной используется модифицированный алгоритм Брезенхейма, который перед выводом очередного пиксела сравнивает его ординату с верхней и нижними контурными линиями, представляющими в этом случае массивы значений ординат.


17.Двумерные и трёхмерные преобразования тел

Из презентации:

Двумерные преобразования