Телескопы покупают здесь


A A A A Автор Тема: Пересечение луча, падающего на оптическую поверхность с поверхностью.  (Прочитано 9388 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Alexey_Smirn

  • Гость
Уважаемый All!

Если кому все еще интересно - сообщаю:
- Базовые классы написаны в основном.
- Приступаю к написанию визуального интерфейса.
- Ориентировочный срок появления первой преБеты - середина лета - начало осень 2003 года.

С уважением, Алексей.

Ernest

  • Гость
Алексей, к сожалению, ближайшие недели я очень плотно занят в своем рабочем проекте и времени/сил на детальный математический анализ не имею. Посему, максимум на что я способен сейчас - реплики довольно поверхностного свойства.

Вот еще несколько.

(1)  Вы всерьез, намерены оставить в расчете луча всю эту тригонометрию? Боюсь, что тогда Вам придется столкнуться не только с проблемами точности, но и производительности. При оптимизации (особенно глобальной) иногда требуется до полумиллиона актов луч/поверхность на шаг.

(2) Очень легко провести практический анализ работоспособности любого алгоритма расчета лучей через оптическую систему. Следует его реализовать в модельном варианте (минимум оптимизации) и применить к тестовой оптической системе в минимальном программном окружении. Работоспособность проверяется расчетом хода через одну апланатическую поверхность (ее параметры рассчитываются аналитически) и через одну зеркальную (эллиптическая из одного фокуса в другой). Точность/производительность - прогоном через сотню последовательных апланатично-конфокальных поверхностей с несколькими промежуточными фокусами.

(3) Для публикации алгоритма и его быстрого анализа сторонними людьми нужна сводка однозначных формул, которая производит полное преобразование состояния произвольного луча от предыдущей поверхности к последующей (с обходом особенностей, отсечением ложных решений, вовлечением параметров сред/поверхностей и т.п.). То, что было изложено в предыдущих постах, может трактоваться как весьма общее введение к идее расчета и анализу не поддается (много придется додумывать, за автора).

Успехов!

Alexey_Smirn

  • Гость
Уважаемый Ernest!

Спасибо за интерес к моей работе. А теперь по-порядку.

Цитата
(1)  Вы всерьез, намерены оставить в расчете луча всю эту тригонометрию? Боюсь, что тогда Вам придется столкнуться не только с проблемами точности, но и производительности. При оптимизации (особенно глобальной) иногда требуется до полумиллиона актов луч/поверхность на шаг.

На счет точности. Извините, но я не уверен, что будут какие-то проблемы с точностью.
Если внимательно присмотреться к аргументам, приводимым в данной нити, то можно прочитать, что "решение не должно зависеть от выбранной системы координат", с чем я вполне согласен.
И тут же следует утверждение, что "выбранная система координат (совмещение центра координат с центром кривизны оптической поверхности) приведет к накоплению катастрофической ошибки при трассировке луча через оптическую схему с большими воздушными промежутками".

Как все это понимать?

Если абстрагироваться от самой задачи (т.е., от трассировки луча и от воздушных промежутков) то имеет следующие предпосылки.
1)Точность метода определяется типом применяемого решения - "последовательное приближение" или "аналитическое решение". Точность аналитического решения абсолютна. Т.е., аналитически величина может быть вычислена с любой необходимой точностью. Последовательное приближение имеет фиксированную, заранее заданную точность.
2)Любой числовой метод неточен по определению. Т.е., перекладывание аналитического решения в числовую форму приводит к потере точности настолько, насколько велика потеря точности при вычислении Синусов и Косинусов, например, ибо они задаются (прошиты в FPU) через быстросходящиеся ряды с фиксированным количеством членов. Но, ведь и методы последовательного приближения используют тот же FPU, те же Синусы и Косинусы, что и предлагаемая аналитика!

Так что точность предлагаемого решения (при условии, что я не допустил ошибки в расчетах) должна быть по крайней мере не ниже, чем любой другой метод трассировки, использующий в своем алгоритме методы последовательных приближений.

Цитата
(2) Очень легко провести практический анализ работоспособности любого алгоритма расчета лучей через оптическую систему. Следует его реализовать в модельном варианте (минимум оптимизации) и применить к тестовой оптической системе в минимальном программном окружении. Работоспособность проверяется расчетом хода через одну апланатическую поверхность (ее параметры рассчитываются аналитически) и через одну зеркальную (эллиптическая из одного фокуса в другой). Точность/производительность - прогоном через сотню последовательных апланатично-конфокальных поверхностей с несколькими промежуточными фокусами.

