ИССЛЕДОВАНИЕ И РАЗРАБОТКА НОВЫХ МЕТОДОВ КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ РАБОТЫ ОПТИЧЕСКИХ
СИСТЕМ В.М. Домненко, А.А. Шехонин
Первый этап научно-исследовательской работы на тему «Исследование и разработка методов компьютерной оптики для моделирования, проектирования, конструирования и изготовления оптических систем» посвящен методам компьютерного моделирования работы оптических систем, формирования и анализа качества оптического изображения. В данной работе используется новая объектно-ориентированная модель произвольной оптической системы, которая реализуется на основе связанных структур данных. Этот подход делает структуру данных адаптируемой и расширяемой, а также позволяет моделировать многоконфигурационные системы и системы с переменными характеристиками.
1. Введение
В 80-90-е годы внимание разработчиков программного обеспечения для проектирования и анализа оптических систем было направлено на реализацию алгоритмов вычислительной оптики для персональной компьютерной техники. При этом основными проблемами являлись повышение скорости вычислений и уменьшение объема используемой памяти [1]. В последние годы эти проблемы теряют свою актуальность, так как характеристики персонального компьютера существенно улучшились (в частности, выросло быстродействие процессора, увеличился объем оперативной памяти, снизилось время доступа к данным и другие изменения).
В то же время номенклатура физически реализуемых оптических поверхностей, сред и элементов постоянно расширяется. Усложняется компоновка оптических систем (развивается класс систем с синтезированной апертурой, световые пути во многоконфигурационных системах становятся более сложными, и т.д.). Конструкторы требуют от инструментов новых возможностей для описания структуры оптической системы, новых механизмов для простого и быстрого расширения ее возможностей, новых технологий анализа качества системы и ее оптимизации. Все это ставит перед разработчиками проблемы организации гибкой, легко расширяемой, полиморфной структуры данных об оптической системе.
Эти проблемы могут быть решены путем привлечения новых технологий анализа и проектирования программных систем. Наличие в стандартных библиотеках современных языков программирования таких структур данных, как массивы переменного размера, списки, деревья, ассоциативные массивы [2], упрощает реализацию разработанных моделей. Новые подходы дают новые возможности, но требуют пересмотра и модернизации математических и численных методов, которые используются в прикладной и вычислительной оптике.
В данной работе предлагается построить модель оптической системы на основе объектно-ориентированной технологии программирования [3]. При разработке объектно-ориентированной модели произвольной оптической системы необходимо ответить на два принципиальных вопроса:
1) что представляет собой базовый объект в структуре данных оптической системы?
2) как организовать хранение набора объектов и их взаимного расположения?
Эти вопросы стоят наиболее остро при разработке программного обеспечения для проектирования оптики с последовательным расчетом лучей. В этом случае в структуре данных должны храниться непосредственно объекты, а также должна быть указана их последовательность в каждой конфигурации. В данной статье рассматриваются объекты, которые могут использоваться в качестве базовых. Затем предлагается структура данных для хранения набора разнородных объектов, представляющего собой модель оптической системы, в том числе и многоконфигурационной.
2. Базовый объект для модели оптической системы 2.1 Традиционный подход
Традиционно в программах проектирования оптики оптическая система представляется в виде набора поверхностей. Под поверхностью (рис. 1) понимается совокупность параметров, которую составляют не только геометрические параметры поверхности раздела двух сред (радиус кривизны Я, эксцентриситет и другие), но и дополнительная информация: параметры сред до и после поверхности, расстояние до следующей поверхности ё, световой диаметр к, повороты и смещения и др.
Рис. 1. Понятие «поверхность» в программах проектирования оптики
Как видим, понятие «поверхность» потеряло свой первоначальный смысл. При включении в системы проектирования оптики новых элементов и сред разработчики пытаются подогнать их под это понятие. В результате поверхностью оказывается параксиальный элемент, градиентная среда, атмосфера и другие. Часто это затрудняет освоение и работу пользователя с программой, а также усложняет саму программу и ее развитие программистами.
2.2. Поверхность как базовый объект
При переходе к объектно-ориентированной модели оптической системы наиболее простым и напрашивающимся решением является выбор в качестве базового объекта оптической поверхности (Surface). Следуя принципам абстракции и наследования, можно выявить общие атрибуты для каждой оптической поверхности и унаследовать их в объектах-наследниках. Диаграмма наследования, реализованная в обозначениях унифицированного языка моделирования (UML) [4], приведена на рис. 2.
Рис. 2. Диаграмма наследования от базового объекта Surface
Упрощенные диаграммы базового объекта Surface и объекта-наследника Conic Surface, описывающего поверхность второго порядка, представлены на рис. 3.
Surface
#h : double #n : double #n' : double #d : double Conic Surface
#R : double #c : double
а) б)
Рис. 3. Диаграммы объектов Surface (а) и Conic Surface (б)
Это решение существенно упорядочивает структуру данных о поверхностях различных типов. Функциональный интерфейс базового объекта обеспечивает безболезненное внедрение в структуру данных новых типов поверхностей. Однако структура данных с базовым объектом Поверхность недостаточно абстрактна для реализации виртуальных оптических элементов, таких как параксиальный элемент. Новые элементы и среды тоже оказываются за пределами модели.
2.3. Деталь как базовый объект
Следующий вариант базового объекта - это оптическая деталь (Part). В отличие от других вариантов деталь - наиболее понятный и естественный объект. Аналогично, от базового объекта можно построить иерархию наследования деталей (рис. 4). Упрощенные диаграммы объекта Part и его наследника Lens, описывающего деталь типа линза, представлены на рис. 5.
Рис. 4. Диаграмма наследования от базового объекта Part
Lens
-R1 : double -R2 : double -d : double -n : double
б)
Рис. 5. Диаграммы объектов Part (а) и Conic Surface (б)
Использование детали как базового объекта отражает структуру оптической системы наиболее адекватно. Виртуальные элементы также могут быть адаптированы к концепции детали. Однако этот вариант далек от идеала. В этом случае описание таких деталей, как склеенная линза или разделитель пучков, приводит к затруднениям. Кроме того, на некоторых этапах проектирования оптической системы (в частности, синтез и оптимизация) работа с деталями в оптическом программном обеспечении неудобна для пользователей.
2.4. Элемент и направляющая
Недостатки рассмотренных вариантов можно преодолеть, если в качестве базовых использовать не один, а два типа объектов: элементы и направляющие. Элемент (Element) - это объект, который осуществляет такие преобразования оптического излучения, как преломление и отражение. Элемент также ограничивает пучки. Направляющая (Guide) - это объект, который осуществляет перенос оптического излучения в среде.
Part
#D : double
а)
Также направляющая описывает взаимное положение элементов. Таким образом, модель оптической системы представляет собой набор чередующихся элементов и направляющих. Иерархия наследования для объектов типа Элемент представлена на рис. 6. Упрощенные диаграммы объектов Element и Guide представлены на рис. 7.
Рис. 6. Диаграмма наследования от базового объекта Element
Guide
Element
#m : Medium #d : double
#D : double
а) б)
Рис. 7. Диаграммы объектов Element (а) и Guide (б)
Как видно из иерархии, элемент представляет собой обобщение понятия поверхность. Поверхность, виртуальные элементы, сложные детали сведены к концепции оптического элемента. Направляющая не является наследуемым объектом, но для описания различных сред может использоваться иерархия наследников объекта Medium.
Такое представление базовых объектов позволяет моделировать любой оптический компонент. Как показано ниже, этот подход является наиболее гибким и расширяемым и позволяет моделировать многоконфигурационные системы и системы с переменными параметрами.
3. Структура данных для модели оптической системы
3.1. Традиционный подход
В программах проектирования оптики, реализованных на языках Fortran, C, Pascal, структура данных представляет собой набор массивов встроенных типов данных, в которых хранятся параметры поверхностей. Например, центрированная оптическая система, состоящая из поверхностей второго порядка, в такой структуре данных будет представлена следующими массивами [5]:
• R [NS] - массив значений кривизны;
• С [NS] - массив значений эксцентриситета;
• N [NS, NL] - двумерный массив, содержащий показатели преломления на различных длинах волн;
• D [NS-1] - массив расстояний между поверхностями;
• H [NS] - массив световых высот, где NS - количество поверхностей в системе, а NL - количество длин волн.
Достоинство такой структуры данных заключается в простоте и быстром индексированном доступе к любому элементу массива. Среди многочисленных недостатков следует обратить внимание на сложность расширения. Например, описание асферических поверхностей, градиентных сред и других сразу требует дополнительных масси-
вов. При этом в оптических системах таких поверхностей и сред немного, а память для хранения дополнительных параметров должна быть зарезервирована. В результате структура данных получается нерациональной, с большим количеством «пустых» значений. Использование массивов ограничивает количество поверхностей, которые могут составить оптическую систему. Нетривиально осуществляется вставка новой поверхности в произвольной позиции массива. При использовании же массивов переменного размера требуется трудоемкое синхронное переразмещение всех массивов в памяти.
Простейшей альтернативой, улучшающей структуру данных, является использование массива объектов типа Поверхность. Точнее, в массиве хранятся указатели на базовый тип Surface, так как массив - гомогенная структура данных. Ряд указанных выше проблем решается, однако оставшиеся недостатки побуждают к поиску альтернативных подходов.
3.2. Связанная структура данных
Одним из альтернативных вариантов является организация связанной структуры данных. В основу связанных структур данных положена простая идея: хранить информацию о последовательности в самом элементе структуры данных. Наиболее универсальной связанной структурой является двусвязный список [6] (далее - просто список). В списках размещаются узлы, которые, кроме значения, хранят указатели на предыдущий и последующий узел. Таким образом, однозначно определяется последовательность элементов. Среди достоинств списка следует отметить, что поддерживается двусторонний обход, вставка и удаление элементов в начало, конец и середину последовательности за постоянное время.
При построении модели оптической системы в узлах списка можно хранить указатель на базовый объект типа Поверхность или Деталь (рис. 8). Возможна организация чередующегося хранения элементов и направляющих (рис. 9).
Рис. 8: Список поверхностей
Рис. 9: Список чередующихся элементов и направляющих
При расчете лучей и реализации других алгоритмов легко организуется обход списка от первого до последнего элемента (от предмета до изображения). Возможно использование вспомогательных объектов, реализованных на основе паттернов «итератор» или «посетитель» [7] для обхода в алгоритмах расчета лучей, при отображении оптической схемы и выполнении других операций.
Двусвязные списки имеют одно ограничение. Они позволяют описать только линейную последовательность элементов. Таким образом, многоконфигурационные системы, в которых световые пути могут разветвляться, не могут быть описаны с помощью такой структуры данных. Для описания таких систем следует использовать другие типы связанных структур данных.
3.3. Структура данных на основе графов
При моделировании систем со сложной структурой успешно используется теория графов [8]. Предлагается использовать графы для описания широкого класса оптических систем (многоконфигурационные системы, системы с синтезированной апертурой и любые другие). Оптическую систему можно представить в виде направленного ациклического графа, если использовать базовые объекты элемент и направляющая. Узел графа - это оптический элемент, а ребро графа - это направляющая. На рис. 10 приве-
дена схема многоконфигурационной оптической системы с разделителем пучков (а) и диаграмма ее структуры данных (б).
1гп1
а
б
Рис. 10. Схема многоконфигурационной оптической системы с разделителем пучков (а)
и диаграмма ее структуры данных (б)
Одним из способов организации хранения данных о расположении и связях узлов графов являются списки смежностей [8]. Этот способ можно применить и здесь с некоторыми модификациями. Последовательность прохождения элементов в рамках одной конфигурации соответствует пути графа. В модели оптической системы рассматриваются не все возможные пути графа, а лишь световые каналы, которые начинаются на элементе типа Предмет и заканчиваются на элементе типа Изображение. При этом в рамках одной конфигурации между двумя узлами может быть только одна смежность. Таким образом, в структуре данных должны четко отслеживаться смежности между узлами в конкретной конфигурации.
Структура данных об оптической системе, построенная на основе графов, является весьма перспективной. Она позволяет описывать оптические системы сколь угодно сложной конфигурации, может использоваться как для организации последовательного, так и непоследовательного расчета лучей. Она понятна как разработчикам программ, так и ее пользователям.
4. Заключение
Объектно-ориентированный подход позволил найти альтернативы традиционным вариантам. Принципы абстракции и наследования упорядочивают параметры гетерогенных объектов в иерархии. Структура данных, построенная на основе графов, обладает следующими свойствами:
• гибкость и расширяемость;
• близость внутреннего представления внешнему;
• простота реализации и использования.
Такая структура данных может быть легко реализована на одном из объектно-ориентированных языков программирования. При этом и разработчики, и пользователи программы будут работать в рамках единой модели, пригодной для описания произвольной оптической системы. Это очень важно для успеха инструмента проектирования оптики.
В рамках данной работы с использованием представленной структуры данных были решены задачи анализа габаритов и аберраций оптических систем, моделирования и оценки качества оптического изображения. При выполнении научно-исследовательской работы сформирован пакет программ, обладающий следующими возможностями:
• расчет лучей через оптическую систему с произвольным расположением оптических элементов;
• определение реальных световых габаритов оптических систем с использованием системы дифференциалов лучей;
• вычисление различных видов аберраций оптических систем: поперечные, продольные, волновые, полевые, неизопланатизм и др.
• вычисление характеристик качества оптических систем (ФРТ, ФРЛ, ФКЭ, пограничная кривая, ОПФ и др.);
• моделирование формирования изображения объектов произвольной формы при различных условиях освещения.
Литература
1. P. Robb, B. Pawlowski. Computer ray tracing speeds. // Applied optics. 1990. Vol. 29. № 13. Р.1933-1939.
2. B. Stroustrup, The C++ Programming Language. Third Edition, Chapter 3, Addison-Wesley, 1997.
3. G. Booch, Object-Oriented Analysis and Design with Applications. Second Edition, Addi-son-Wesley, 1994.
4. M. Fowler, K. Scott, UML Distilled. A Brief Guide to the Standard Object Modeling Language. Addison-Wesley, 2000.
5. Родионов С.А. Автоматизация проектирования оптических систем Л.: Машиностроение, 1982.
6. W. Todd, W. Ford, Data structure in C++, Chapter 9, Prentice Hall, 1995.
A. V. Aho, J. E. Hopcroft, J. Ullman, Data Structures and Algorithms. Chapter 6-7. Addison-Wesley, 1983.
7. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Chapter 5. Addison-Wesley, 1995.