Архитектурная акустика/Реализация/CFace::CFace: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
м
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{function begin|CFace() {{=}} default; //1
{{function begin|CFace() {{=}} default; //1
CFace(const CFace& refFace); //2
CFace(const CFace&) {{=}} default; //2
CFace(CFace&& refFace); //3
CFace(CFace&&) {{=}} default; //3
template <class alloc_t, class policy_t>
template <class alloc_t, class derived_t, class policy_t>
  CFace(const CAMaaS::__TFACE<CAMaaS::extunit_t, alloc_t, policy_t>& refFace); //4
CFace(const Chusov::Math::Matrix<CAMaaS::extunit_t, alloc_t, derived_t, policy_t>& r, const void* pDomainData, CAMaaS::size_type cbDomainData); //4
template <class policy_t>
template <class alloc_t, class derived_t, class policy_t>
  CFace(CAMaaS::__TFACE<CAMaaS::extunit_t, std::allocator<CAMaaS::extunit_t>, policy_t>&& refFace); //5
CFace(Chusov::Math::Matrix<CAMaaS::extunit_t, alloc_t, derived_t, policy_t>&& r, const void* pDomainData, CAMaaS::size_type cbDomainData); //5
|{{Архитектурная акустика/Реализация/CFace::CFace brief}}
|{{Архитектурная акустика/Реализация/CFace::CFace brief}}
# Конструктор по умолчанию, создающий пустую поверхность без вершин, которую до использования необходимо проинициализировать с помощью [[arch_ac\CFace::Операторы присваивания|оператора присваивания]].
# Конструктор по умолчанию, создающий пустую поверхность без вершин, которую до использования необходимо проинициализировать с помощью {{arch_ac_ref|{{wikify_cpp_op|CFace::operator{{=}}}}|оператора присваивания}}.
# Конструктор копирования.
# Конструктор копирования.
# Конструктор перемещения.
# Конструктор перемещения.
# Конструктор, инициализирующий поверхность на основе ее описания [[__TFACE]], поступившего со стороны подсистемы управления. При этом производится копирования данных [https://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix].
# Конструктор, создающий экземпляр {{arch_ac_ref|CFace}} на основе заданной копируемой матрицы вершин и данных экземпляра "arch_ac" предметной области.
# Аналогичный конструктор, создающий поверхность на основе объекта [[__TFACE]], но с перемещением данных.
# Конструктор, создающий экземпляр {{arch_ac_ref|CFace}} на основе заданной вмещаемой матрицы вершин и данных экземпляра "arch_ac" предметной области.
 
Перегрузки 4 и 5 используются классом {{arch_ac_ref|CPoly}} для инициализации отражающих поверхностей на основе предметно-независимого описания модели помещения. См. [[IFace]].
}}
}}
{{function template paramlist begin}}
{{function template paramlist add|alloc_t|Менеджер памяти {{cpp_concept|Allocator}}, используемый инициализирующей матрицей [https://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix].}}
{{function template paramlist add|derived_t|Конечный наследник класса [https://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix].}}
{{function template paramlist add|policy_t|Политика параллельного выполнения методов класса [https://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix].}}
{{function template paramlist end}}
{{function_paramlist begin}}
{{function_paramlist begin}}
{{function_paramlist add|refFace|Инициализирующая поверхность.}}
{{function_paramlist add|r|Матрица вершин, задающих границу отражающей поверхности. Сторона относительно поверхности, с которой вершины обходятся по часовой стрелке считается лицевой.}}
{{function_paramlist add|pDomainData|Байтовый вектор параметров предметной области, которые интерпретируются конструкторами 4 и 5. Описание формата приведено ниже.|paramdir=[in]}}
{{function_paramlist add|cbDomainData|Размер данных в векторе <tt>pDomainData</tt> в байтах.}}
{{function_paramlist end}}
{{function_paramlist end}}
{{function end}}
{{function end}}


Перегрузки 4 и 5 конструктора создают поверхность на основе ее предметно-независимого описания при обработке запроса [[DomainStartSimulation]]. При этом данные предметной области, указатель на которые возвращается методом [[__TFACE::DomainData]] имеют следующий формат.
Шаблонные параметры конструкторов не задаются явно и вычислются дедукцией на основе типа фактического аргумента для <tt>r</tt>.
 
Перегрузки 4 и 5 конструкторов создают поверхность на основе ее предметно-независимого описания, полученного при обработке запроса [[DomainStartSimulation]]. При этом данные предметной области, задаваемые параметрами <tt>pDomainData</tt> и <tt>cbDomainData</tt>, имеют следующий формат.


'''Предварительная версия 1.'''
'''Предварительная версия 1.'''
Тип запакованных данных: <tt>face_domain_data_t</tt>.


Указатель на число с плавающей точкой двойной точности, задающее коэффициент отражения поверхности, т.е. <math>1 - \alpha</math> , где <math>\alpha</math> - коэффициент поглощения поверхности. В предварительной версии коэффициент является независимым от частоты.
Указатель на число с плавающей точкой двойной точности, задающее коэффициент отражения поверхности, т.е. <math>1 - \alpha</math> , где <math>\alpha</math> - коэффициент поглощения поверхности. В предварительной версии коэффициент является независимым от частоты.


'''Предварительная версия 2 (текущая, ветка репозитория: chusov-laptop-pc).'''
'''Предварительная версия 2 (текущая, ветка репозитория: chusov-laptop-pc).'''
Тип запакованных данных: <tt>face_domain_data_2_t</tt>.


{| class="wikitable"
{| class="wikitable"
Строка 34: Строка 49:
|}
|}


* Идентификатор версии - целочисленное четырехбайтовое значение <tt>0x80000001</tt>. Значение обеспечивает обратную совместимость с первой версией, т.к. при интерпретации его как числа IEEE754 получается отрицательное значение, что невозможно для коэффициентов поглощения.
* Идентификатор версии - целочисленное четырехбайтовое значение <tt>domain_data_id_2 = 0x80000001</tt>. Значение обеспечивает обратную совместимость с первой версией, т.к. при интерпретации его как числа IEEE754 получается отрицательное значение, что невозможно для коэффициентов поглощения.
* Ширина полосы частот задается четырехбайтовым целым, которое должно быть равно шести.
* Ширина полосы частот задается четырехбайтовым целым, которое должно быть равно шести.
* Коэффициенты поглощения представляют собой последовательность шести чисел с плавающей точкой двойной точности <math>\left\{\alpha_{125}, \alpha_{250}, \alpha_{500}, \alpha_{1000}, \alpha_{2000}, \alpha_{4000}\right\}</math> коэффициентов поглощения по частотам. Числа задаются без какого-либо выравнивания - одно за другим.
* Коэффициенты поглощения представляют собой последовательность шести чисел с плавающей точкой двойной точности <math>\left\{\alpha_{125}, \alpha_{250}, \alpha_{500}, \alpha_{1000}, \alpha_{2000}, \alpha_{4000}\right\}</math> коэффициентов поглощения по частотам. Числа задаются без какого-либо выравнивания - одно за другим.

Текущая версия на 16:49, 27 января 2018

CFace() = default; //1
CFace(const CFace&) = default; //2
CFace(CFace&&) = default; //3
template <class alloc_t, class derived_t, class policy_t>
CFace(const Chusov::Math::Matrix<CAMaaS::extunit_t, alloc_t, derived_t, policy_t>& r, const void* pDomainData, CAMaaS::size_type cbDomainData); //4
template <class alloc_t, class derived_t, class policy_t>
CFace(Chusov::Math::Matrix<CAMaaS::extunit_t, alloc_t, derived_t, policy_t>&& r, const void* pDomainData, CAMaaS::size_type cbDomainData); //5

Создают экземпляры класса.

  1. Конструктор по умолчанию, создающий пустую поверхность без вершин, которую до использования необходимо проинициализировать с помощью оператора присваивания.
  2. Конструктор копирования.
  3. Конструктор перемещения.
  4. Конструктор, создающий экземпляр CFace на основе заданной копируемой матрицы вершин и данных экземпляра "arch_ac" предметной области.
  5. Конструктор, создающий экземпляр CFace на основе заданной вмещаемой матрицы вершин и данных экземпляра "arch_ac" предметной области.

Перегрузки 4 и 5 используются классом CPoly для инициализации отражающих поверхностей на основе предметно-независимого описания модели помещения. См. IFace.

Параметры шаблона
alloc_tМенеджер памяти Allocator, используемый инициализирующей матрицей Chusov::Math::Matrix.
derived_tКонечный наследник класса Chusov::Math::Matrix.
policy_tПолитика параллельного выполнения методов класса Chusov::Math::Matrix.
Параметры
rМатрица вершин, задающих границу отражающей поверхности. Сторона относительно поверхности, с которой вершины обходятся по часовой стрелке считается лицевой.
[in]pDomainDataБайтовый вектор параметров предметной области, которые интерпретируются конструкторами 4 и 5. Описание формата приведено ниже.
cbDomainDataРазмер данных в векторе pDomainData в байтах.

Шаблонные параметры конструкторов не задаются явно и вычислются дедукцией на основе типа фактического аргумента для r.

Перегрузки 4 и 5 конструкторов создают поверхность на основе ее предметно-независимого описания, полученного при обработке запроса DomainStartSimulation. При этом данные предметной области, задаваемые параметрами pDomainData и cbDomainData, имеют следующий формат.

Предварительная версия 1.

Тип запакованных данных: face_domain_data_t.

Указатель на число с плавающей точкой двойной точности, задающее коэффициент отражения поверхности, т.е. , где - коэффициент поглощения поверхности. В предварительной версии коэффициент является независимым от частоты.

Предварительная версия 2 (текущая, ветка репозитория: chusov-laptop-pc).

Тип запакованных данных: face_domain_data_2_t.

Поле Идентификатор версии Ширина полосы частот Коэффициенты поглощения из 6 октавных частот
Размер, байт 4 4
  • Идентификатор версии - целочисленное четырехбайтовое значение domain_data_id_2 = 0x80000001. Значение обеспечивает обратную совместимость с первой версией, т.к. при интерпретации его как числа IEEE754 получается отрицательное значение, что невозможно для коэффициентов поглощения.
  • Ширина полосы частот задается четырехбайтовым целым, которое должно быть равно шести.
  • Коэффициенты поглощения представляют собой последовательность шести чисел с плавающей точкой двойной точности коэффициентов поглощения по частотам. Числа задаются без какого-либо выравнивания - одно за другим.