¬аше окно в мир —јѕ–
 
Ќовости —татьи јвторы —обыти€ ¬акансии Ёнциклопеди€ –екламодател€м
—татьи

23 €нвар€ 2020

»стори€ самого Ђрешательногої компонента €дра C3D от јлександра ћаксименко

ћы продолжаем серию интервью Ђ»стори€ одного €драї с командой C3D Labs о том, как создаетс€ российское геометрическое €дро. —егодн€ свою историю рассказывает јлександр ћаксименко, руководитель разработки решател€ геометрических ограничений C3D Solver.
јлександр ћаксименко

јлександр ћаксименко:

  • ћог стать офицером-ракетчиком, но выбрал программирование
  • ¬ 16 лет самосто€тельно выучил Basic, Assembler и Fortran
  • ”частвовал в разработке трех геометрических решателей Ч двумерного и трехмерного в C3D Solver и параметрического решател€ в  ќћѕј—-3D
  • ћладший брат тимлида команды визуализации Ёдуарда ћаксименко
Ѕлагодар€ интервью с Ёдуардом мы знаем, что в детстве ты жил на  амчатке в военном гарнизоне.  аким запомнилось это место?

я прожил на  амчатке до 13 лет, и воспоминани€ остались самые хорошие и радостные Ч прит€гательна€ природа, море. Ћетом по утрам бегали на отлив собирать рыб и моллюсков. »ногда € притаскивал домой рыбок и держал их в 5-литровых банках. Ћазили по сопкам, собирали кедрач и р€бину Ч она там друга€, крупна€, кисло-сладка€. Ќа рыбалку часто ходили. ƒл€ ребенка это очень интересный край.

јлександр ћаксименко

ѕотом вы вернулись на большую землюЕ
¬ 1989 году отец уволилс€ в запас, мы переехали в  рым, а потом в  оломну. “ак € сменил три школы: после гарнизонной год проучилс€ в Ѕалаклаве, а заканчивал уже в  оломне.
ѕосле школы ты поступил в университет в  оломне?
Ќет, сначала была истори€ с военным училищем. ¬ военкомате € увидел объ€вление, что —анкт-ѕетербургское высшее зенитное ракетное командное училище предлагает получить сразу две специальности Ч военную и гражданскую Ђ–адиоинженерї. ћен€ это заинтересовало, и € уехал учитьс€, а через год подал рапорт на отчисление. —рочную службу дослужил в войсках и поступил в  оломенский институт ћ√ќ”, сразу на второй курс.
јлександр ћаксименко

¬оенное дело оказалось не твоим?
¬ училище все складывалось нормально, и у мен€ могла бы получитьс€ военна€ карьера, но программирование перет€нуло.
–асскажи, с чего все началось?  ак ты стал тем, кого сегодн€ называют Ђгикамиї?
¬ли€ние шло от отца. ќн хоть и военный, офицер ¬ћ‘, но его насто€щим увлечением была электроника. ќн дал мне основы, как будто предчувству€, что наступает цифрова€ эпоха. Ќапример, двоичную систему счислени€ € знал еще в средних классах, знал, как в микросхемах кодируютс€ сигналы. Ќа самом деле ничего сложного дл€ семиклассника в этом нет.
“вой первый €зык программировани€?
Basic, потом Assembler, Fortran.
ѕервый компьютер?
ZX Spectrum Ч мы его собрали сами. Ёдик ездил за детал€ми на ћитинский радиорынок Ч он тогда уже вернулс€ из армии и работал, а € училс€ в школе. ћы вдвоем па€ли компьютер, но главна€ сложность заключалась в его настройке. ≈сли просто спа€ть, то он сразу не заработает. √де-то мог быть дефект на дорожке Ч надо было зачистить, прощупать осциллографом все сигналы.  огда нам первый раз удалось его запустить, то на черно-белом экране телевизора Ђ√оризонтї мы увидели текст ЂSinclair Research Ltd 1982ї. Ёто означало, что запустилась операционка со встроенным Basic.  омпьютер выдавал аналоговый видеосигнал, и мы подстыковали его к телевизору.
јлександр ћаксименко

ѕравда, потом возникла досадна€ непри€тность: провод питани€ упал на плату и сгорели самые чувствительные микросхемы пам€ти. ћы их заменили, оформили корпус с клавиатурой, и дальше началось мое знакомство с программированием. Ёто был примерно 1993 год, € училс€ в 10 классе.

