Курсова робота
На тему:
"Програма, яка зображає хід променя в оптичному прозорому середовищі"
Херсон 2009
Анотація
1. Постановка задачі. – В даному розділі описуються можливі варіанти і перспективи використання моделювання фізичних процесів за допомогою комп'ютерного моделювання.
2. Математична модель. – Описуються вхідні дані програми, очікувані результати, математичні формули та фізичні процеси.
3. Описання алгоритму. – Приводиться повне словесне описання розробленого алгоритм вирішення задачі по крокам і під алгоритмам.
4. Описання програми. – Аналіз мов програмування. Описання стандартних функцій і процедур. Описання реалізації інтерфейсу користувача. Інструкції для користувача програми.
5. Висновок. – Які результати зробленої під час виконання курсового проекту роботи, що нового засвоєно.
Програма створена в середовищі програмування Turbo Pascal 7.0, яка працює під управлінням операційних систем DOS або сімейства Windows.
Вступ
Стратегія швидкого розвитку та підвищення темпів науково-технічного прогресу визначає в якості каталізуючої умови необхідність широкого впровадження та застосування ЕОМ в різних сферах науки, техніки та економіки. Широкий спектр сучасних заходів обчислювальної техніки від керуючих мікроЕОМ і ПЕОМ до великомасштабних інформаційно-обчислювальних сіток, необхідність їх ефективного використання для рішення науково-технічних, проектних і економічних задач пред‘являють високі вимоги грамотності.
Однією з таких мов програмування є TurboPascal.
Мова Pascal була створена швейцарським професором Ніклаусом Віртом наприкінці 60-х – на початку 70-х років і названа на честь видатного французького математика і філософа Блеза Паскаля. Спочатку ця мова була створена для вивчення програмування, однак завдяки великим можливостям структурного програмування вона стала широко застосовуватися в різних галузях: науці, техніці, економіці, інформаційних системах тощо. Pascal є першою серйозною мовою з якою знайомляться майбутні програмісти.
Під час введення програми та її редагування ви можете застосувати навички роботи в текстовому редакторі. Текст можна набирати в режимі вставки і заміни.
У Pascal програма повинна мати певну структуру. За заголовком іде розділ uses, у якому зазначаються бібліотечні модулі, що підключаються.
Наступними розділами програми на Pascal є описи міток, констант, типів даних та змінних. Якщо в програмі створені процедури і функції, то вони будуть наведені в розділі описів.
Виконуваною частиною програми є розділ операторів, який іде за розділом описів. У ньому виконуються дії над попередньо описаними змінними, константами, функціями. Саме в цьому розділі одержують результат, заради якого складалася програма.
Не всі названі розділи обов'язково мають бути присутніми у програмі. У простих програмах можуть бути лише заголовок, опис змінних і розділ операторів. Взагалі будь-який розділ, крім розділу операторів, може бути відсутнім у програмі.
Трансляція програми на Pascal здійснюється за допомогою компілятора, який входить до складу системи TurboPascal. У ході компіляції можуть виводитися повідомлення про помилки. Помилкою є будь-яке відхилення від синтаксису мови Pascal.
1. Постановка задачі
Темою моєї курсової роботи є «Оптичне прозоре середовище складається з n-анізотропних шарів з різними показниками переломлення. Промінь світла падає на верхній шар під кутом a. Зобразити хід променя в середовищі».
Мета курсової роботи полягає в тому, щоб за допомогою комп’ютерного моделювання зобразити кут заломлення променя в оптичному середовищі, яке складається з n-анізотропних шарів.
При проходженні світла через межу двох прозорих середовищ падаючий промінь розділяється на два: відбитий і заломлений. Напрям цих променів визначається законами відбиття і заломлення світла.
Закон заломлення формулюється наступним чином: переломлений промінь лежить в одній площині з падаючим променем і нормаллю відновлений в точці падіння. Відношення синуса кута падіння до синуса кута заломлення є величина постійна для даних величин:
Величина n12 називається відносним показником заломлення другої речовини до першої.
Використавши відношення закону переломлення можна надати вигляду:
З цієї формули видно, що при переході світла з більш щільного середовища в оптично менш щільну промінь віддаляється від нормалі до поверхні. Збільшення кута падіння і1 супроводжується більш швидким ростом кута падіння і2 і по досягненні кутом і1 значення:
Іпред=arcsin n12
Кут падіння стає рівним п\2.
Величина Іпред називається граничним кутом.
Список вхідних даних програми складається з: кількості поверхонь, кута падіння променя, коефіцієнта переломлення для кожного середовища.
Після вводу всіх даних програма починає вираховувати всі кути, і координати точок, через які проходить промінь.
Спочатку промінь падає з верхньої точки екрану з координатами (320,0) т.О1. Для знаходження кожної іксової координати точки Оn, використовується формула:
Xn=Xn-1 +∆X;
Де ∆X різниця в одиницях на осі Х між точками Оnі On-1.
∆X=50*cos(αn)/(sin(αn)+0.0000000001);
В останній формулі до sin(αn) додається число 0.0000000001, це робиться для того, щоб при вводі αn=90 уникнути ділення на нуль, так як число дуже маленьке воно не вплине на кінцевий результат. ∆Y=50;
Де ∆Y – різниця на осі Y між точками Оn і On-1, так як поверхності розміщені на однаковій відстані ∆Y= const.
Кожний наступний кут знаходиться за формулою:
αn = π/2 – arcsin (sin(π/2 – αn-1)*kn-1/kn)
Функція arcsin описана в вихідному тексті програми.
Таким чином необхідно побудувати ланцюжка ліній, для проведення кожної із них необхідно вирахувати координати точок, через які будуть вони проведенні.
Описання змінних
Найменування величини | Ідентифікатор | Тип | Коментар |
Кількість шарів | n | Integer | Вхідний тип |
Кут заломлення | A[i] | Real | Вхідний тип |
Показник переломлення | A1 | Real | Вхідний тип |
Ініціалізація графічного режиму | Gd, gm | Integer | Вхідний тип |
Головна програма
Крок 0: Процедура вводу inp;
Крок 1: Процедура розрахунку даних raz4et;
Крок 2: Процедура ініціалізації графіки prepare;
Крок 3: Процедура виводушарів Lines;
Крок 4: Процедура виводукута Out;
Описання процедури inp:
Крок 0: Ввід кількостішарів;
Крок 1: Ввід кута паденняпроменя;
Крок 2: Цикл «for» iвід 1 до n:
Крок 3: Вводимо i-й коефіц. заломлення
Описання процедури raz4et:
Крок 0: Ініціюємо початкову точку випроміненняпроменя;
Крок 2: Переводимокут падіння з градусів в радіани;
Крок 3: Розраховуємо різницю координат по іксу;
Крок 4: Знаходимоіксову координату першої точки заломлення;
Крок 5: Задаемоігрикову координату першої точки заломлення
Крок 6: Цикл «for» i від 1 до n:
Крок 7: Розраховуємо кут заломлення;
Крок 8: Розраховуємо різницю координат по іксу;
Крок 9: Знаходимоіксову координату i-й точки заломлення;
Крок 10: Розраховуємоігрикову координату i-й точки заломлення;
Описання процедури Prepare:
Крок 0: Присвоюємо змінній «а» значенняпоточного відеорежиму;
Крок 1: Ініціюємо графіку в Паскале;
Описання процедури Lines:
Крок 0: Змінюємопоточний колір на червоний;
Крок 1: Цикл «for» iвід 1 до n:
Крок 2: Проводимо лінію (round (d*i), 0, round (d*i), getmaxy);
Описання процедури Out;
Крок 0: Цикл «for» i від 0 до n:
Крок 1: Змінюємопоточний колір на білий;
Крок 2: Проводимо промінь;
Крок 3: Переводимо розмір кутаіз радіанів в градуси для виводу;
Крок 4: Змінюємопоточний колір на світло-сірий;
Крок 5: Виводимо текст біля точки заломлення, де текст – розмір кута;
4. Описання програми
На даний момент ми знаємо дві мови програмування, це С і Pascal. Для вибору мови зрівнюємо його по наступним критеріям.
Простота мови програмування напряму залежить від кількості елементарних конструкцій. Зрозуміло, що програміст, який має справу з більш поширеними мовами програмування прагне вивчити лише її підмножину, часто не усвідомлюючи зниження ефективності власних програм через не оптимальне використання засобів мови. Простота мови напряму впливає на зрозумілість програми так як використання різних підмножин мов автором читачем еквівалентному частковій або повній незрозумілості. Другим фактором, який знижує простоту мови програмування є різноманітність властивостей, так як наявність деяких способів здійснення деякої дії. З цієї точки зору Pascal більш вигідний, ніж С, в якій програміст може додати одиницю чотирма різними способами:
count=count+1;
count+=1;
count++;
++count.
Третьою потенційною проблемою простоти є пере загрузка операторів, так як наявність у символу, який позначає оператор, декількох значень. Але для стандартів Pascal і ANSI C ця проблема не виникає.
Ортогональність мови програмування значить, що оператори, які керують і структури даних мови можна виразити за допомогою відносно невеликої кількості елементарних конструкцій, які користуються обмеженим числом доступів. Назва «ортогональність» виникла від математичного поняття ортогональних незалежних векторів. Ортогональність виникає із симетрії відношення між елементарними елементами.
Ортогональність тісно пов'язана з простотою, чим більш ортогональною є структура мови, тим менше винятків із правил. Менше виключень – це означає, що мова більш систематична, її легко вивчати і не треба йти на компроміси, сто «виключень із правил, підтверджує правило».