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)