/
spivag
/
command_occ
Обзор
Документация
Войти
/
spivag
/
command_occ
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
initial
commands/attribute_computer.h
77 строк
3 KB
Степанов Никита
Запрос на слияние 'topology_iterators' (
#3
) из topology_iterators в initial
27 апр 2026, 21:55
Верифицирован
27 апр 2026, 21:55
c047a95
Код
Авторство
О чём код?
/** * @file attribute_computer.h * @brief Интерфейс и фабрика для вычисления атрибутов вершин * @copyright (c) Alexander Spivakov 2025 */ #ifndef ATTRIBUTE_COMPUTER_H #define ATTRIBUTE_COMPUTER_H #include <memory> #include <optional> #include <string> #include <render/gl1_raw_cache.hxx> //#include <gp_Pnt.hxx> /** * @brief Интерфейс для вычисления скалярных атрибутов в точках поверхности * * @details IAttributeComputer предоставляет единый интерфейс для вычисления * различных скалярных характеристик геометрии (кривизна, напряжения, температура и т.д.) */ class IAttributeComputer { public: virtual ~IAttributeComputer() = default; /** * @brief Вычислить значение атрибута для точки на поверхности грани * * @param face Указатель на грань B-Rep модели * @param u Параметр u на поверхности грани * @param v Параметр v на поверхности грани * @param point 3D координаты точки * * @return Значение атрибута или std::nullopt при ошибке вычисления */ virtual std::optional< float > Compute( /*const MbFace* face,*/ double u, double v /*const gp_Pnt& point*/ ) const = 0; /** * @brief Получить имя атрибута для отображения * * @return Строка с именем атрибута (например, "Gauss Curvature") */ virtual std::string GetName() const = 0; /** * @brief Получить тип атрибута * * @return Перечисление типа атрибута */ virtual AttributeType GetType() const = 0; }; class AttributeComputerFactory { public: /** * @brief Создать вычислитель атрибута по типу * * @param type Тип атрибута * @return Умный указатель на вычислитель или nullptr для AttributeType::None */ static std::unique_ptr< IAttributeComputer > Create( AttributeType type ); /** * @brief Получить имя атрибута по типу без создания вычислителя * * @param type Тип атрибута * @return Строка с именем атрибута */ static std::string GetAttributeName( AttributeType type ); }; #endif // ATTRIBUTE_COMPUTER_H