Ќа том же компьютере € выучил Assembler, пробовал писать короткие экспериментальные программки, например примитивный диктофон с двухуровневым квантованием сигнала. ќн потом воспроизводил жуткий хрип, как у заболевшего фарингитом. ZX-Spectrum до сих пор лежит в гараже Ч оставил его на пам€ть.

≈ще одна машина, которую мы собрали Ч ќрион-128, советский радиолюбительский компьютер. ќн интересен тем, что его можно было расшир€ть, добавл€ть к нему устройства. ќднажды подсоединили к нему 5-дюймовый дисковод дл€ чтени€ флоппи-дисков. я даже написал драйвер дл€ обращени€ к дисководу и чтени€/записи секторов.

IBM PC XT € впервые увидел в лаборатории кафедры транспортного машиностроени€  оломенского института ћ√ќ”, где одно врем€ работал Ёдик. ћне по знакомству давали посидеть за ним. “огда это было в диковинку: качество сборки компьютера, клавиатура, монитор стандарта Ђ√еркулесї с черно-белой графикой высокого разрешени€. ¬ лаборатории € познакомилс€ с €зыком Fortran и с DOSом.
ѕоэтому сомнений, в какую профессию идти, у теб€ не было?
ƒа, € мечтал быть программистом.
 огда ты начал программировать профессионально? “вой первый опыт работы?
¬ 1999 году, когда заканчивал учебу в университете, мен€ прин€ли на работу в ј— ќЌ.
 ак ты узнал про компанию, почему решил прийти на работу именно сюда?
”знал от знакомых. —начала € обратилс€ в ј— ќЌ на 2 или 3 курсе, но тогда моих знаний дл€ работы не хватило. я начал изучать €зык —, дома уже был 286-й компьютер.  огда почувствовал больше уверенности, пришел во второй раз. Ќа собеседование принес свои наработки: алгоритм разбора алгебраического выражени€, программу, рисующую проекции фигур с помощью матриц преобразовани€.

¬идимо, чем-то € понравилс€, и мен€ вз€ли на испытательный срок. ћоим наставником стала “ать€на ћихайловна янкина, одна из основателей компании. ѕервое впечатление было, что € попал в коллектив увлеченных людей. ќни работали допоздна по 14 часов в сутки.

—начала “ать€на ћихайловна дала мне хорошую школу индустриального подхода к программированию: основные правила C++, стандарты и требовани€. √олова распухала от информации. »спытательный срок € прошел за один мес€ц.

“во€ перва€ задача в разработке  ќћѕј—-3D?
 инематическа€ операци€. Ќа тот момент основным продуктом был  ќћѕј—-√рафик, а трехмерный  ќћѕј—-3D только готовилс€ к выходу. “ребовалось написать процесс ввода: как пользователь выбирает сечение, выбирает траекторию и получает прот€гиванием кинематическое тело. я рассматривал разные ситуации со стыковкой/нестыковкой, когда пользователь совершает ошибочное действие и нужно выдать подсказку. “ам были задачи и попроще, а мне дали сразу одну из самых сложных.
 акие работы ты еще делал в  ќћѕј—е?
 роме кинематической операции, € сделал конструктивную плоскость. ¬ ней тоже присутствуют разные комбинации и способы построени€: по трем точкам, по точке и ребру, по касательной и точке.

ѕосле выхода первой трехмерной версии  ќћѕј— 5.9 нужно было развивать другие направлени€, не хватало математики. » тогда мен€ вз€л к себе Ќиколай Ќиколаевич √олованов.

јлександр ћаксименко

ѕервый трехмерный  ќћѕј—: верси€ 5.9

 аким ты увидел геометрическое €дро?
я начал с отладки ошибок, а это очень скучное зан€тие, но зато проникс€ устройством €дра, познакомилс€ с его архитектурой. ѕотом была реализаци€ комбинаций частных случаев пересечени€ поверхностей, где требуетс€ решение в аналитической форме. ¬ основном это конические сечени€: цилиндр с плоскостью, цилиндр с цилиндром, конус с цилиндром. ћножество ситуаций, когда на выходе получаютс€ не просто сплайны, а аналитические кривые: окружности, эллипсы, параболы, гиперболы.
ядро Ч это больше про математику, а не программированиеЕ
” мен€ была хороша база по аналитической геометрии благодар€ вузу. ¬се векторно-матричные операции € знал. „его не хватало, так это знаний по алгоритмам вычислени€ больших линейных систем уравнений с разреженными матрицами. «десь большое вли€ние на мен€ оказал профессор –€занского радиотехнического университета –анас ћударисович √анеев. ћы использовали метод √аусса, но у него имелись недостатки Ч невысокое быстродействие и отсутствие решени€ дл€ вырожденных матриц. “огда јнатолий  рючков, как аналитик  ќћѕј—а и энтузиаст вс€ких перспективных штук, пригласил профессора √анеева. ќн подобрал дл€ нас алгоритм, основанный на QR-разложении. я вникал и разными способами внедр€л этот алгоритм в солвер. ѕо итогам сделанного мы написали статью в журнал Ђ—јѕ– и графикаї Ђ–ешение системы линейных алгебраических уравнений в параметрическом моделированииї.
ѕодойдем к решателю.  огда ты стал им заниматьс€?
–ешатель сам мен€ нашел. ƒо этого € проработал пересечение поверхностей в геометрическом моделлере, в том числе общий случай пересечени€ поверхностей, чем заслужил доверие, и мне вручили солвер.

