Рекламодатель: ООО «Борлас АФС»

ИНН 7726514619 ОГРН 1047796971386

Рекламодатель: ООО «ПЛМ Урал»

ИНН 6658305757 ОГРН 1086658008975

Рекламодатель: ООО НТЦ «АПМ»

ИНН 5018019971 ОГРН 1035003357366

Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557

5 - 2026

Новая версия RGK — новая функциональность и улучшение базовых инструментов

Леонид Баранов, 
директор по развитию технологий моделирования компании «Топ Системы»
Леонид Баранов,
директор по развитию технологий моделирования компании «Топ Системы»

Приближается время выхода очередной версии геометрического ядра RGK от компании «Топ системы». С момента предыдущей публикации (Геометрическое ядро RGK: открыто о сложностях и достижениях. САПР и графика. 2025. № 6 и 7) прошел почти год, и имеет смысл рассказать о результатах, достигнутых за это время командой разработки RGK. С одной стороны, была проделана большая работа по развитию внутренних технологий ядра — по повышению точности генераторов, распараллеливанию внутренней логики и оптимизации алгоритмов как по скорости, так и по точности результата. С другой — наращивались возможности и устойчивость уже существующих функций ядра, разрабатывались различные полезные на практике инструменты. В частности, это инструменты анализа геометрии, тесселяции, генерации проекций. И наконец, создавались принципиально новые технологические направления, значительно расширяющие возможности ядра при решении практических задач.

Развитие формообразующих операций и средств редактирования модели

В первую очередь хотелось бы остановиться на дальнейшем развитии базовых операций создания модели. Практически во всех этих операциях-генераторах были сделаны важные улучшения.

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

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

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

На практике нередко возникает необходимость построить поверхность «по сечениям» с направляющими, находящимися за пределами крайних сечений. В новой версии ядра реализована такая возможность как для случая одной направляющей (рис. 2), так и для набора направляющих (рис. 3).

Рис. 2. Пример построения поверхности «по сечениям» с продлением за пределы крайнего сечения

Рис. 2. Пример построения поверхности «по сечениям» с продлением за пределы крайнего сечения

Рис. 3. Пример построения поверхности «по сечениям» с продлением за пределы крайнего сечения для нескольких направляющих

Рис. 3. Пример построения поверхности «по сечениям» с продлением за пределы крайнего сечения для нескольких направляющих

Кроме того, в алгоритм генератора добавлена возможность автоматической синхронизации сечений как с одинаковым числом «углов», так и с разным. На рис. 4 приведены два примера, иллюстрирующих эту функциональность.

Рис. 4. Примеры работы режима автоматической синхронизации сечений с изломами

Рис. 4. Примеры работы режима автоматической синхронизации сечений с изломами

Значительное внимание в улучшении алгоритмов ядра уделялось вопросам качества и оптимизации поверхностей. Эта работа ведется в самых разных инструментах ядра, в том числе и в генераторе «по сечениям». На рис. 5-7 приведены несколько примеров изменений в генерации поверхностей с помощью этой операции в новой версии по сравнению с прошлым годом.

Рис. 5. Пример, иллюстрирующий оптимизацию формы поверхности в новой версии генератора «по сечениям»

Рис. 5. Пример, иллюстрирующий оптимизацию формы поверхности в новой версии генератора «по сечениям»

Рис. 6. Пример, иллюстрирующий улучшение в алгоритме «по сечениям» пи обработке граничных условий G2

Рис. 6. Пример, иллюстрирующий улучшение в алгоритме «по сечениям» пи обработке граничных условий G2

Рис. 7. Диаграмма изменения числа контрольных точек поверхностей, полученных операцией «по сечениям»

Рис. 7. Диаграмма изменения числа контрольных точек поверхностей, полученных операцией «по сечениям»

Была добавлена опция «впечатывания» промежуточных сечений и направляющих в топологию результирующего тела (рис. 8).

Рис. 8. Иллюстрация работы опции впечатывания ребер промежуточных сечений и направляющих в результирующее тело

Рис. 8. Иллюстрация работы опции впечатывания ребер промежуточных сечений и направляющих в результирующее тело

