|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexey Dmitryukov 2:5011/251.128 14 May 2002 21:58:48 To : Vladimir Kolosov Subject : Re: Линзы -------------------------------------------------------------------------------- 13 Май 02 16:34: You wrote to All: VK> Мне надо написать прогу о преломлении луча в рассеивающей и собирающей VK> линзе. Мне интересен сам алгоритм, но проге тоже очень обрадуюсь! один из вариантов: 0 ----------------------|-------------------> x |/ a2 /| * / | стекло * *** / | *** ****o** | ******* A і ******* a1 і | і | воздух і | і | луч і | | | V Пусть форма поверхности, на которую падает луч, задается функцией f1(x). A - точка пересечения светового луча и этой поверхности. Угол наклона поверхности линзы в точке A к Ox arctg f1'(x). Угол падения луча на поверхность pi/2 + arctg f1'(x) - beta, где beta - угол наклона исходного луча к Ox. Дальше, из формулы sin(a1)/sin(a2) = n1/n2 (вроде бы так?) находим угол, под которым преломленный луч пойдет внутри линзы из точки A. Hа второй поверхности линзы считаем по тем же формулам, разве что n2 и n1 местами поменяются. Итого: a2 = arcsin ( sin (pi/2 + arctg(f1'(x)) - beta) * n2 / n1) в качестве f1 можно взять дугу окружности. Сферические абберрации видны прекрасно ;-) wbr, Alexey Dmitryukov. --- >< --- >< --- >< --- >< --- >< --- >< --- >< --- >< --- >< --- >< --- * Origin: Quoth the Raven, "Nevermore." (2:5011/251.128) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/45733ce18d1a.html, оценка из 5, голосов 10
|