Ќа тот момент в двумерном решателе были большие пробелы, не хватало рук дл€ его развити€. ¬ каком-то смысле он был одноклеточным Ч работал как численный метод: загружалась система уравнений и выдавалс€ ответ. ќн не умел справл€тьс€ с недоопределенными задачами, с системами уравнений, где по€вл€лась вырожденна€ матрица. “ребовалось реализовать метод декомпозиции, разбиение задачи на подзадачи, чтобы надежнее обрабатывать все чертежные случаи.

ќбъ€сни, что же такое решатель ограничений (он же солвер)?
≈сли кратко, то геометрический решатель Ч это программный модуль, основна€ задача которого найти такое состо€ние всем геометрическим объектам, которое удовлетворит все заданные ограничени€. ‘ормулируетс€ в одном предложении, но за ним стоит рассмотрение огромного класса случаев. ѕользователь может задать какие-угодно ограничени€, нарисовать любые контуры и кривые (если брать 2D) и как угодно их друг с другом соединить, выставить любые размеры.

ќсновное отличие решател€ заключаетс€ в вариационности подхода: все ограничени€ равноправны. ѕостановка задачи идет не процедурным, а декларативным способом. ѕроцедурный подразумевает набор шагов, как, например, в булевых операци€х Ђпросверли отверстие, сделай скруглениеї.

ƒекларативный способ задает конечный результат (хочу, чтобы грани были параллельны), а последовательность действий происходит внутри решател€. ƒва этих способа не конкурируют, а дополн€ют друг друга. ќб этом хорошо написал ƒмитрий ”шаков, CEO Bricsys Technology Russia (ранее CEO Ћ≈ƒј—), в статье на isicad. ¬ —јѕ–е солвер реализует декларативную парадигму, когда пользователь не говорит, что делать, а сразу описывает результат.

 акова роль решател€ в параметризации?
≈сли под параметризацией понимать наделение геометрической модели набором управл€ющих параметров, то в двумерном мире, в рамках чертежа, роль 2D решател€ Ч центральна€: с помощью размеров мы описываем параметрический чертеж.
јлександр ћаксименко

¬ трехмерной параметрической модели 3D-решатель обслуживает систему сопр€жений, т.е. выполн€ет задачу позиционировани€ деталей сборки, а также кинематический анализ.
јлександр ћаксименко

≈сли говорить о  ќћѕј—-3D, то в нем есть еще один решатель Ч EquSolver, параметрический. ќн отвечает за решение систем инженерных уравнений. ¬ нем нет геометрических пон€тий, а есть переменные, уравнени€ и операции, вложенные в дерево. ќсновна€ фишка: пользователь задает уравнени€ в таблице одновременно на всю модель, а решатель разбирает, в какой момент, пока он перестраивает, подключить то или иное уравнение. ћы сделали его в 2006 году, аналитиком был јнатолий  рючков, а € отработал математическую модель.
„то было самым сложным в работе над геометрическим решателем за эти 15 лет?
¬сегда остаютс€ задачи, которые никогда не могут быть решены полностью. Ќаверное, труднее других далс€ метод декомпозиции. Ёто всевозможные способы распознани€ в общей задаче мелких подзадач Ч как превратить сложное в простое. —начала были неудачные способы, намеки на будущие решени€, приходилось делать распознание отдельных мелких ситуаций. ѕотом они обобщались, и можно было придумать целую вычислительную Ђмашинуї, котора€ умеет обрабатывать сразу все ситуации.
¬ 2012 году математическое подразделение ј— ќЌ было преобразовано в компанию C3D Labs, и постепенно стали по€вл€тьс€ внешние заказчики.  ак они повли€ли на решатель?
 ак ни крути, основным поставщиком требований дл€ нас был  ќћѕј—-3D. ѕринципиально новые возможности сейчас требуютс€ ѕриложени€м  ќћѕј—а. ƒо сих пор мы решали задачу сборки, где каждый сопр€гаемый объект принадлежит какому-то телу, а предметом вычислени€ €вл€етс€ положение тел в пространстве. ќт дивизиона ѕриложений поступила задача, когда присутствуют разнородные объекты, которые могут принадлежать телам (кластерам), а могут быть сами по себе в общем пространстве модели. Ёто заставило нас реформировать трехмерный решатель.