Именно для того, чтобы проверить свою систему я пишу базовые классы. Мне лично будет проще ловить ошибки и видеть результат уже на этапе преБеты, когда будет возможность задать простую линзу, или зеркало, как Вы и предлагаете, и посмотреть, что получается в итоге.

Что касается производительности, то, как я уже говорил, у меня есть опыт написания программ, которые используют подобные алгоритмы. Так вот, в указанных программах шаг расчета был 4  градуса, т.е., на всю сферу вычислялось ~ 4000 базовых радиус-векторов, еще ~ 4000 промежуточных векторов, 2000 векторов нормали к элементарным площадкам (строились по две площадки на 4х смежных векторах), а так же обсчитывался угол между лучем зрения и лучем падения со всеми векторами нормали (~4000 скалярных произведений двух векторов) + обработка закона отражения для каждой из площадок (а некоторые законы содержат не только синусы и косинусы углов падения, но и степенные функции) + происходила прорисовка сцены. И, обратите внимание, у меня получалось выводить сцену со скоростью 3-5 кадров в секунду! Причем процесс собственно отображения сцены занимал более 70% времени расчета каждого шага! Так что думаю, производительности хватит.

Цитата
(3) Для публикации алгоритма и его быстрого анализа сторонними людьми нужна сводка однозначных формул, которая производит полное преобразование состояния произвольного луча от предыдущей поверхности к последующей (с обходом особенностей, отсечением ложных решений, вовлечением параметров сред/поверхностей и т.п.). То, что было изложено в предыдущих постах, может трактоваться как весьма общее введение к идее расчета и анализу не поддается (много придется додумывать, за автора).

Согласен. Но на данный момент я считаю, наиболее удобной формой доказательства свой правоты - демонстрацию работоспособного примера. Тем более, что мне будет быстрее склепать пример, чем ввязываться в весьма вялотекушую дисскусию (один пост хорошо если раз в неделю)

Кстати сказать, я имею определенный опыт, и могу заложить в свою программу такие параметры как индикатриссу рассеяния для отражающего материала, параметры поглощения света для данного материала (в зависимости от длины волны), так и глубокую физику источника света (распеределение энергии по спектру излучения, поляризация и т.д.). Таким образом, можно будет достаточно легко (по крайней мере, для меня понятно как) сделать такие штучки как блики, двойное лучепреломление и т.д.

Есть все это в ZeMax? ;-))

С уважением, Алексей.

Ernest

  • Гость
> На счет точности. Извините, но я не уверен, что будут какие-то проблемы с точностью. Если внимательно присмотреться к аргументам, приводимым в данной нити, то можно прочитать, что "решение не должно зависеть от выбранной системы координат", с чем я вполне согласен.

Шла речь о том, что возможность аналитического решения не должна зависеть от выбранной системы координат.

> И тут же следует утверждение, что "выбранная система координат (совмещение центра координат с центром кривизны оптической поверхности) приведет к накоплению катастрофической ошибки при трассировке луча через оптическую схему с большими воздушными промежутками". Как все это понимать?

А вот результат привлечения численного метода (а любой расчет на компьютере это привлечение ЧМ) может сильно зависеть от способа расчета. Аналитически очевидно, что R+e > R, но то же выражение в программе вернет false, если R = 1.E+10, а e = 1.E-10.

> Так что точность предлагаемого решения (при условии, что я не допустил ошибки в расчетах) должна быть по крайней мере не ниже, чем любой другой метод трассировки, использующий в своем алгоритме методы последовательных приближений.

Это не так.
Перемещение центра координат в центр кривизны приводит к вовлечению в расчет величин близких по значению в радиусам кривизны (аналог R в моем примере выше), которые загоняют интересующие нас величины (порядка волновой аберрации - e в примере выше) на крайние правые позиции в мантиссе. Что и является предвестником катострофической потери точности.

> Именно для того, чтобы проверить свою систему я пишу базовые классы. Мне лично будет проще ловить ошибки и видеть результат уже на этапе преБеты, когда будет возможность задать простую линзу, или зеркало, как Вы и предлагаете, и посмотреть, что получается в итоге.

Прежде, чем возводить стены стоит озаботься прочностью фундамента.

> Но на данный момент я считаю, наиболее удобной формой доказательства свой правоты - демонстрацию работоспособного примера.

Ну тогда, о чем разговор - подождем примера.

> Кстати сказать, я имею определенный опыт, и могу заложить в свою программу такие параметры как индикатриссу рассеяния для отражающего материала, параметры поглощения света для данного материала (в зависимости от длины волны), так и глубокую физику источника света (распеределение энергии по спектру излучения, поляризация и т.д.). Таким образом, можно будет достаточно легко (по крайней мере, для меня понятно как) сделать такие штучки как блики, двойное лучепреломление и т.д.

Это действительно интересно,.. хотя стоит отметить, что оптические блики, к примеру, посчитать очень трудно. Тут лавинообразное нарастание трудоемкости вычислений (комбинаторная задача) сталкивается с неопределенностью в положении источника бликов (он может быть вне нормального поля зрения) и проблемами в описании как механики (оправы, кольца, диафрагмы), так и ее оптических свойств (оптические свойства неоптических материалов не стандартизованы).

Alexey_Smirn

  • Гость
Уважаемый Ernest!

Случай если R = 1.E+10, а e = 1.E-10 действительно критичен, и я смею заметить, критичен для ЛЮБОГО  варианта решения. Хотя бы по-тому, что величины уходят за пределы точности вычисления (в моем случае я располагаю точностью в 19 значащих цифр).

Но - это крайний, граничный случай! В большинстве совем указанный R, если брать в мм. будет болтаться в диапазоне 1.E+5  -  1.E+1 и ОЧЕНЬ РЕДКО выходить за эти пределы!

Так что точности должно хватить. Даже при e=1.E-10.

С уважением, Алексей.

Alexey_Smirn

  • Гость
В догонку!

Если я правильно понял политику Партии, то оптимизация (по крайней мере в OSLO) производиться не путем трассировки лучей через оптическую схему, а путем расчета итоговых коэфициентов аберрации (примерно так и было сделано в программе TeleCalc).

Вот иSerge Chuprakov хотел бы видеть  то же самое:
Цитата
А вот например сразу видеть уравнения для коэффициентов аберраций через основные параметры тонких компонентов - очень бы хотелось...

Почему бы нет? Вычислений существенно меньше (уж никак не полмиллиона векторов трассировать). А результат (или результаты) можно уже уточнить трассировкой.

С уважением, Алексей.

Ernest

  • Гость
Пример с R + e не стоит понимать совсем уж буквально. В приведенном случае проподает уже не точность, а просто значимые числа. Точность пропадает при многократном использовании операций типа R + e или R1-R2 при вполне естественном диапазоне R и e.

Теперь, что касается трассировки при оптимизации.

Есть два способа получения матрицы производных функций входящих в критерий по параметрам оптимизации. Общепринятый и универсальный - трассировкой и тут на каждом шаге потребуется полностью просчитать систему столько раз, сколько у вас задействовано параметров + 1 (или даже вдвое больше для центральных разностей). И аналитический (и полуаналитический) при котором используются аналитические соотношения между малыми изменениями параметров и деформациями волнового фронта. В последем случае задействуется уже нетривиальный математический аппарат, да и универсальность пропадает.

Не думаю, что Вам удастся скоро реализовать второй подход. Так что ориентируйтесь на числовой метод взятия производных с соотв. проблемами по производительности и закладываемой точности вычислений.

Alexey_Smirn

  • Гость
Уважаемый All

Для корректного отображения результатов трассироки мне нужна некая формула для преобразования длины волны данного луча света в формат RGB. Имеется в виду видимый свет, хотя, можно и подумать о псевдоцветах для ультрафиолетового и инфракрасного диапазонов.

Кто может помочь?

С уважением, Алексей.

Оффлайн Алексей Юдин

  • *****
  • Сообщений: 28 793
  • Благодарностей: 1122
  • Так-с, где тут у Вас Кровавое Мясное Бодалово?
    • Сообщения от Алексей Юдин
Кстати сказать, я имею определенный опыт, и могу заложить в свою программу такие параметры как индикатриссу рассеяния для отражающего материала, параметры поглощения света для данного материала (в зависимости от длины волны), так и глубокую физику источника света (распеределение энергии по спектру излучения, поляризация и т.д.). Таким образом, можно будет достаточно легко (по крайней мере, для меня понятно как) сделать такие штучки как блики, двойное лучепреломление и т.д.

Есть все это в ZeMax? ;-))

С уважением, Алексей.
Да, всё есть!!!
(В версии EE)
Ну, пожалуй пропускание по спектру не так уж удобно, кое-чего и нет.
А то ведь интересно будет, с "хроматизмом аподизации" посчитать.  ;D
Для покрытий в земаксе считаются все вышеупомянутые хар-ки.

Кстати, я отсканировал "Большую зелёную библию" и скоро выложу в сеть.
Пока распознаю.


Traiya

  • Гость
Анализ исходных данных:

1). в постановке задачи заложены трудно сопоставимые геометрические структуры - плоский треугольник и криволинейные вращающиеся фигуры -- отсюда изобилие погрешностей при сведении к общим координатам.

...

Синтез расчетов:

1). линейные формлы ограничивают деятельность одной плоскостью или проекцией на плоскость.

2). реальный объем начинается с системы линейных уравнений...

...


Alexey_Smirn

  • Гость
Ув. Traiya!

Цитата
1). в постановке задачи заложены трудно сопоставимые геометрические структуры - плоский треугольник и криволинейные вращающиеся фигуры -- отсюда изобилие погрешностей при сведении к общим координатам.

Простите, ничерта не понял...
Имеется система сферических координат. В этой системе я могу задавать как точки (мерность 0), линии (мерность 1), так и плоские фигуры (мерность 2) или тела вращения или прочие трехмерные фигуры. И СВОДИТЬ ИХ К ОБЩИМ КООРДИНАТАМ нет необходимости. Понимаете?

Можно по-конкретнее про ИЗОБИЛИЕ ПОГРЕШНОСТЕЙ ПРИ СВЕДЕНИИ? Где, каким образом накапливаются указанный погрешности? Фогрулы, плииз, если не трудно!

Дальше.
Цитата
1). линейные формлы ограничивают деятельность одной плоскостью или проекцией на плоскость.

Тоже совершенно непонятно. Что Вы этим хотели сказать? Какие ЛИНЕЙНЫЕ ФОРМУЛЫ? У меня в результате квадратиченое уравнение.
А на счет "ОГРАНИЧЕНИЯ ДЕЯТЕЛЬНОСТИ ОДНОЙ ПЛОСКОСТЬЮ" - так это, понимаете ли, из закона геометрического отражения и преломления - помните?
"Луч падающий, отраженный и преломленный лежат в одной плоскости с перпендикуляром к поверности, установленным в точку падения."

Или сейчас уже не так?

Дальше- больше!
Цитата
2). реальный объем начинается с системы линейных уравнений...

"Реальный объем" чего? С какой "системы линейных уравнений"? А чем он кончается? ;)

Правда, очень интересно!

И вот еще вопрос - а цитаты у Вас откуда? Полный текст можно привести? Или на моих выкладках кто-то уже пишет статейки? Не хорошо...

С уважением, Алексей.

Оффлайн Белозерцев Павел

  • *****
  • Сообщений: 5 250
  • Благодарностей: 60
  • Любитель астрономии из Иркутска.
    • Сообщения от Белозерцев Павел
    • Сайт Павла Белозерцева.
     Сергей Чупраков в этой теме упомянал две программы. Про Zemax вы и так знаете. А вот про POV-Ray можете почитать тут.


« Последнее редактирование: 28 Ноя 2003 [23:58:19] от Белозерцев Павел »
Монокуляр МП2 7x50мм.
Труба 120x30мм.
ТАЛ-Алькор 30-90-130x65мм.
Рефрактор 40x75мм.
Всё со временем обесценится, - бриллианты, золото, металлы (включая тяжёлые). Надо только немного подождать развития соответствующих технологий, и неограниченного перемещения в космосе. И Земляне разбогатеют.

