Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.7 Mб
Скачать

Написание программы.

При написании программы на форму необходимо вывести поля Edit для задания следующих величин: l (1), z (1 м), rmax (поперечные размеры экрана(x,y) изменяются от –rmax до rmax, 1 мм),  (10),  (00), 0 (00). В скобках даны начальные параметры. Волновое число , =0.63 мкм. При расчете полярного угла  удобно воспользоваться следующим методом

Блок 1.1.

Расчет полярного угла

if x=0 then begin if y>=0 then phi:=pi/2

else phi:=-pi/2;

end

else begin phi:=arctan(y/x);

if x<0 then phi:=phi+pi;

end;

Построение изображения происходит следующим образом: экран соответствует размеру квадратного элемента Image на форме, поэтому в каждой его точке (i,j) (в двойном цикле) вычисляется интенсивность по формуле (3) с учетом (4). Координаты экрана изменяются при этом как где изменение знака в у компоненте учитывает тот факт, что отрицательные значения y находятся внизу элемента Image, а n:=Form1.Image1.Height. При расчете яркости точки необходимо учитывать нелинейность свечения монитора, которая приближает диапазон допустимых цветов монитора к реальному треугольнику цветности, который описывает все возможные цвета в природе [2]. Эта нелинейность приблизительно 1/1.7-1/1.8 и мы ее можем приближенно заменить на корень квадратный из интенсивности. Поэтому яркость r,g,b компонент пикселя задается как в виде нормировки (Блок 1.2.), после чего строится точка изображения:

Блок 1.2.

Выведение изображения в градациях серого

Imax:=2;

с:=round (255*I/Imax);

Form1.Image1.Canvas.Pixels[i,j]:=rgb(c,c,c);

Рис. 1.

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

Практическое задание 2. Интерференция пучков Гаусса и Лагерра-Гаусса Теоретическое описание процесса интерференции гауссова пучка и пучка Лагерра-Гаусса.

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

, (1)

где l – топологический заряд оптического вихря, полином Лагерра (мы выберем пучок с m=0, ), поле второго пучка

, (2)

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

Интенсивность суммарного поля на экране можно записать как

, (3)

где , , , .

Написание программы.

При написании программы на форму необходимо вывести поля Edit для задания следующих величин: l (3), z (100 мкм), rmax (поперечные размеры экрана(x,y) изменяются от –rmax до rmax, 30 мкм), (00), (3 мкм), (10 мкм), a2 (1) (a1 полагаем 1). В скобках даны начальные параметры. Волновое число , =0.63 мкм. При расчете полярного угла  удобно воспользоваться методом, описанным в первой работе (Блок 1.1). Расчет интенсивности, согласно формуле (3), желательно вынести в отдельную функцию или процедуру, в которую передаются координаты x,y и рассчитываются поля и интенсивность (Указание: параметры, считываемые с формы и параметры пучков должны быть глобальными переменными). В основной процедуре по нажатию кнопки необходимо считать начальные данные, а затем рассчитать максимальное значение интенсивности в массиве Image, находящимся на форме (блок 2.1).

Блок 2.1.

Нахождение максимального значения интенсивности

Imax:=0;

for i:= 0 to XXX do for j:= 0 to YYY do

if Imax<I[i,j] then Imax:=I[i,j];

После этого в аналогичном цикле производится построение распределения интенсивности в каждой точке (i,j) .При этом задается яркость r,g,b компонент пикселя и строится точка изображения (Блок 2.1.)

Блок 2.2

Вывод изображен изображения в градациях серого

с:=round (255*I/Imax);

Form1.Image1.Canvas.Pixels[i,j]:=rgb(c,c,c);

Рис. 2.

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