to the top
close form
Для получения триального ключа
заполните форму ниже
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Изучение проблемы: перенос Си++ библиот…

Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками на 64-битную платформу

15 Янв 2009

Итальянская компания E.G.S. S.r.l. занимается разработкой решений в области моделирования трехмерных объектов на базе триангулированных сеток.

Введение

Итальянская компания E.G.S. S.r.l. занимается разработкой решений в области моделирования трехмерных объектов на базе триангулированных сеток.

a0036_EGS-CaseStudy_ru/image1.png

Для этой цели она использует собственную библиотеку компонентов Leios Components. Когда компании E.G.S. S.r.l. понадобилось выпустить 64-битную версию своих компонентов, она обратилась к ООО "СиПроВер" как к компании, специализирующейся на разработке анализаторов кода для 64-битных и параллельных приложений.

Библиотека компонентов Leios Components

a0036_EGS-CaseStudy_ru/image2.png

Библиотека компонентов Leios Components представляет собой набор различных библиотек:

  • Программный интерфейс для работы с облаками точек и триангулированными сетками.
  • Библиотека подгонки поверхностей.
  • Библиотека для обработки граней и ребер.

Общий объем исходного кода составляет 13 мегабайт (440 000 строк кода), решение состоит из нескольких десятков проектов. Очевидно, что перенос такого объема кода на 64-битную систему вручную представляется затруднительным, особенно учитывая сложность математических алгоритмов.

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

Программный интерфейс для работы с облаками точек и триангулированными сетками

  • Библиотека содержит процедуры импорта/экспорта облаков точек и триангулированных поверхностей (форматы ASCII, STL, PLY, OBJ, VRML и собственный формат Leios RVE).
  • Сбор данных о сетки
  • Элементарные операции редактирования сетки.
  • Операции выбора облаков точек и триангулированных поверхностей.
  • Фильтрация облаков точек, подавление шума, сглаживание, офсет.
a0036_EGS-CaseStudy_ru/image3.png
  • Триангуляция облаков точек.
  • Восстановление триангулированной сетки, заполнение отверстий, сглаживание.
a0036_EGS-CaseStudy_ru/image4.png
  • Прореживание и перестройка триангулированной сетки.
a0036_EGS-CaseStudy_ru/image5.png
  • Построение сечений и разбиение триангулированной поверхности с использование плоскости.
  • Создание плоских, цилиндрических или сферических поверхностей из частей сетки.
a0036_EGS-CaseStudy_ru/image6.png
  • Соединение нескольких облаков точек или триангулированных сеток в единый объект.
  • Визуализация облака точек и триангулированной поверхности с помощью библиотеки OpenGL.
  • Регистрация триангулированных поверхностей или облаков точек.
a0036_EGS-CaseStudy_ru/image7.png
  • Процедуры псевдо трехмерной триангуляции (2.5D).
  • Триангуляция облаков точек внутри заданного внешнего контура.
  • Использование временных файлов для осуществления редактирования больших облаков точек в 32 битной среде.
  • Триангуляция между двумя ломаными линиями.
  • Процедура пластической деформации самопересечений сетки.
  • Процедура пластической деформации пересечения ломаных линий двух сеток.
  • Процедура сглаживания ломаных линий и уменьшения размера.
  • Процедура пластической деформации поперечного сечения сетки через две точки на сетке.
  • Процедуры импорта-экспорта с поддержкой координат центра масс с двойной точностью.
  • Процедура автоматического объединения объектов.

Библиотека подгонки деталей

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

  • Спецификация четырехгранных конфигураций на триангулированной сетке.
  • Автоматическая подгонка поверхностей с автоматической коррекцией NURBS кривыми.
a0036_EGS-CaseStudy_ru/image8.png

Библиотека обработки граней и ребер

Эта библиотека расширения осуществляет:

  • Автоматическое выделение линий скруглений (кривых граней, центральной кривой сетки, кривых ребер).
  • Разбиение сетки на участки без участия скруглений, которые могут быть подогнаны к необработанным NURBS поверхностям.
a0036_EGS-CaseStudy_ru/image9.png

Необходимость миграции библиотеки компонентов на 64-битную платформу

