eddy_em: (Default)
[personal profile] eddy_em
Итак, воодушевленный этой темой на ЛОРе и вдохновленный пользователем 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!
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 12:20 pm
Powered by Dreamwidth Studios