Re: Линзы
- From
- Alexey Dmitryukov (2:5011/251.128)
- To
- Vladimir Kolosov
- Date
- 2002-05-14T21:58:48Z
- Area
- RU.ALGORITHMS
Hello, Vladimir...
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. На второй поверхности линзы считаем по тем же формулам, разве что 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)