Курсовая работа: Преломление света на границе раздела двух сред

Курсовая работа: Преломление света на границе раздела двух сред




💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































В наше время ни один человек не может обойтись без компьютера. Не зря говорят, что наш век – век компьютеризации. В каждом доме, в каждом офисе стоит компьютер, даже путешествуя, человек не забывает взять с собой ноутбук.
Компьютер стал для многих людей верным помощником в работе и досуге. Он позволил совершить скачок в организации промышленности, науки и рынка.
Каждый час компьютерные технологии совершенствуются, они становятся все более удобными и безопасными для здоровья человека. Теперь можно использовать в своей работе уже готовые программные продукты, позволяющие экономить время и соответственно деньги, работать на дальнем расстоянии.
Компьютеры используют и в целях физических испытаний, демонстраций. Именно поэтому я решил создать программу, которая демонстрирует преломление лучей на границе раздела двух сред.
Целью создания курсовой работы является разработка программного продукта, который выполняет демонстрацию явления преломления лучей на границе раздела двух сред.
Необходимо разработать программный продукт с удобным интерфейсом, позволяющий выполнить демонстрацию преломления луча в зависимости от угла падения и свойств сред.
Программный продукт должен правильно работать при любых корректно заданных исходных данных. В случае неправильного ввода исходных данных должно быть предложено повторить ввод. Исходные данные должны вводиться как с клавиатуры, так и из файла.
При выполнении операции расчета угла преломления входными данными являются показатели преломления сред и угол падения. Входные данные поступают либо с клавиатуры, либо из файла.
Выходными данными является угол преломления луча. Выходные данные выводятся на экран монитора и в файл.
Для реализации данной программы я выбрал Турбо Паскаль 7.0. Эта версия позволила объединить в рамках единой системы мощный алгоритмический потенциал языка, методы объектно-ориентированного программирования, графику, удобные средства тестирования и отладки программ, а также обеспечить дружественный интерфейс с пользователем. Паскаль способствует внедрению современной технологии программирования, основанной на принципах структурного программирования и пошаговом методе проектирования программ. Он очень удобен для решения задач вычислительного и логического характера, обработки строк и системного программирования. Развитая система типов позволяет разрабатывать адекватные представления структур данных практически для любой задачи. В то же время существующие в Турбо Паскале средства преобразования типов дают возможность гибко манипулировать различными данными. Основные операторы языка являются хорошей иллюстрацией базовых управляющих конструкций структурного программирования. Их использование позволяет записывать сложные алгоритмы обработки данных в компактной форме. Большую помощь программистам оказывает библиотека стандартных программ Турбо Паскаля. Эта библиотека модернизируется и пополняется уже более 5 лет. В нее входят средства для работы с оперативной и внешней памятью, клавиатурой, дисплеем и другими внешними устройствами ПЭВМ. Система программирования Турбо Паскаля поддерживает модульный принцип программирования, который лежит в основе всех современных технологий разработки программ. Также хорошо выполнена справочная система. В среду встроен многофункциональный отладчик, позволяющий проводить пошаговое выполнение программы, генерировать условные и безусловные точки остановок. Общепризнанно, что среда системы программирования ТП играет роль эталона для программных продуктов этого типа. Опираясь на все вышесказанное, можно утверждать, что система программирования ТП еще много лет будет незаменимым инструментом и полезным партнером для тех, кто программирует на универсальных алгоритмических языках.

