Научная статья на тему 'Ускоренные методы построения триангуляции Делоне'

Ускоренные методы построения триангуляции Делоне Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
627
87
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Николаев А. А., Зотин А. Г.

Рассмотрены ускоренные методы построения триангуляции Делоне. Приведен алгоритм с кэшированием поиска треугольников и алгоритм «разделяй и властвуй», а также рассмотрен алгоритм «удаляй и строй», как часть алгоритма «разделяй и властвуй».

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Ускоренные методы построения триангуляции Делоне»

Актуальные проблемы авиации и космонавтики. Информационные технологии

При создании сайтов http://yoga-kailas.ru, http://eleonoranabeeva.ru была использована технология PHP. Такой выбор был сделан не случайно. Эта технология позиционирована как простое в освоении и доступное бесплатное средство создания небольших пользовательских приложений, которое поддерживает при этом множество надстроек. В процессе проектирования этих сайтов был выявлен ряд серьезных трудностей применения PHP с точки зрения разработчика. Самым главным недостатком является то, что процесс выявления и исправления ошибок занимал большую часть проектирования ввиду того, что отладка в PHP не реализована принципиально.

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

Главный недостаток ASP.NET, который тормозит распространение этой, безусловно, передовой технологии - трудность в самостоятельном изучении и большой объем информации, необходимой разработчику при проектировании сайтов. Связано это с тем, что ASP.NET разрабатывалась как технология создания крупных проектов с максимальной степенью специализации (отсюда и поддержка в ASP.NET большого числа языков и способов программирования, в том числе и объектно-ориентированного). Тем не менее, принципы, заложенные в ASP.NET, при соответствующей степени квалификации разработчиков, позволяют разрабатывать даже небольшие проекты с существенной экономией времени. Поэтому при разработ-

ке коммерческих проектов и проектов с жесткими временными рамками уже сейчас ASP.NET выглядит «более современной» технологией. К тому же существующие в настоящее время тенденции (соотношение количества сайтов разработанных по технологиям ASP.NET и PHP составляет 2:3, хотя еще два-три года назад это соотношение оценивалось как 1:9) позволяют с уверенностью утверждать, что ASP.NET в скором времени станет основной технологией разработки web-приложений.

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

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

Библиографические ссылки

1. Liberty J. Programming C#. -U. : O'Reilly Media, 2007.

2. Liberty J. Programming ASP.NET. -U. : O'Reilly Media, 2008.

3. Скляр Д., Трахтенберг A. PHP. Рецепты программирования. M. : Русская Редакция, 2007.

© Набеева Э. Р., Кагиров Р. Р., 2011

УДК 004.932

А. А. Николаев Научный руководитель - А. Г. Зотин Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева, Красноярск

УСКОРЕННЫЕ МЕТОДЫ ПОСТРОЕНИЯ ТРИАНГУЛЯЦИИ ДЕЛОНЕ

Рассмотрены ускоренные методы построения триангуляции Делоне. Приведен алгоритм с кэшированием поиска треугольников и алгоритм «разделяй и властвуй», а также рассмотрен алгоритм «удаляй и строй», как часть алгоритма «разделяй и властвуй».

Построение триангуляции Делоне самая трудоемкая задача при построении поверхности на основе данных лазерного сканирования. Сложность заключается в необходимости обработки большого количества точек (от 2 млн). Существуют алгоритмы позволяющие выполнить данную операцию значительно быстрее, чем классическая реализация, трудоемкость, которого составляет O(N2) в лучшем и среднем случае.

Алгоритм с кэшированием поиска треугольников. Трудоемкость данного алгоритма составляет O(N2) в среднем и O(N) в лучшем случае. Данный алгоритм классифицируется как итеративный алгоритм. В итеративном алгоритме на первом шаге за основу берется треугольник, в который будут попадать все точки.

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

Секция ««Информатика и вычислительная техника»

точку. В каждом прямоугольнике хранятся указатели на треугольники, с которыми он пересекается. Затем в локализованной области используется поиск из простого итеративного алгоритма [1].

