Курсовая работа: Програма яка зображає хід променя в оптичному прозорому середовищі
Список вхідних даних програми складається з: кількості поверхонь, кута падіння променя, коефіцієнта переломлення для кожного середовища.
Після вводу всіх даних програма починає вираховувати всі кути, і координати точок, через які проходить промінь.
Спочатку промінь падає з верхньої точки екрану з координатами (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 | Вхідний тип |
3. Описання алгоритму
Головна програма
Крок 0: Процедура вводу inp;
Крок 1: Процедура розрахунку даних raz4et;
Крок 2: Процедура ініціалізації графіки prepare;
Крок 3: Процедура виводушарів Lines;
Крок 4: Процедура виводукута Out;
Описання процедури inp:
Крок 0: Ввід кількостішарів;
Крок 1: Ввід кута паденняпроменя;
Крок 2: Цикл «for» iвід 1 до n:
Крок 3: Вводимо i-й коефіц. заломлення
Описання процедури raz4et:
Крок 0: Ініціюємо початкову точку випроміненняпроменя;
Крок 2: Переводимокут падіння з градусів в радіани;
Крок 3: Розраховуємо різницю координат по іксу;