Рисуем во фрикаде линзы
Jun. 15th, 2012 05:13 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Итак, воодушевленный этой темой на ЛОРе и вдохновленный пользователем DR_SL, я продолжаю свои эксперименты с фрикадом.
На сей раз я решил подправить для себя скрипты DR_SL'а для рисования линз.
Для того, чтобы линзы строились по оптическим правилам (т.е. знаки радиусов поверхностей были верными), да и вообще чтобы упростить немного алгоритм DR_SL'а, я с полтора часа просидел, рисуя различные варианты на листе бумаги. Еще довольно сложным было работать с чуждым мне языком python. При помощи многочисленных мануалов по фрикаду (скриптование, куда пихать файлы, немного сниппетов и т.п.) и гугола, я таки сделал это!
Помимо рисования одиночной линзы я добавил код для рисования набора линз. В результате вот такой вот код, введенный в консоль питона freecad'а:
Еще добавлю видео с этими линзами, а также еще одно видео, на котором видно, почему «лучше день потерять, зато потом за полчаса долететь».
Сам код можно посмотреть здесь. а здесь - взять mercurial'ом свежий репозиторий.
Если автор оригинала не возражает, код под лицензией WTFPL!
Для того, чтобы линзы строились по оптическим правилам (т.е. знаки радиусов поверхностей были верными), да и вообще чтобы упростить немного алгоритм 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!
no subject
Date: 2012-06-15 02:02 pm (UTC)no subject
Date: 2012-06-15 03:26 pm (UTC)Если добавить еще трассировку и импорт из земакса, можно будет вполне симпатично оптические схемы для презентаций (и не только) рисовать.
Ну и еще проблема - из земакса трудно сделать чертеж для изготовления оптики, он выдает каркасную страшную модель. А здесь все очень даже отлично.