Алгоритм «Разделяй и властвуй». Трудоемкость данного алгоритма составляет O(N■logN) в лучшем и в среднем случае. Данный алгоритм входит в группу алгоритмов слияния. Принцип алгоритмов слияния заключается в разделении всех точек на области. Из точек каждой области строится триангуляция, а затем выполняется слияние всех триангуляций. В нашем случае все точки делятся пополам. В получившихся группах точки опять делятся поровну, итак до тех пор, пока не будут получены группы с количеством точек 3 или 4. Наиболее простым методом слияния триангуляций является метод «удаляй и строй».

Метод «удаляй и строй». Для двух триангуляций находятся две общие касательные, первая из которых становится базовой линией, от нее начинается построение треугольников в промежутке между сливаемыми подмножествами. Ищется ближайший к базовой линии внешний узел, строится треугольник, вер-

шинами которого являются концы базовой линии и новый узел. При этом иногда требуется удалить уже существующий треугольник. Открытая сторона построенного треугольника становится новой базовой линией[2].

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

Библиографические ссылки

1. Скворцов А. В. Триангуляция Делоне и ее применение. Томск : Томск. ун-та, 2002.

2. Попов С., Попов Ю. Триангуляция : Ийр://гат. ifmo.ru/cat/data/theory/math/triangulation-2008/агЫс1е.рё/.

© Николаев А. А., Зотин А. Г., 2011

УДК 004.9

Д. С. Новиков, Д. С. Лазарев Научный руководитель - О. Н. Моргунова Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева, Красноярск

ИССЛЕДОВАНИЕ НАЧАЛЬНОЙ ЗАГРУЗКИ ОПЕРАЦИОННОЙ СИСТЕМЫ LINUX

Рассматриваются проблемы, которые могут возникнуть в ситуации установки на компьютер двух или более ОС. Предлагаются рекомендации по решению этих проблем.

В данный момент перспективным направлением развития нашего вуза в области информатизации является внедрение системы «Сетевой университет» на базе операционной системы (ОС) Linux. В связи с этим является важным рассмотрение различных аспектов использования данной ОС. В первую очередь следует остановиться на проблеме начальной загрузки ОС Linux.

Пока ОС еще не запущена, функционирование ПК контролируется программой, записанной в памяти, доступной только для чтения (prom), называется эта программа BOIS. BIOS осуществляет базовую самопроверку машины и считывает необходимые параметры из энергонезависимой памяти (nvram). Если BIOS удается получить доступ к загружаемому устройству, он активизирует первичный загрузчик, который хранится в первом секторе загружаемого устройства (MBR). Управление передается первичному загрузчику.

Так как MBR у ПК очень мала (ее размер составляет 512 байт), поместить туда полноценный загрузчик невозможно. Поэтому основная обязанность первичного загрузчика ОС состоит в том, чтобы найти на диске вторичный загрузчик. В случае если удается найти вторичный загрузчик, управление передается ему, и он загружает ядро ОС. Вторичные загрузчики нередко обладают большим количеством дополни-

тельных функций, таких как возможность выбирать загружаемое ядро, передавать ему некоторые параметры, настраивать оформление экрана и т. д. [1].

В качестве начального загрузчика ОС Linux обычно используется LILO (Linux LOader) или GRUB (GRand Unified Bootloader). LILO может загружать только ядра Linux, а GRUB является универсальным загрузчиком. Каждый из них может быть установлен либо как вторичный загрузчик (роль первичного в MBR будет выполнять загрузчик DOS), либо как загрузчик из двух частей: первичный и вторичный. Первая часть загрузчика запишется в MBR и будет содержать загрузочный код второй части, записанной в корневом разделе [2].

Когда ядро ОС уже загружено, оно инициализирует устройства (с помощью их драйверов), запускает swapper (это процесс ядра, который называется kswapd в современных ядрах Linux) и монтирует корневую файловую систему. Далее запускается процесс init, он считывает файл /etc/inittab, где и находит свои дальнейшие инструкции. Процесс init является родителем всех процессов. Файл /etc/inittab определяет, что должно быть запущено и на каком уровне запуска (run-level).

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

i Надоели баннеры? Вы всегда можете отключить рекламу.