Компания E.G.S. S.r.l. занимается разработкой своих решений с 2002 года, когда в Италии был открыт ее офис. С самых ранних этапов разработки компании были ориентированы на высокопроизводительные настольные системы.

Минимальный компьютер, на котором работает решение E.G.S. S.r.l. имеет следующую конфигурацию (по данным на начало 2008 года):

  • Процессор: Intel Core Duo T2300 or higher, AMD X2 3800+ or higher.
  • Оперативная память: 2GB
  • Графическая карта: Nvidia Quadro / 6x series or higher, ATI/AMD "x" series / FireGL or higher.
  • Операционная система: Windows XP Professional SP2 or higher, Windows Vista

В связи с ростом обрабатываемых объемов данных, разумеется, ограничения на оперативную память 32-битной версии (не более 3 гигабайт) оказались недостаточными для серьезных проектов. Поэтому необходимость выпуска 64-битной версии не вызывала вопросов у руководства E.G.S. S.r.l.. Однако под вопросом была возможность быстрого выпуска подобной версии. Вручную просмотреть указанный объем кода практически невозможно.

Участие компании ООО "СиПроВер" в миграции библиотеки компонентов

На помощь пришли специалисты компании ООО "СиПроВер", которые использовали для миграции кода на 64-битную платформу анализатор кода Viva64.

Программный продукт Viva64 обеспечивает диагностику ошибок, специфичных для 64-битных Windows-приложений. Viva64 представляет собой lint-подобный статический анализатор Си/Си++ кода. Области применения Viva64: проверка новых 64-битных программных решений, помощь в переносе 32-битного программного кода на 64-битную систему, оптимизация кода с учетом особенностей 64-битной архитектуры.

Используя Viva64, специалисты ООО "СиПроВер" обеспечили быструю миграцию библиотеки компонентов, обнаружив и исправив проблемные места в исходном коде библиотеки. В результате в процессе миграции такой большой и сложной библиотеки были задействованы всего лишь несколько человек.

Миграция кода с использованием Viva64 позволила сэкономить много времени, которое бы пришлось затратить на ручной просмотр кода. А главное не допустить новых программных ошибок, которые возможны в процессе миграции на новую платформу.

Основные проблемные моменты, выявленные в процессе анализа кода:

  • особенности вычислительных алгоритмов при обработке больших объемов данных;
  • работа с файлами большого размера;
  • обработка 3d-моделей, содержащих большое количество треугольников (чем больше треугольников, тем точнее модели);
  • работа подсистемы лицензирования;

Все обнаруженные с помощью анализатора Viva64 проблемы были исправлены, в результате чего 64-битная версия Leios Studio была выпущена в срок с высоким качеством.

E.G.S. S.r.l. - частная компания, миссией которой является разработка программ и решений для развитой обработки результатов 3D сканирования. Офисы компании были открыты в Италии и в Москве в 2002 году. Сайт: http://www.egsolutions.com.

Популярные статьи по теме
C++ — язык 2022 года. Почему так, и что с другими языками?

Дата: 20 Янв 2023

Автор: Сергей Васильев

C++ становится языком 2022 года по версии TIOBE, обгоняя Python. Rust, C#, Go и прочие — далеко позади. Странно? Сейчас разберёмся.
PVS-Studio в 2022 году

Дата: 19 Янв 2023

Автор: Полина Алексеева

На дворе январь 2023, а значит, самое время подвести итоги уже прошлого 2022 года. Мы расскажем, чем занимались, и покажем, что нового появилось в анализаторе за это время. Давайте вместе взглянем на…
PVS-Studio: 2 фишки для быстрого старта

Дата: 08 Дек 2022

Автор: Сергей Васильев

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

Дата: 06 Дек 2022

Автор: Алёна Фоканова

Привлекательное название статьи должно раскрывать то, что будет в ней. Так вот, работа специалистом поддержки клиентов подразумевает появление вопросов к пользователю. Иногда возникает как раз такой:…
Как Apple и другие крупные компании настиг программный баг

Дата: 09 Ноя 2022

Автор: Ульяна Гришина

Сегодня мы отобрали свежие случаи программных ошибок, чтобы вы могли немного отвлечься и, возможно, узнать что-то новенькое. Если вам интересно узнать, как программисту удалось сломать Интернет по вс…

Комментарии (0)

Следующие комментарии next comments
close comment form
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо