Рисуем во фрикаде линзы

Jun 15, 2012 17:13

Итак, воодушевленный этой темой на ЛОРе и вдохновленный пользователем DR_SL, я продолжаю свои эксперименты с фрикадом. На сей раз я решил подправить для себя скрипты DR_SL'а для рисования линз.

Для того, чтобы линзы строились по оптическим правилам (т.е. знаки радиусов поверхностей были верными), да и вообще чтобы упростить немного алгоритм DR_SL'а, я с полтора часа просидел, рисуя различные варианты на листе бумаги. Еще довольно сложным было работать с чуждым мне языком python. При помощи многочисленных мануалов по фрикаду (скриптование, куда пихать файлы, немного сниппетов и т.п.) и гугола, я таки сделал это!
Помимо рисования одиночной линзы я добавил код для рисования набора линз. В результате вот такой вот код, введенный в консоль питона freecad'а:
import Lens a=[[8,6,1,6,3], [10,-15,2.5,8,5], [-16,10,0.5,6,7], [-8,-6,0.5,4,3], [3,3,0.2,2,1], [0,0,0.1,1,0.1], [0,3,.3,1]] Lens.makeLensBench(a) b=[[-10,8,0.1,6], [8,16,0.5,6], [16,-9,1,6]] Lens.makeLensBench(b,App.Vector(0,10,0)) Позволяет получить вот такую картинку:


Еще добавлю видео с этими линзами, а также еще одно видео, на котором видно, почему «лучше день потерять, зато потом за полчаса долететь».
Сам код можно посмотреть здесь. а здесь - взять mercurial'ом свежий репозиторий.
Если автор оригинала не возражает, код под лицензией WTFPL!

оптика, freecad

Previous post Next post
Up