Рассмотрим падение плоской волны на границу, разделяющую две прозрачные однородные диэлектрические среды с показателями преломления и . Будем считать, что граница представляет собой плоскость (так как в пределах бесконечно малой области любую поверхность можно считать плоской). Будем также считать, что сама граница раздела свет не поглощает.
После прохождения границы раздела двух сред падающая плоская волна (луч ) разделяется на две волны: проходящую во вторую среду (луч ) и отраженную (луч ) (рис.1)
Рис.3.1. Преломление и отражение света на границе двух сред.
На рис.1. N – вектор нормали к поверхности в точке падения единичной длины . Поместим начало координат в точку падения. Определим следующие величины:
Угол падения – это угол между лучом , падающим на преломляющую или отражающую поверхность, и нормалью к поверхности в точке падения.
Угол преломления – это угол между преломленным лучом и нормалью к поверхности в точке преломления.
Угол отражения – это угол между отраженным лучом и нормалью к поверхности в точке отражения.
После прохождения светом границы раздела двух сред необходимо определить направление распространения преломленной волны и отраженной волны , и распределение энергии между отраженной и преломленной волной.
В соответствии с уравнением плоской волны запишем выражения для комплексных амплитуд падающей, отраженной и преломленной волн:
уравнение преломленной плоской волны
где , , – оптические векторы падающей, отраженной и преломленной волн, – волновое число, – радиус-вектор произвольной точки.
Здесь мы используем соотношения скалярной теории, поскольку закон преломления одинаков для векторных и скалярных волн.
Из уравнений падающей и преломленной плоской волны следует, что на границе раздела двух сред у падающей и преломленной волн амплитуды могут быть различны, но должны совпадать значения эйконалов (этого требует условие физической реализуемости, так как иначе волна будет иметь разрыв на границе раздела):
Это равенство соблюдается на границе раздела, то есть для всех , перпендикулярных вектору нормали. Таким образом, выражение можно записать в виде:
То есть , если . Выполнение этих условий возможно тогда и только тогда, когда . Таким образом, можно вывести формулировки закона преломления в векторной форме:
Так как длина оптического вектора равна показателю преломления среды ( , ), то из выражения и определения векторного произведения можно вывести классический закон преломления Снеллиуса.
Падающий луч, преломленный луч и нормаль к поверхности раздела двух сред в точке падения лежат в одной плоскости.
Произведение показателя преломления на синус угла между лучом и нормалью сохраняет свое значение при переходе в следующую среду:
Чтобы найти скаляр , домножим скалярно выражение на вектор нормали :
Величина имеет большое значение в математическом аппарате расчета лучей на компьютере.
n– вещественное, хранит показатель преломления первой среды.
n1 – вещественное, хранит показатель преломления второй среды.
alpha – вещественное, хранит угол падения луча в градусах.
alpha1 – вещественное, хранит угол преломления луча.
radalpha – вещественное, хранит угол падения в радианах.
radalpha1 – вещественное, хранит угол преломления в радианах.
Рис.4.1. Схема взаимосвязей процедур и функций
ReCalc (n: real; n1: real; alpha: real): real – возвращает угол преломления. n, n1 – показатели преломления, alpha – угол падения.
Menu(number: Integer): Integer – реализует работу с меню, возвращает выбранный пункт. number – предыдущий выбранный пункт меню.
ChangeN(flag: integer): real – возвращает новое значение показателя преломления. Если flag равен 1 – задается для первой среды, если 2 – для второй.
ChangeAl(n: real; n1: real; alpha: real): real – возвращает новое значение угла падения. n, n1 – показатели преломления, alpha – угол падения.
arcsin (x: real): real – возвращает арксинус аргумента x.
MainCycle() – выполняет основной цикл программы.
GraphMode() – выполняет инициализацию графического режима.
Paint(n: real; n1: real; alpha: real) – отображает график, демонстрирующий преломление луча. n, n1 – показатели преломления, alpha – угол падения.
Recv() – выполняет вывод на экран реквизитов пользователя. Реквизиты хранятся в файле recv. txt.
SaveData(n: real; n1: real; alpha: real) – выполняет запись результатов в файл result. txt. n, n1 – показатели преломления, alpha – угол падения.
Info() – отображает на экран информацию о преломлении лучей.
LoadData(varn: real; varn1: real; varalpha: real) – выполняет загрузку данных из файла. n, n1 – показатели преломления, alpha – угол падения.
OutTextChangeAl() – выводит на экран вспомогательный текст при смене значения угла.
В основной программе выполняется единственная процедура MainCycle.
Перед основным циклом на экран выводятся реквизиты пользователя из файла "recv. txt". Затем выполняется установка входных данных по умолчанию, запись этих данных в файл, прорисовка графика и меню. Вызов меню выполняется в бесконечном цикле до тех пор, пока пользователь не выберет пункт "Выход". При выборе пункта "Информация" на экран будет выведена основная информация о преломлении света (процедура Info). При выборе пункта "Считать данные из файла" программа загрузит данные из файла "data. txt". При выборе пунктов "Изменить показатель преломления в 1-й среде", "Изменить показатель преломления во 2-й среде", "Изменить угол падения" можно менять соответствующие входные данные. При любом изменении данных результаты автоматически отображаются на графике и сохраняются в файл.
Рисунок 4.2. - Схема функционирования программы