В операции «по траектории» большое внимание было уделено поддержке граничных условий по гладкости в случае многопрофильного задания — это когда задается несколько образующих и направляющих. Как известно, при внешней схожести такого способа задания с операций «по сечениям» форма создаваемой поверхности будет другой из-за природы алгоритма ее получения — как бы движения некой кривой по траектории с ее деформированием по законам, заданным явно (функциями кручения — масштабирования или неявно — несколькими траекториями и/или промежуточными кривыми-сечениями. При разработке RGK принято детально рассматривать задачу, в том числе и регламентировать поведение алгоритмов в пограничных и вырожденных конфигурациях, проводить сравнение с лидирующими на мировом рынке инструментами моделирования. Такой подход, конечно, заметно повышает трудоемкость и требования к качеству математики ядра, но при этом позволяет обеспечить приложениям требуемый уровень функциональности и стабильности. На рис. 9-17 демонстрируются примеры работы новой функциональности в операции «по траектории».

Рис. 9. Пример построения поверхности методом протягивания границы грани по траектории с переходом в заданную кривую с сохранением гладкости с исходной гранью

Рис. 9. Пример построения поверхности методом протягивания границы грани по траектории с переходом в заданную кривую с сохранением гладкости с исходной гранью

Рис. 10. Пример работы функциональности в случае задания условия гладкости на некоторых (но не всех) исходных гранях

Рис. 10. Пример работы функциональности в случае задания условия гладкости на некоторых (но не всех) исходных гранях

Рис. 11. Пример создания листового тела операцией «по траектории» с сохранением гладкости даже в случае негладкой границы на исходных сечениях

Рис. 11. Пример создания листового тела операцией «по траектории» с сохранением гладкости даже в случае негладкой границы на исходных сечениях

Рис. 12. Пример поведения алгоритма в ситуации геометрической неопределенности (выбрано одно из возможных решений)

Рис. 12. Пример поведения алгоритма в ситуации геометрической неопределенности (выбрано одно из возможных решений)

Рис. 13. Пример, иллюстрирующий поведение алгоритма в ситуации, когда нормаль ГУ «переворачивается» в разных точках образующей

Рис. 13. Пример, иллюстрирующий поведение алгоритма в ситуации, когда нормаль ГУ «переворачивается» в разных точках образующей

Рис. 14. Пример, показывающий влияние задания множителя ГУ на форму результирующей поверхности

Рис. 14. Пример, показывающий влияние задания множителя ГУ на форму результирующей поверхности

Упомянутые иллюстрации, на наш взгляд, лаконично, но довольно наглядно демонстрируют прогресс в генерации сложных форм операцией «по траектории». Как легко видеть в этих примерах, ядру удается построить поверхности предсказуемой формы с соблюдением всех условий по геометрической гладкости даже в ситуациях неоднозначных и практически вырожденных. За таким поведением стоит не только довольно сложная алгоритмическая составляющая, но и много разных любопытных математических задач. По традиции вкратце расскажем об одной проблеме, которую пришлось решить в базовых инструментах ядра, чтобы обеспечить построение и использование в ядре некоторых из приведенных выше форм. Важным требованием к поверхностям при моделировании является требование определенности нормали к поверхности в любой точке. В ряде случаев это требование формально не выполняется. На рис. 18 приведен пример поверхности, для которой правило получения нормали как векторного произведения векторов частных производных не выполняется.

Рис. 15. Иллюстрация использования множителя ГУ для выбора решения в случае геометрической неоднозначности задачи

Рис. 15. Иллюстрация использования множителя ГУ для выбора решения в случае геометрической неоднозначности задачи

Рис. 16. Пример построения замкнутого листового тела с выполнением условия касания в начале-конце траектории и с заданием «перекручивания» при помощи задания точек соответствия

Рис. 16. Пример построения замкнутого листового тела с выполнением условия касания в начале-конце траектории и с заданием «перекручивания» при помощи задания точек соответствия

Рис. 17. Пример создания листового тела операцией «по траектории» с соблюдением касания к исходным граням и сведением нескольких граней в одну точку

Рис. 17. Пример создания листового тела операцией «по траектории» с соблюдением касания к исходным граням и сведением нескольких граней в одну точку

Рис. 18. Пример неопределенной нормали в углах поверхности

Рис. 18. Пример неопределенной нормали в углах поверхности

На данном примере легко видеть, что «интуитивная» нормаль существует в любой точке этой поверхности. Задача состоит в придумывании математической схемы, которая позволила бы вычислять нормаль к таким и подобным поверхностям устойчивым и однозначным образом (рис. 19-21).

Рис. 19. Иллюстрация регуляризации задачи вычисления нормали к поверхности

Рис. 19. Иллюстрация регуляризации задачи вычисления нормали к поверхности

Рис. 20. Иллюстрация решения задачи

Рис. 20. Иллюстрация решения задачи

Рис. 21. Иллюстрация поведения алгоритма вычисления нормали к поверхности в зонах сингулярности

Рис. 21. Иллюстрация поведения алгоритма вычисления нормали к поверхности в зонах сингулярности

Приведенная схема решения одной из многочисленных задач при разработке ядра показывает, что часто приходится довольно тонко анализировать задачи и подходы к их решениям для получения качественного ответа. Любопытно, что описанный подход в ядре используется не только «напрямую» для работы с поверхностями в «конечных» моделях, но и при генерации поверхностей, и вообще при работе с функциями двух переменных в тех же алгоритмах генерации «по сечениям» и «по траектории».

В булевых операциях была реализована очередная «незаметная» доработка. А именно в одновременной булевой над набором тела была добавлена возможность получения обобщенной топологии в процессе построения (рис. 22).

Рис. 22. Иллюстрация булевого объединения нескольких тел по новой схеме

Рис. 22. Иллюстрация булевого объединения нескольких тел по новой схеме

Рис. 23. Пример работы выполнения рельефа на твердом теле с передачей профиля 
и ограничивающих граней в случае твердого тела

Рис. 23. Пример работы выполнения рельефа на твердом теле с передачей профиля
и ограничивающих граней в случае твердого тела

Рис. 24. Пример работы выполнения рельефа на твердом теле с передачей профиля 
и ограничивающих граней в случае листового тела

Рис. 24. Пример работы выполнения рельефа на твердом теле с передачей профиля
и ограничивающих граней в случае листового тела

Был разработан новый генератор из класса локальных операций — «Рельеф/тиснение». Он позволяет формировать надписи и рисунки на твердых и листовых телах путем задания профилей и ограничений (рис. 23 и 24). Вот общий список возможностей этого генератора:

  • операция построения рельефа или тиснения по заданному профилю;
  • пользователь передает целевое тело, профиль и, при необходимости, ограничивающий контур;
  • поддерживаются листовые и твердые тела;
  • доступно выполнение локально на определенных гранях тела;
  • можно выбрать способ построения: по направлению, с уклонами граней или по нормалям поверхности;
  • возможно создание операции как «наружу» тела — рельеф, так и внутрь — «тиснение».

Продолжали совершенствоваться представленные в предыдущей версии новые генераторы. В частности, генератор построения серединного тела. В первую очередь был улучшен алгоритм расширения серединных тел и затягивания отверстий, что значительно повысило его стабильность в работе на практических примерах. В частности, в новой версии RGK операция подрезки серединных тел может проанализировать входные серединные тела и их родительское твердое тело и, если потребуется, расширить серединные тела и затянуть в них отверстия. Как известно, создание серединных тел и последующая подрезка может привести к появлению моделей, в которых грани перекрывают друг друга. Зачастую это происходит при работе с твердыми телами с неоднородной толщиной. При объединении листовых тел это может привести к образованию обобщенной (non-manifold) топологии. Для исправления ситуации в новой версии RGK в операцию подрезки серединных тел добавлен режим поиска и/или удаления перекрывающихся наборов граней (рис. 25).

Рис. 25. Иллюстрация работы нового режима поиска перекрытий и подрезки серединных листовых тел в перекрывающихся конфигурациях

Рис. 25. Иллюстрация работы нового режима поиска перекрытий и подрезки серединных листовых тел в перекрывающихся конфигурациях

В RGK активно развивается режим построения истинно серединных листовых тел, о котором мы писали в предыдущей публикации, как о важном режиме построения. Ранее режим был реализован для одиночных родительских граней. Теперь реализуется режим для множеств родительских граней. Серединное листовое тело в RGK состоит из листов, каждый из которых представляет истинно серединную поверхность, построенную между некоторой парой родительских граней.

Как видно из приведенных иллюстраций на рис. 26 и 27, технология генерации серединных тел получила значительное улучшение. Проводимые в ходе работ постоянные сравнения с ведущими иностранными ядрами показывают, что при работе нового алгоритма во многих случаях получается более точный и топологически верный результат.

Рис. 26. Пример работы алгоритма построения истинно серединных тел в новой версии RGK (случай гладко сопряженных граней)

Рис. 26. Пример работы алгоритма построения истинно серединных тел в новой версии RGK (случай гладко сопряженных граней)

Рис. 27. Пример работы алгоритма построения истинно серединных тел 
в новой версии RGK (случай негладкого сопряжения граней)

Рис. 27. Пример работы алгоритма построения истинно серединных тел
в новой версии RGK (случай негладкого сопряжения граней)

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

Рис. 28. Иллюстрация нового режима расширения листового тела «до тела»

Рис. 28. Иллюстрация нового режима расширения листового тела «до тела»

Кроме того, появилась опция «частичного расширения до тела». Она позволяет делать максимально возможное расширение листового тела до возникновения самопересечений (рис. 29).

Рис. 29. Иллюстрация режима частичного расширения «до тела»

Рис. 29. Иллюстрация режима частичного расширения «до тела»

Понятно, что, в общем случае, расширение листа — это довольно сложный процесс, и очень важно, чтобы ядро предоставляло возможности не получать «плохую» геометрию. Опция «частичного расширения» — как раз и есть пример такого поведения, не допускающего очевидную некорректность ответа. На рис. 30 приведен еще один пример работы этой опции в иной конфигурации.

Рис. 30. Иллюстрация поведения ядра при расширении листового тела для периодических поверхностей

Рис. 30. Иллюстрация поведения ядра при расширении листового тела для периодических поверхностей

Традиционно значительное внимание в разработке уделялось совершенствованию алгоритмов построения сглаживаний ребер и поверхностей. Может показаться, что в новой версии изменения не столь значительны, как в предыдущих релизах. С точки зрения изменений в API ядра это действительно так, но прогресс в части совершенствования внутренних алгоритмов, повышения скорости и робастности всё же был значительным. На рис. 31-34, к примеру, показан такой «незаметный» прогресс.

Рис. 31. Примеры улучшения в сглаживании несколькими радиусами за одну операцию

Рис. 31. Примеры улучшения в сглаживании несколькими радиусами за одну операцию

Рис. 32. Пример расширения возможностей генератора сглаживаний RGK

Рис. 32. Пример расширения возможностей генератора сглаживаний RGK

Рис. 33. Пример обработки перекрытия поверхностей сглаживания большого радиуса в новой версии ядра

Рис. 33. Пример обработки перекрытия поверхностей сглаживания большого радиуса в новой версии ядра

Рис. 34. Улучшено определение типа необходимой заплатки при схождении трех родительских ребер скругления на промышленной детали авиационного назначения. Результат иностранного САПР — на правом нижнем рисунке

Рис. 34. Улучшено определение типа необходимой заплатки при схождении трех родительских ребер скругления на промышленной детали авиационного назначения. Результат иностранного САПР — на правом нижнем рисунке

В качестве комментария к указанным примерам хочется привести цитату из одной старой рекламы: «Мы работаем ради этих миллиметров»! В контексте обсуждения обработки перекрытий листов сглаживания в процессе операции следует указать, что в новой версии добавлена возможность построения перекрытий в случае наличия набора последовательностей переменной выпуклости за одну операцию (рис. 35-39).

Рис. 35. Наглядная иллюстрация работы ядра со сглаживанием перекрывающихся последовательностей разной выпуклости за одну операцию

Рис. 35. Наглядная иллюстрация работы ядра со сглаживанием перекрывающихся последовательностей разной выпуклости за одну операцию

Рис. 36. Пример, показывающий улучшение в «обрезке» сглаживания в сложном случае сплайновых граней

Рис. 36. Пример, показывающий улучшение в «обрезке» сглаживания в сложном случае сплайновых граней

Рис. 37. Пример построения сглаживания с обработкой зон высокой кривизны

Рис. 37. Пример построения сглаживания с обработкой зон высокой кривизны

Рис. 38. Пример построения завершения листа сглаживания на сплайновых гранях в толерантных случаях

Рис. 38. Пример построения завершения листа сглаживания на сплайновых гранях в толерантных случаях

Последний пример на рис. 39 показывает кажущееся небольшим улучшение алгоритма. Но тут стоит учесть, что «пирамидка» в нем — это построенная сплайнами топология, и сложность состоит в расширении такой геометрии до требуемого для обрезки расстояния, не говоря уже о том, что алгоритм определяет, какие грани нужно расширять и в какой комбинации для получения требуемого ответа. Таких, казалось бы, малозаметных улучшений в новой версии довольно много. Их «незаметность» с точки зрения внешнего интерфейса отражает переход стадии разработки ядра от наращивания функциональности к оттачиванию алгоритмов на «промышленных» примерах (рис. 40).

Рис. 39. Пример работы алгоритма сглаживания в случае, где требуется расширение обрезающих граней

Рис. 39. Пример работы алгоритма сглаживания в случае, где требуется расширение обрезающих граней

Рис. 40. Применение нового алгоритма на «промышленном» примере

Рис. 40. Применение нового алгоритма на «промышленном» примере

О том, как этот процесс организуется в рамках разработки, поговорим чуть позже. Сейчас же стоит отметить, что только совершенствованием внутренней «начинки» алгоритма сглаживания доработки не ограничились. Были добавлены и принципиально новые возможности. В частности, появилась возможность строить гладкую поверхность скругления с сохранением как одной, так и двух границ в одной операции (рис. 41 и 42).

Рис. 41. Пример, иллюстрирующий поведение алгоритма сглаживания новой версии при переходе в режиме сохранения ребер на постоянном радиусе

Рис. 41. Пример, иллюстрирующий поведение алгоритма сглаживания новой версии при переходе в режиме сохранения ребер на постоянном радиусе

Рис. 42. Иллюстрация сохранения гладкости поверхности между участками различной обработки в случае, представленном на рис. 41

Рис. 42. Иллюстрация сохранения гладкости поверхности между участками различной обработки в случае, представленном на рис. 41

Важно, что такое поведение демонстрирует алгоритм не только постоянного, но и переменного радиуса (рис. 43 и 44).

Рис. 43. Пример работы алгоритма сглаживания переменного радиуса с сохранением ребер на переменном радиусе с сохранением G1 стыковки поверхностей сглаживания

Рис. 43. Пример работы алгоритма сглаживания переменного радиуса с сохранением ребер на переменном радиусе с сохранением G1 стыковки поверхностей сглаживания

Рис. 44. Иллюстрация новой опции сглаживания в режиме переменного радиуса

Рис. 44. Иллюстрация новой опции сглаживания в режиме переменного радиуса

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

Рис. 45. Пример работы алгоритма сглаживания в новой версии RGK с явным и неявным заданием ограничивающих ребер в рамках одной последовательности

Рис. 45. Пример работы алгоритма сглаживания в новой версии RGK с явным и неявным заданием ограничивающих ребер в рамках одной последовательности

Была значительно доработана функциональность придания толщины листовому телу. В частности:

  • добавлена возможность задавать направление придания толщины;
  • при задании разных толщин для различных гладко сопряженных граней появилась возможность задать режим стыковки результирующих граней (ступенька или продление до пересечения соседей);
  • добавлена возможность задавать «выколотые» грани на исходном теле (по аналогии с подобным поведением в операции Оболочка);
  • улучшена обработка стыковки между негладкими поверхностями смещения.

Приведем иллюстрации новой функциональности (рис. 46-50).

Рис. 46. Иллюстрация построения тела смещения в заданном направлении внутрь и наружу от исходного листового тела

Рис. 46. Иллюстрация построения тела смещения в заданном направлении внутрь и наружу от исходного листового тела

Рис. 47. Иллюстрация обработки построения тела смещения с формированием ступеньки 
в месте разрыва смещаемых граней

Рис. 47. Иллюстрация обработки построения тела смещения с формированием ступеньки в месте разрыва смещаемых граней

Рис. 48. Иллюстрация обработки построения тела смещения с расширением результирующих граней в месте разрыва смещаемых граней

Рис. 48. Иллюстрация обработки построения тела смещения с расширением результирующих граней в месте разрыва смещаемых граней

Рис. 49. Пример построения тела смещения с исключением выделенной грани 
исходного тела из обработки

Рис. 49. Пример построения тела смещения с исключением выделенной грани исходного тела из обработки

Рис. 50. Иллюстрация построения тела смещения при изломе ламинарной границы

Рис. 50. Иллюстрация построения тела смещения при изломе ламинарной границы

Расширена функциональность различных инструментов ядра. В операцию Сшивка добавлена возможность задания «шаблона» при сшивке, то есть указания наборов ребер, которые нужно сшить. Эта функциональность полезна во многих приложениях — как при разработке различных трансляторов, так и при формировании модели по специальной прикладной логике. Она позволяет, с одной стороны, ускорить процесс при наличии большого числа топологий, но, что более важно, избегать некорректного срабатывания операции при наличии мелких ребер и грубых точностей на модели (рис. 51).

Рис. 51. Иллюстрация результата работы сшивки «по шаблону» (справа) от «глобальной» сшивки

Рис. 51. Иллюстрация результата работы сшивки «по шаблону» (справа) от «глобальной» сшивки

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

Рис. 52. Иллюстрация получения обобщенного тела в результате сшивки двух листовых тел

Рис. 52. Иллюстрация получения обобщенного тела в результате сшивки двух листовых тел

Продолжено развитие функциональности замены граней. Теперь можно заменить сразу несколько граней тела на многогранные листы (рис. 53).

Рис. 53. Пример работы нового режима в операции замены граней (разными цветами показаны соответствия грань — тело для замены в рамках одной операции)

Рис. 53. Пример работы нового режима в операции замены граней (разными цветами показаны соответствия грань — тело для замены в рамках одной операции)

Как можно заметить из рис. 53, одна грань исходного тела может быть заменена на листовое тело, в котором содержится несколько граней. Еще более наглядно эта возможность представлена на рис. 54.

Рис. 54. Пример замены одной грани тела на совокупность граней

Рис. 54. Пример замены одной грани тела на совокупность граней

Следует добавить, что при замене граней могут возникать неоднозначности, как показано на рис. 55.

Рис. 55. Пример выбора варианта решения при неоднозначности

Рис. 55. Пример выбора варианта решения при неоднозначности

Вариант решения определяется указанием ориентации целевого листового тела, что добавляет гибкости операции при решении реальных задач.

Были выполнены доработки функциональности вычисления тени на теле. В ней добавлена дополнительная опция разделения входных тел на группы Cast — отбрасывающие тень тела, Gather — собирающие тень тела. Опция ускоряет работу на сложных телах, когда самозатенение отдельных тел не требуется, повышает стабильность генератора для касательных к направлению наблюдения граней (рис. 56).

Рис. 56. Пример работы новых опций при формировании тени тел (красным цветом отмечено тело с заданием опции Cast, самозатенение этого тела отсутствует)

Рис. 56. Пример работы новых опций при формировании тени тел (красным цветом отмечено тело с заданием опции Cast, самозатенение этого тела отсутствует)

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

Рис. 57. Пример работы новых опций при формировании тени тел (красным цветом отмечено тело с заданием опции Cast, второе тело задано с опцией Gather)

Рис. 57. Пример работы новых опций при формировании тени тел (красным цветом отмечено тело с заданием опции Cast, второе тело задано с опцией Gather)

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

Рис. 58. Пример работы функции проверки аналитической гладкости кривой

Рис. 58. Пример работы функции проверки аналитической гладкости кривой

Значительное внимание при разработке таких функций было уделено скорости вычислений и сравнению с конкурирующими ядрами мировых лидеров. На рис. 59 приведено одно из таких сравнений.

Рис. 59. Скорость работы алгоритмов проверки гладкости кривых в сравнении с известным иностранным ядром

Рис. 59. Скорость работы алгоритмов проверки гладкости кривых в сравнении с известным иностранным ядром

Похожая функциональность доступна и для анализа поверхностей. Доступен анализ как на аналитическое вырождение, так и на самопересечение сплайн-поверхностей и поверхностей смещения (рис. 60 и 61). 

Рис. 60. Иллюстрация поиска вырождения сплайн-поверхности

Рис. 60. Иллюстрация поиска вырождения сплайн-поверхности

Рис. 61. Примеры работы алгоритма поиска зон самопересечения

Рис. 61. Примеры работы алгоритма поиска зон самопересечения

Продолжение в следующем номере журнала «САПР и графика»



На сайте используется Яндекс метрика

Мы в: и

Рекламодатель:
ООО «Нанософт разработка»

ИНН 7751031421 ОГРН 5167746333838

Рекламодатель: ООО «НТЦ ГеММа»

ИНН 5040141790 ОГРН 1165040053584

Рекламодатель: ООО «АДЕМ-инжиниринг»

ИНН 9718084250 ОГРН 5177746329569

Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН: 1087746953557

Рекламодатель: ООО «Лоция Софтвэа»

ИНН 7722222090 ОГРН: 1037700046427

Рекламодатель: ООО «АППИУС-СОФТ»

ИНН 7743675366 ОГРН: 1087746091454