Оффлайн Дрюша

  • *****
  • Сообщений: 4 948
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Когда-то, году в 1989-1990 я писал что-то подобное на языке Автолисп под систему Автокэд версии 10 (там, где только-только появились UCS - то есть, полноценные 3D). Возможно, что она пойдёт и под современным ACAD-2000 или более новым. Но только в английской версии (локализации тогдашних версий Автокэда, про современные ничего не знаю, были несовместимы с англоязычными - у них все команды по-русски). Тогда, на 286 компе у меня каждый лучик для простейшего телескопа схемы Ньютона просчитывался несколько секунд.

А вообще, Автокэд даже тогда была могучая вещь. Можно было всё нарисовать в пространстве, а потом рассматривать с любых ракурсов, в любом масштабе, печатать и т.п. В таких программах, как пространственное моделирование, если они самостоятельные, то пользовательский интерфейс и визуализация результата занимают процентов 90 трудоёмкости. А если воспользоваться существующей системой, то можно сосредоточиться на конкретной задаче. Это гораздо реальнее.

Так вот, язык Лисп (вернее, Автолисп как версия Лиспа) хорош тем, что в нём программы и данные - это одно и то же. В описание поверхности можно непосредственно забить аналитическую формулу, по которой он будет всё считать. Разумеется, формула должна быть задана на Лиспе, но попутно я (шутя) написал преобразование формул из привычного вида в Лисп, а так же аналитическое дифференцирование (для любых, сколь угодно сложных выражений на языке Лисп). Результатами аналитических преобразований Лисп может пользоваться точно так же, как если бы они были запрограммированы человеком. На Сях я бы такого не написал. Пришлось бы городить свой компилятор, или интерпретатор...

Как базу, я реализовал только плоскость, сферу, конус и цилиндр, но потом дополнительно ввёл возможность описания любой поверхности вращения конического сечения с заданным экцентриситетом. Проблемы возникают только при отображении (непонятно, как аппроксимировать произвольную поверхность. А сферы, конуса, торы и любые плоские многоугольники AutoCad умеет рисовать изначально). Ну, для отображения я их аппроксимирую сферами, а сам AutoCad - многогранниками. Но вычисления ведутся не по видимой (отображаемой) геометрической модели, а по внутренней форме представления, в которую входят аналитические формулы. Кстати, Автолисп представляет все вещественные числа с двойной точностью.

То, что у меня получилось - это была всего лишь игрушка. Ничего реального я на ней не вычислил. Ну, разве что только, сумел найти сферическую аберрацию для сферического же зеркала (как масло маялянное), и по этим результатам пришёл к выводу, что рекомендуемая формула для выбора относительного фокуса для сферического зеркала (1.52*(Dмм^(1/3))) - это полнейшя лажа. Даже по чисто геометрическим подсчётам выходит, что минимальный кружок рассеяния от сферической аберрации примерно в 1.6 раза больше кружка Эри. Конечно, я сразу не поверил своей программе, и стал перепроверять. Тогда я занимался волновыми подсчётами, интегрировал волновой фронт, учитывал центральное экранирование и т.п. Результат полностью подтвердился. И ещё прдтвердился он реальными наблюдениями: телескоп "Мицар" со сферическим зеркалом 110 мм и отн. фокусом 7.2 (вроде бы, точно не помню), который сделан в соответствии с этими рекомендациями, показывает достаточно отвратную дифракционную картинку. Сферическая аберрация так и прёт. Оценить это может тот, кто видел по-настоящему качественное изображение. Разумеется, речь здесь идёт о наблюдениях на дифракционном пределе. А при увеличении 56Х "Мицар" показывает ещё более-менее. Про "высокое качество" новосибирской оптики могут говорить только те, кому не с чем было ставнивать (если с загорскими биноклями, то - да).

Оффлайн Белозерцев Павел

  • *****
  • Сообщений: 5 250
  • Благодарностей: 60
  • Любитель астрономии из Иркутска.
    • Сообщения от Белозерцев Павел
    • Сайт Павла Белозерцева.
     А вот, что ещё может рисовать POV-Ray - ссылка. Это правда не оптика телескопа, но тоже красиво для любителя астрономии.

Монокуляр МП2 7x50мм.
Труба 120x30мм.
ТАЛ-Алькор 30-90-130x65мм.
Рефрактор 40x75мм.
Всё со временем обесценится, - бриллианты, золото, металлы (включая тяжёлые). Надо только немного подождать развития соответствующих технологий, и неограниченного перемещения в космосе. И Земляне разбогатеют.