Я использовал в своей работе модули Graph и Crt (для работы с графическим и текстовым режимом соответственно).
Модуль Crtреализует работу в текстовом режиме. С помощью его процедур и функций можно проверять содержимое буфера клавиатуры и проверять код введенного символа.
Graphпозволяет работать с графическим режимом. С его помощью возможно отображение графических объектов. При помощи модуля Graph я выполнил прорисовку меню и графика.
В комплект поставки программного продукта входят следующие файлы:
kursach. exe– файл, запускающий программу.
info. txt - файл, содержащий справочную информацию.
recv. txt – файл, содержащий реквизиты пользователя.
ПЗ. doc - пояснительная записка в формате doc.
bold. chr, euro. chr, goth. chr, lcom. chr, litt. chr, sans. chr, scri. chr, simp. chr, smal. chr, trip. chr, tscr. chr– кириллические шрифты.
Для установки программы необходимо скопировать жесткий диск файлы kursach. exe, info. txt, recv. txt, *. chr и egavga. bgi. При необходимости можно создать файл data. txt, содержащий входные данные.
Во время тестовых испытаний я обнаружил несколько некорректных операций с плавающей точкой, ошибку переполнения стека, извлечение квадратного корня отрицательного аргумента, деление на ноль, некорректный вывод графика и некорректное сохранение результатов в файл. На данный момент все известные мне ошибки исправлены.
В результате выполнения работы я создал программный продукт, имитирующий модель преломления лучей на границе двух сред. Требования, изложенные в техническом задании, выполнены.
Я разработал удобный интерфейс, функцию вывода графика, отображающего преломление лучей на границе двух сред. Также имеется возможность работы с разными преломляющими средами, и смены угла падения.
Полное название программного продукта: "Преломление света на границе раздела двух сред".
Плановый срок начала работы: 17.02.06
Плановый срок завершения работы: 5.06.06
Основанием для разработки является задание на курсовую работу по дисциплине "Программирование и алгоритмические языки", выданное кафедрой программного обеспечения интеллектуальных систем студенту группы СУА-О5 Паранчуку Станиславу.
Цель разработки - создать программный продукт, который позволит демонстрировать преломление лучей на границе двух сред.
А.4 Требования к программному продукту
К данному программному продукту предъявляются следующие требования:
а) наличие графического пользовательского интерфейса;
л) наличие контроля вводимых данных.
Программный продукт должен обладать следующими функциями:
- расчет угла отражения на основании угла падения и коэффициентов преломления;
А.4.3. Требования к техническому обеспечению
Программный продукт должен нормально функционировать на машине со следующими характеристиками:
- VGA - монитор с поддержкой разрешения 640x480.
Программный продукт должен быть снабжен пояснительной запиской объёмом не менее 30 страниц;
документация должна быть оформлена в соответствии с ДСТУ 3008-95 "Документация. Отчеты в сфере науки и техники и правила оформления".
А.5 Этапы разработки и сроки выполнения работы
разработки и плановые сроки выполнения указаны в таблице А.1
Таблица А.1 Этапы и сроки выполнения работы
Для установки программы скопировать все файлы на жесткий диск.
Меню содержит следующие пункты: "Информация", "Считать данные из файла", "Изменить показатель преломления в 1-ой среде", "Изменить показатель преломления во 2-ой среде", "Изменить угол падения", "Выход". Передвижение по меню осуществляется при помощи клавиш "вверх" и "вниз", а также при помощи горячих клавиш.
При вызове этого пункта меню на экране появится содержимое файла "info. txt" на нескольких страницах. Страницы перелистываются при помощи любой клавиши. После ознакомления с содержимым файла мы возвращаемся в меню.
При вызове этого пункта выполнится загрузка данных из файла "data. txt". Также выполнится пересчет угла преломления, вывод результатов на экран и в файл.
Б.3.3. "Изменить показатель преломления в 1-ой среде", "Изменить показатель преломления во 2-ой среде"
При вызове этих пунктов пользователю будет предложены на выбор некоторые среды преломления. Если необходимой среды нет в списке, пользователь может ввести показатель преломления самостоятельно.
При вызове этого пункта пользователь сможет изменить угол падения клавишами "вверх" и "вниз" а затем подтвердить или отменить ввод (клавиши ENTER и ESC соответственно).
При нажатии этой клавиши происходит выход из программы
info. txt – содержит теоретическую информацию о преломлении лучей.
Рассмотрим падение плоской волны на границу, разделяющую две прозрачные однородные диэлектрические среды с показателями преломления n и n1. Будем считать, что граница представляет собой плоскость (так как в пределах бесконечно малой области любую поверхность можно считать плоской). Будем также считать, что сама граница раздела свет не поглощает.
После прохождения границы раздела двух сред падающая плоская волна разделяется на две волны: проходящую во вторую среду и отраженную.
Угол падения - это угол между лучом, падающим на преломляющую или отражающую поверхность и нормалью к поверхности в точке падения.
Угол преломления - это угол между преломленным лучом и нормалью к поверхности в точке преломления.
Угол отражения - это угол между отраженным лучом и нормалью к поверхности в точке отражения.
Падающий луч, преломленный луч и нормаль к поверхности раздела двух сред в точке падения лежат в одной плоскости.
Произведение показателя преломления на синус угла между лучом и нормалью сохраняет свое значение при переходе в следующую среду:
Файл result. txt содержит результаты работы программы:
Рисунок Д.3-Информация о преломлении лучей
function arcsin (x: real): real; {возвращает арксинус угла}
if (x=-1) then arcsin: = - 1*PI/2 else
arcsin: =arctan(sqrt((x*x) /(1-x*x))) else
arcsin: =-arctan(sqrt((x*x) /(1-x*x)));
function ReCalc(n: real; n1: real; alpha: real): real; {высчитывает угол преломления}
radalpha, radalpha1: real; {углы в радианах}
if ((n*sin(radalpha) /n1) <=1) then
radalpha1: =arcsin(n*sin(radalpha) /n1);
procedure Recv; {выводит на экран реквизиты пользователя}
f: text; {файл содержащий реквизиты пользователя}
{выводим содержимое файла на экран}
function Menu(number: Integer): Integer;
OutTextXY(0, 1*IV, 'Информация (F1) ');
OutTextXY(0, 2*IV, 'Считать данные из файла (L) ');
OutTextXY(0, 3*IV, 'Изменить показатель преломления в 1-ой среде (1) ');
OutTextXY(0, 4*IV, 'Изменить показатель преломления во 2-ой среде (2) ');
OutTextXY(0, 5*IV, 'Изменить угол падения (A) ');
OutTextXY(0, 6*IV, 'Выход (Esc) ');
if (ch = #72) then number: =number-1;
if (ch = #80) then number: =number+1;
{драйвер - VGA, режим - VGAHi (640*480) }
InitGraph (gd,gm,''); {инициализация графики}
procedure SaveData(n: real; n1: real; alpha: real); {сохраняет данные в файл}
writeln(f,concat('Показатель преломления n=', tempstr));
writeln(f,concat('Угол падения alpha=', tempstr));
writeln(f,concat('Показатель преломления n1=', tempstr));
writeln(f,concat('Угол преломления alpha1=', tempstr));
procedure Paint(n: real; n1: real; alpha: real);
mx,my: Integer; {максимальные значения экранных координат}
{находим максимальные значения экранных координат}
{пересчитываем угол преломления, находим радианные значения углов}
delta: = (my/3) *sqrt(1/sqr(cos(radalpha)) - 1)
delta: = 100000; {если косинус равен 0 - луч лежит на границе}
delta1: = (my/3) *sqrt(1/sqr(cos(radalpha1)) - 1)
delta1: =-100000; {если косинус равен 0 - луч лежит на границе}
OutTextXY(3, round(2*my/3-40), concat('n= ', tempstr));
OutTextXY(3, round(2*my/3-20), concat('alpha= ', tempstr));
OutTextXY(3, round(2*my/3), concat('n1= ', tempstr));
OutTextXY(3, round(2*my/3+20), concat('alpha1= ', tempstr));
SetLineStyle(SolidLn, 0, NormWidth);
Line(0, round(my/3), mx, round(my/3));
{выводим границу между средами и нормаль}
SetLineStyle(DottedLn, 0, NormWidth);
Line(round(mx/2), round(my/3), round(mx/2), my);
Line(0, round(2*my/3), mx, round(2*my/3));
SetLineStyle(SolidLn, 0, NormWidth);
Line(round(mx/2) - 3, round(my/3) +10, round(mx/2), round(my/3));
Line(round(mx/2) +3, round(my/3) +10, round(mx/2), round(my/3));
SetLineStyle(SolidLn, 0, NormWidth);
Line(round(mx/2), round(2*my/3), round(mx/2+delta), round(my/3));
SetLineStyle(SolidLn, 0, NormWidth);
Line(round(mx/2), round(2*my/3), round(mx/2-delta1), round(my));
procedure OutTextChangeAl; {выводит вспомогательный текст при смене значения угла}
OutTextXY(0,0, 'Значение угла падения меняется клавишами ');
OutTextXY(0, 20, '"вверх" и "вниз"');
OutTextXY(0,40, 'подтверждение - ENTER');
function ChangeAl(n: real; n1: real; alpha: real): real;
{запоминаем начальное значение угла на случай отмены}
if (ch = #72) then alpha: =alpha-1;
if (ch = #80) then alpha: =alpha+1;
SaveData(n,n1,alpha); {сохраняем данные}
function ChangeN(flag: integer): real;
writeln(concat('Выберите ',tempstr,'-ую среду: '));
if (ch = '4') then ChangeN: =1.0003;
write('Введите показатель преломления среды: ');
until ((code = 0) and (n<=9) and (n>0));
procedure LoadData(var n: real; var n1: real; var alpha: real); {загрузка данных из файла}
{считываем по порядку значения n,n1,alpha}
SaveData(n,n1,alpha); {сохраняем данные}
Delete (temp, st_length+1, Length(temp));
OutTextXY (200, 460, 'Нажмите любую клавишу... ');
procedure MainCycle; {основной цикл программы}
alpha: =60; {начальное значение угла падения}
action: =1; {курсор установлен на первом пункте меню}
Recv; {выводим реквизиты пользователя}
Paint(n,n1,alpha); {выводим график}
action: =Menu(action); {считываем пункт меню}
if (action=1) then Info; {информация}
if (action=2) then LoadData(n,n1,alpha); {считываем из файла}
n: = ChangeN(1); {изменяем показатель преломления 1}
n1: = ChangeN(2); {изменяем показатель преломления 2}
if (action=5) then alpha: = ChangeAl(n,n1,alpha); {изменяем угол падения}
CloseGraph; {закрываем графический режим}
1. Фаронов В.В. "Турбо Паскаль 7.0. Начальный курс. " Учебное издание - М.: Нолидж, 2000, 575 с.
2. Н. Культин "TurboPascal в задачах и примерах" - С.: БХВ-Петербург, 2004,256 с.
3. Ахманов С. Г "Физическая оптика. Учебник (Ахманов)" - С.: МГУ, 2004, 213 с.
4. Федоров А. "Особенности программирования на BorlandPascal" - Киев: Диалектика, 1994, 144 с.

Название: Преломление света на границе раздела двух сред
Раздел: Рефераты по информатике
Тип: курсовая работа
Добавлен 05:17:02 03 декабря 2010 Похожие работы
Просмотров: 60
Комментариев: 14
Оценило: 1 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Разработка и согласование технического задания
Подбор и изучение материала по теме "Преломление лучей на границе раздела двух сред". Определение структуры программы
Разработка алгоритмов, отвечающих за ввод данных
Разработка алгоритма расчета угла преломления
Разработка и реализация графического и пользовательского интерфейса
Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Курсовая работа: Преломление света на границе раздела двух сред
Знание Сила Сочинение
Реферат: Hamlet Quotes Essay Research Paper Derek Mycroft4300Hamlet
Доклад по теме Понятие системы права, отрасли права
Реферат: Daniel Defoe Essay Research Paper Thesis Statement
Контрольная работа: Модернизация привода токарно-винторезного станка мод. 1А616
Шинель Без Хлястика Сочинение Егэ
Реферат На Тему История Развития Элементной Базы
Курсовая работа по теме Анализ финансового состояния на примере ООО 'Нисквик'
Передача буквами фонемного состава слов и морфем
Курсовая работа: Управление и регулирование в сфере труда и занятости населения
Учебное пособие: Охрана труда
Реферат: Защита информации в локальных сетях
Дипломная работа: Гражданско-правовые режимы удовлетворения жилищных потребностей граждан
Реферат: The Applications Of Technology In The First
Образ Гринева Эссе
Доклад: Технология улучшения медицинской помощи
К Беде Неопытность Ведет Сочинение
Реферат На Тему Перестройка В Ссср 1985-1991 Годов
Дипломная работа: Применение милицией административной ответственности по ст. 20.21 КоАП РФ
Реферат по теме Пензенский край в 17 - начале 18 вв.
Реферат: Терапия (пороки сердца)
Реферат: Муниципальное право
Учебное пособие: История названия улиц Астрахани

Report Page