јлександр ћаксименко

 аркасна€ модель в приложении ќборудование “рубопроводы дл€  ќћѕј—-3D

ѕо запросу ЂЌанософтаї сделали отложенную формулировку ограничений, когда внутренн€€ система уравнений формируетс€ не в момент добавлени€ ограничений, а в момент запроса на пересчет (вызов Evaluate). Ёто позвол€ет распараллелить процесс накачки солвера и формулировать более качественную систему уравнений. Ќапример, решилс€ запрос от ЂЌанософтї о поддержке нулевых радиусов, когда окружности превращаютс€ в точки. ¬ большей степени это была программна€ работа, нежели математическа€, но внутренности солвера перелопатили здорово.

Ќаш турецкий заказчик Mubitek раньше использовал другой решатель, D-Cubed, и чтобы ему было проще перейти на C3D Solver, мы подстроились и сделали распараллеливание ввода данных в API, как это прин€то в D-Cubed.

“ак кака€ же задача в солвере остаетс€ нерешенной?
ƒиагностика нерешаемых задач. ќна сделана дл€ большинства случаев и пока удовлетвор€ет и  ќћѕј—, и внешних заказчиков, но все равно встречаютс€ еще проблемные ситуации. –ечь о том, когда пользователь задает противоречащие ограничени€ и нужно ему дать информацию, что чему противоречит. ƒиагностика переопределений остаетс€ не решенной в полной мере. ќценить решаемое и нерешаемое Ч это квинтэссенци€ геометрических решателей.
√еометрических €дер в мире больше 10, а лицензируемых п€ть. –ешателей же всего четыре. Ёто еще более высокий уровень сложности, чем геометрическое моделирование. „то нужно, чтобы заниматьс€ решателем?
«нани€, опыт, математика, изобретательность. Ќигде в учебниках не описано, как решить систему геометрических ограничений в общем виде, зато в математике отработаны численные методы, теори€ графов, аналитическа€ геометри€, дифференциальна€ геометри€, вычислительна€ геометри€. √лавное, что требуетс€, Ч уметь соединить все элементы в решающую машину и завести ее.

ћатематика Ч абстрактна€, отвлеченна€ наука, но в ней можно найти алгоритмы, применимые к нашим задачам. Ќапример, есть задача на потоки в сет€х Ч распределение потоков по сети трубопроводов в теории графов. ќна вроде бы к геометрическому решателю совсем не имеет отношени€, но этот алгоритм примен€етс€ дл€ распознани€ жестких структур (кластеров), т.е. в декомпозиции.

≈сли готовых учебников нет, ты бы вз€лс€ написать книгу о геометрическом решателе?
ѕожалуй, да. ћожно было бы собрать в книге базу знаний, какие подходы, методы, алгоритмы требуютс€. „то-то вроде Ђѕострой решатель своими рукамиї.
јлександр ћаксименко


„итайте также:


¬акансии:

јктуальное обсуждение

RSS-лента комментариев

-->

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: ”даленка мобилизует работающих в информационных технологи€х
ѕроект ЂЌародное —јѕ–-интервьюї

—лучайна€ стать€:

isicad Top 10

—амые попул€рные материалы

   ‘орумы isicad:

isicad-2010 isicad-2008
isicad-2006 isicad-2004

ќ проекте

ѕриглашаем публиковать на сайте isicad.ru новости и пресс-релизы о новых решени€х и продуктах, о проводимых меропри€ти€х и другую информацию. јдрес дл€ корреспонденции - info@isicad.ru

ѕроект isicad нацелен на

  • укрепление контактов между разработчиками, поставщиками и потребител€ми промышленных решений в област€х PLM и ERP...
ѕодробнее

»нформаци€ дл€ рекламодателей


¬се права защищены. © 2004-2020 √руппа компаний «Ћ≈ƒј—»

ѕерепечатка материалов сайта допускаетс€ с согласи€ редакции, ссылка на isicad.ru об€зательна.
¬ы можете обратитьс€ к нам по адресу info@isicad.ru.