Компьютерные модели света Компьютерные методы моделирования оптических приборов кафедра прикладной и компьютерной оптики 2 3 Векторная модель э.м. поля Уравнения Максвелла: rot E H t E rot H c t div D c E Ex E Ey Ez Hx H Hy Hz H div B 0 E – вектор электрической напряженности поля H – вектор магнитной напряженности поля D – электрическая индукция B – магнитная индукция ρ – объемная плотность заряда: ε, μ – электрическая и магнитная проницаемость среды S 4 Скалярная модель э.м. поля Переход к скалярной модели возможен для линейных и однородных сред и монохроматического поля Комплексная амплитуда поля: ik E (r ) U (r ) a(r ) e 0 где a(r ) U (r ) – вещественная амплитуда, E (r ) k0 c – волновое число в вакууме Уравнение Гельмгольца: 2 k 2 U 0 0 k0 – эконал поля, 5 Интенсивность поля Регистрируется усредненная во времени величина – интенсивность поля Интенсивность равна квадрату модуля комплексной амплитуды: 2 I U UU * 6 Компьютерное представление поля Интенсивность света – выборка (n×m) Комплексная амплитуда поля – 2 выборки (n×m) Интенсивность Вещественная часть к.а. поля Мнимая часть к.а. поля Векторная модель поля – 12 выборок (n×m): Ex электрическая компонента поля E E y : 3×2 выборки (n×m) Ez Hx магнитная компонента поля H H y : 3×2 выборки (n×m) Hz 7 Объектно-ориентированная модель поля PAR Sample -m_data : PAR -m_nx : int -m_ny : int +Maximum() : double +Minimum() : double +Sum() : double Field -m_sample : Sample<double> -m_left -m_rigth -m_xstep -m_ystep FullField -m_field_x : Field -m_field_y : Field -m_field_z : Field ElectricField : FullField MagneticField : FullField m_field_x : Field m_field_y : Field m_field_z : Field m_field_x : Field m_field_y : Field m_field_z : Field 8 Волновой фронт Волновой фронт – это поверхность равной фазы или равного эйконала: E r const P const q – оптический лучевой вектор q n X n cos x q Y n cos y Z n cos z где X, Y, Z – направляющие косинусы 9 Волновой фронт и лучи Луч – это нормаль к волновому фронту направление луча совпадает с направлением распространения волнового фронта и определяется оптическим вектором в каждой точке пространства (x, y, z) x s y z X q Y Z луч q E3 E1 E2 10 Оптический луч в однородной и неоднородной среде В однородной среде n const направление луча остается постоянным: q const в однородной среде лучи являются прямыми линиями на границе раздела двух сред луч преломляется в соответствии с законом преломления В неоднородной среде луч искривляется в сторону градиента показателя преломления n q кривизна луча пропорциональна n n луч 11 Пучок лучей Гомоцентрические пучки лучей имеют общий центр, то есть все лучи выходят или сходятся в одной точке волновой фронт гомоцентрического пучка сферический в частном случае волновой фронт плоский Квазигомоцентрический пучок лучей - это пучок, все лучи которого проходят через небольшую область пространства О 12 Габаритные лучи Апертурный луч – это луч, идущий из осевой точки предмета и проходящий через край апертурной диафрагмы Главный луч – это луч, идущий из внеосевой точки предмета и проходящий через центр апертурной диафрагмы Верхний (нижний) луч внеосевого пучка – это луч, проходящий через верхний (нижний) край апертурной диафрагмы и соответствующие ему сопряженные точки входного и выходного зрачков апертурный луч верхний луч главный луч нижний луч вх. зрачок вых. зрачок 13 Объекто-ориентированная модель реального луча ORealRay ORealRayPath +m_X : double +m_x : double +m_Y : double +m_y : double +m_Z : double +m_z : double +ORealRay() +ORealRay(in other : const ORealRay&) +~ORealRay() +operator=(in other : const ORealRay&) : ORealRay& +Reset() : void +Transfer(in l : double) : void -m_length : double -m_ray : vector<ORealRay> +ORealRayPath() +ORealRayPath(in other : const ORealRayPath&) +~ORealRayPath() +operator=(in other : const ORealRayPath&) : ORealRayPath& +Reset() : void +Reserve(in size : int) : void +GetRay(in index : int) : ORealRay& +SetRay(in ray : const ORealRay&, in index : int) : void +AddLength(in length : double) : void +GetLength() : double * * 1 OBeam +m_chief : ORealRayPath +m_marginal : vector<ORealRayPath> +MeridAxisBeamForm() +MeridNonAxisBeamForm() +SagNonAxisBeamForm() 1 14 Параксиальные лучи Параксиальный луч - луч, идущий бесконечно близко к оптической оси Параксиальный луч в меридиональной плоскости: y Y y Y где Y n y , y – угол между лучом и оптической осью Для параксиального луча (малых углов): cos sin 15 Преобразование координат оптических лучей Действие оптической системы заключается в преобразовании координат лучей: y y ОС Y Y Преобразование координат луча оптической системой в матричной форме: y A B y Y C D Y Матрица преобразования лучей (гауссова матрица, ABCD-матрица): A B G C D 16 Матрицы преломления и переноса Матрица преломления сферической поверхности: 1 0 R ( n n ) 1 Матрица переноса между поверхностями: 1 T 0 d где n d n 1 – приведенное расстояние между опорными плоскостями Матрица оптической системы: G RnTn ...R1T1T0 17 Расчет параксиальных лучей через оптическую систему Нулевые лучи – это лучи, которые преломляются по законам параксиальной оптики, но имеют произвольно большие координаты Этапы расчета нулевых лучей: определение входных координат луча последовательное определение координат луча на всех компонентах определение выходных координат луча Для расчета берется пара лучей: апертурный луч главный луч 18 Объектно-ориентированная модель параксиального луча ONullRay ONullRayPair -m_a : double -m_h : double +ONullRay() +ONullRay(in h : double, in a : double) +ONullRay(in other : const ONullRay&) +~ONullRay() +operator=(in other : const ONullRay&) : ONullRay& +Reset() : void +GetA() : double +GetH() : double +SetA(in a : double) : void +SetH(in h : double) : void -m_marginal : ONullRay -m_principal : ONullRay +ONullRayPair() +ONullRayPair(in other : const ONullRayPair&) +~ONullRayPair() +operator=(in other : const ONullRayPair&) : ONullRayPair& +Reset() : void +GetMarginalA() : double +GetMarginalH() : double +GetMarginalRay() : ORealRay& +GetPrincipalA() : double +GetPrincipalH() : double +GetPrincipalRay() : ORealRay& +SetMarginalA(in a : double) : void +SetMarginalH(in h : double) : void +SetMarginalRay(in h : double, in a : double) : void +SetPrincipalA(in a : double) : void +SetPrincipalH(in h : double) : void +SetPrincipalRay(in h : double, in a : double) : void * 1 ONullRayPath -m_ray : vector<ONullRayPair> +ONullRayPath() +ONullRayPath(in other : const ONullRayPath&) +~ONullRayPath() +operator=(in other : const ONullRayPath&) : ONullRayPath& +Reset() : void +Reserve(in size : int) : void +GetCount() : int +GetRay(in index : int) : ONullRayPair& +SetRay(in ray : const ONullRayPair&, in index : int) : void * 1 19 Отличия расчета реальных и нулевых лучей через поверхность Перенос и преломление реального луча: H d y y Y n Y Y y где d – расстояние вдоль луча между поверхностями (косая толщина), – оптическая сила поверхности в точке преломления луча H d -a y d S S Оптическая сила поверхности в параксиальной области: (n'n) Оптическая сила поверхности для реального луча: ( n' cos 'n cos ) где , – углы падения и преломления реального луча 20 Расчет реального луча Преобразование координат Нахождение длины луча между поверхностями Перенос Преломление