TFACE: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
{{NavBar|{{FACE3DEXT hierarchy}}}}
{{DISPLAYTITLE:__TFACE}}
{{FACE3DEXT_brief}}
{{NavBar|{{Системная иерархия:__TFACE}}}}
{{__TFACE brief}}


<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
template <class unit_t, class alloc_t = std::allocator<unit_t>>
template <class unit_t, class alloc_t = std::allocator<unit_t>>
class __TFACE: public ::Chusov::Math::Matrix<unit_t, alloc_t, __TFACE<unit_t, alloc_t>>;
class __TFACE: public ::Chusov::Math::Matrix<unit_t, alloc_t, __TFACE<unit_t, alloc_t>>;
</syntaxhighlight>
===Параметры шаблона===
{{class template paramlist begin}}
{{class template paramlist add|unit_t|Тип элемента матрицы полигона.}}
{{class template paramlist add|alloc_t|Тип менеджера памяти элементов матрицы полигона. По умолчанию - <tt>[http://en.cppreference.com/w/cpp/memory/allocator std::allocator].</tt>}}
{{class template paramlist end}}


typedef __TFACE<double> FACE3DEXT;
===Специализации шаблона===
</syntaxhighlight>
{{class template specialization list begin}}
{{class template specialization list add|__FACE<double>|<tt>FACE3DEXT</tt> - тип для выражения внешних единиц измерения длины.}}
{{class template specialization list add|__FACE<std::uint32_t>|<tt>FACE3DINT</tt> - тип для выражения внутрисистемных единиц измерения длины. В настоящее время не используется.}}
{{class template specialization list end}}


===Типы===
===Типы===
Строка 19: Строка 30:
===Методы===
===Методы===
{{function_list_begin}}
{{function_list_begin}}
{{function_list_add|''конструкторы''|reference_name=FACE3DEXT_ctors|description={{FACE3DEXT_ctors_brief}}}}
{{function_list_add|__TFACE|reference_name=__TFACE::__TFACE|description={{__TFACE::__TFACE brief}}}}
{{function_list_add|Marshal|reference_name=FACE3DEXT_Marshal|description={{FACE3DEXT_Marshal_brief}}}}
{{function_list_add|Marshal|reference_name=__TFACE::Marshal|description={{__TFACE::Marshal brief}}}}
{{function_list_add|MarshalSize|reference_name=FACE3DEXT_MarshalSize|description={{FACE3DEXT_MarshalSize_brief}}}}
{{function_list_add|MarshalSize|reference_name=__TFACE::MarshalSize|description={{__TFACE::MarshalSize brief}}}}
{{function_list_add|DomainData|reference_name=FACE3DEXT_DomainData|description={{FACE3DEXT_DomainData_brief}}}}
{{function_list_add|DomainData|reference_name=__TFACE::DomainData|description={{__TFACE::DomainData brief}}}}
{{function_list_add|DomainDataSize|reference_name=FACE3DEXT_DomainDataSize|description={{FACE3DEXT_DomainDataSize_brief}}}}
{{function_list_add|DomainDataSize|reference_name=__TFACE::DomainDataSize|description={{__TFACE::DomainDataSize brief}}}}
{{function_list_add|domain_data|reference_name=FACE3DEXT_domain_data|description={{FACE3DEXT_domain_data_brief}}}}
{{function_list_add|domain_data|reference_name=__TFACE::domain_data|description={{__TFACE::domain_data brief}}}}
{{function_list_end}}
{{function_list_end}}


===Методы, наследуемые классом <tt>__TFACE<double></tt> от класса [http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix]===
===Методы, наследуемые классом <tt>__TFACE<unit_t></tt> от класса [http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix]===
{{function_list_begin}}
{{function_list_begin}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a60ef25605258b5c0232ea0dc0d55ed79.html#a60ef25605258b5c0232ea0dc0d55ed79 AugmentMe]|description=Добавление новых столбцов матрицы (т.е. вершин полигона).}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a60ef25605258b5c0232ea0dc0d55ed79.html#a60ef25605258b5c0232ea0dc0d55ed79 AugmentMe]|description=Добавление новых столбцов матрицы (т.е. вершин полигона).}}
Строка 51: Строка 62:
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#a68c599ddcbfddc65170de524ac165e44 rend]|description=Возвращает реверсный итератор произвольного доступа, связанный с псевдостолбцом, находящимся перед первым столбцом матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#a68c599ddcbfddc65170de524ac165e44 rend]|description=Возвращает реверсный итератор произвольного доступа, связанный с псевдостолбцом, находящимся перед первым столбцом матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#a0ec903d2e9ea165b0460f1f6d40da203 crend]|description=Возвращает реверсный итератор произвольного доступа, связанный с псевдостолбцом, находящимся перед первым столбцом матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#a0ec903d2e9ea165b0460f1f6d40da203 crend]|description=Возвращает реверсный итератор произвольного доступа, связанный с псевдостолбцом, находящимся перед первым столбцом матрицы.}}
{{function_list end}}
===Операторы, определенные над <tt>__TFACE<unit_t></tt>, если <tt>unit_t</tt> реализует [[wikipedia:Rng (algebra)|псевдокольцо]]. ===
{{function_list_begin}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a7d7f0f4f4f7b040abab82e882e43acff.html#a7d7f0f4f4f7b040abab82e882e43acff operator*]|description=Умножение справа на матрицу.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a47197fc187f2d583463c955a13dcb506.html#a47197fc187f2d583463c955a13dcb506 operator*{{=}}]|description=Умножение справа на месте на матрицу.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_ad4225d3aec09b23ac28b3124d93995df.html#ad4225d3aec09b23ac28b3124d93995df operator*]|description=Умножение справа на число.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a271d55359249fc2b208cf08dbaf8c222.html#a271d55359249fc2b208cf08dbaf8c222 operator*{{=}}]|description=Умножение справа на месте на число.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a2cc2ddd7b844d427940fb176a7dbf55c.html#a2cc2ddd7b844d427940fb176a7dbf55c operator+]|description=Сложение.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a4a9c3d02abc3a67f5a3942caf5608c6d.html#a4a9c3d02abc3a67f5a3942caf5608c6d operator+{{=}}]|description=Сложение на месте.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a3d456a952edcc6a4aa1dea1a12a7a503.html#a3d456a952edcc6a4aa1dea1a12a7a503 operator-]|description=Вычитание.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a02495a3d09e1a83edd3bf166e97b3160.html#a02495a3d09e1a83edd3bf166e97b3160 operator-{{=}}]|description=Вычитание на месте.}}
{{function_list_end}}
===Методы, наследуемые классом <tt>__TFACE<unit_t></tt> от класса [http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix], если <tt>unit_t</tt> реализует [[wikipedia:ru:Коммутативное кольцо|коммутативное кольцо]].===
{{function_list begin}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a45fe8da35f329e76f12d7c74c9891064.html#a45fe8da35f329e76f12d7c74c9891064 Rank]|description=Возвращает ранг матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a45fe8da35f329e76f12d7c74c9891064.html#a45fe8da35f329e76f12d7c74c9891064 Rank]|description=Возвращает ранг матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a4fca1677dc71ae3219b08b4b2506fd57.html#a4fca1677dc71ae3219b08b4b2506fd57 Det]|description=Возвращает детерминант квадратной матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a4fca1677dc71ae3219b08b4b2506fd57.html#a4fca1677dc71ae3219b08b4b2506fd57 Det]|description=Возвращает детерминант квадратной матрицы.}}
Строка 59: Строка 86:
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a6a7f3d531ed648725c4354c31093e5dd.html#a6a7f3d531ed648725c4354c31093e5dd Adjugate]|description=Возвращает присоединенную матрицу.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a6a7f3d531ed648725c4354c31093e5dd.html#a6a7f3d531ed648725c4354c31093e5dd Adjugate]|description=Возвращает присоединенную матрицу.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a45164a7bbd8a69f81a3c416827ea1390.html#a45164a7bbd8a69f81a3c416827ea1390 AdjugateMe]|description=Замещает матрицу на присоединенную.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a45164a7bbd8a69f81a3c416827ea1390.html#a45164a7bbd8a69f81a3c416827ea1390 AdjugateMe]|description=Замещает матрицу на присоединенную.}}
{{function_list_end}}
===Методы, наследуемые классом <tt>__TFACE<unit_t></tt> от класса [http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix], если <tt>unit_t</tt> реализует [[wikipedia:ru:Тело (алгебра)|кольцо с делением]].===
{{function_list begin}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_ac013bc45a6b369a1f892009eb0a0162e.html#ac013bc45a6b369a1f892009eb0a0162e ReducedRowEchelonForm]|description=Возвращает матрицу в каноническом ступенчатом виде по строкам.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_ac013bc45a6b369a1f892009eb0a0162e.html#ac013bc45a6b369a1f892009eb0a0162e ReducedRowEchelonForm]|description=Возвращает матрицу в каноническом ступенчатом виде по строкам.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_aad10f03956a111bb41c5e5abfb96ed58.html#aad10f03956a111bb41c5e5abfb96ed58 ReducedRowEchelonFormMe]|description=Приводит матрицу к каноническому ступенчатому виду по строкам.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_aad10f03956a111bb41c5e5abfb96ed58.html#aad10f03956a111bb41c5e5abfb96ed58 ReducedRowEchelonFormMe]|description=Приводит матрицу к каноническому ступенчатому виду по строкам.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_afb03309b05e676d473a0a5659f4c73f6.html#afb03309b05e676d473a0a5659f4c73f6 SolveRightSLE]|description=Решает СЛАУ.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_afb03309b05e676d473a0a5659f4c73f6.html#afb03309b05e676d473a0a5659f4c73f6 SolveRightSLE]|description=Решает СЛАУ.}}
{{function_list_end}}
===Методы, наследуемые классом <tt>__TFACE<unit_t></tt> от класса [http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html Chusov::Math::Matrix], если <tt>unit_t</tt> реализует [[wikipedia:ru:Поле (алгебра)|поле]].===
{{function_list begin}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a3b90b2588559106bac8033e2eaf73d57.html#a3b90b2588559106bac8033e2eaf73d57 MultiplicativeInverse]|description=Возвращает мультипликативную инверсию матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a3b90b2588559106bac8033e2eaf73d57.html#a3b90b2588559106bac8033e2eaf73d57 MultiplicativeInverse]|description=Возвращает мультипликативную инверсию матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a7ff168fc0220be7bb5c6bc8111f24ae5.html#a7ff168fc0220be7bb5c6bc8111f24ae5 MultiplicativeInverseMe]|description=Выполняет мультипликативную инверсию матрицы на месте.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a7ff168fc0220be7bb5c6bc8111f24ae5.html#a7ff168fc0220be7bb5c6bc8111f24ae5 MultiplicativeInverseMe]|description=Выполняет мультипликативную инверсию матрицы на месте.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#afd0c28e9aff27b0e1ddf5e025071fd4b Inverse]|description=Возвращает мультипликативную инверсию матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#afd0c28e9aff27b0e1ddf5e025071fd4b Inverse]|description=Возвращает мультипликативную инверсию матрицы.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#a98f642aff722d319ada89a21499cec2e InverseMe]|description=Выполняет мультипликативную инверсию матрицы на месте.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix.html#a98f642aff722d319ada89a21499cec2e InverseMe]|description=Выполняет мультипликативную инверсию матрицы на месте.}}
{{function_list_end}}
===Операторы, определенные над <tt>__TFACE<double></tt>===
{{function_list_begin}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a7d7f0f4f4f7b040abab82e882e43acff.html#a7d7f0f4f4f7b040abab82e882e43acff operator*]|description=Умножение справа на матрицу.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a47197fc187f2d583463c955a13dcb506.html#a47197fc187f2d583463c955a13dcb506 operator*{{=}}]|description=Умножение справа на месте на матрицу.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_ad4225d3aec09b23ac28b3124d93995df.html#ad4225d3aec09b23ac28b3124d93995df operator*]|description=Умножение справа на число.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a271d55359249fc2b208cf08dbaf8c222.html#a271d55359249fc2b208cf08dbaf8c222 operator*{{=}}]|description=Умножение справа на месте на число.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a2cc2ddd7b844d427940fb176a7dbf55c.html#a2cc2ddd7b844d427940fb176a7dbf55c operator+]|description=Сложение.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a4a9c3d02abc3a67f5a3942caf5608c6d.html#a4a9c3d02abc3a67f5a3942caf5608c6d operator+{{=}}]|description=Сложение на месте.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a3d456a952edcc6a4aa1dea1a12a7a503.html#a3d456a952edcc6a4aa1dea1a12a7a503 operator-]|description=Вычитание.}}
{{function_list_add|[http://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_a02495a3d09e1a83edd3bf166e97b3160.html#a02495a3d09e1a83edd3bf166e97b3160 operator-{{=}}]|description=Вычитание на месте.}}
{{function_list_end}}
{{function_list_end}}



Версия 07:25, 11 января 2016

Компоненты на верхнем уровне \ Подсистема управления \ __TFACE

Класс полигональной поверхности, композиция которых составляет элемент IPolyObject.

template <class unit_t, class alloc_t = std::allocator<unit_t>>
class __TFACE: public ::Chusov::Math::Matrix<unit_t, alloc_t, __TFACE<unit_t, alloc_t>>;

Параметры шаблона

unit_tТип элемента матрицы полигона.
alloc_tТип менеджера памяти элементов матрицы полигона. По умолчанию - std::allocator.

Специализации шаблона

__FACE<double> FACE3DEXT - тип для выражения внешних единиц измерения длины.
__FACE<std::uint32_t> FACE3DINT - тип для выражения внутрисистемных единиц измерения длины. В настоящее время не используется.

Типы

ТипОписание
allocator_typestd::allocator - тип менеджера памяти, используемого для хранения элементов матрицы.
domain_allocator_typestd::allocator - тип менеджера памяти, используемого для хранения данных предметной области, ассоциированных с полигоном.
value_typedouble - тип элемента матрицы.
size_typeБеззнаковый целочисленный тип для описания размеров.

Методы

__TFACE Конструкторы, создающие полигон.
Marshal Функция маршаллинга полигона.
MarshalSize Возвращает размер запакованного полигона.
DomainData Возвращает указатель на данные предметной области, ассоциированные с полигоном.
DomainDataSize Возвращает байтовый размер данных предметной области, ассоциированных с полигоном.
domain_data Возвращают данные предметной области в виде ссылки на контейнер последовательности байт.

Методы, наследуемые классом __TFACE<unit_t> от класса Chusov::Math::Matrix

AugmentMe Добавление новых столбцов матрицы (т.е. вершин полигона).
RemoveColumnsMe Удаление заданных столбцов матрицы (т.е. вершин полигона).
RemoveColumns Возвращает копию текущей матрицы без заданных столбцов (т.е. вершин полигона).
get_allocator Возвращает копию менеджера памяти, используемого для хранения элементов матрицы.
Rows Возвращает количество строк матрицы (т.е. 3 для действительного полигона).
Columns Возвращает количество столбцов матрицы (количество верщин составляющих полигон).
operator[] Доступ к заданному столбцу (вершине полигона) по индексу.
at Доступ к заданному столбцу (вершине полигона) по индексу.
SwapRows Замена строк друг на друга.
SwapColumns Замена столбцов друг на друга.
Transpose Транспонирование.
TransposeMe Транспонирование на месте.
empty Проверка на пустоту.
square Проверка на квадратность.
begin Возвращает итератор произвольного доступа, связанный с первым столбцом.
cbegin Возвращает итератор произвольного доступа, связанный с первым столбцом.
end Возвращает итератор произвольного доступа, связанный с псевдостолбцом, следующим за последним столбцом матрицы.
cend Возвращает итератор произвольного доступа, связанный с псевдостолбцом, следующим за последним столбцом матрицы.
rbegin Возвращает реверсный итератор произвольного доступа, связанный с последним столбцом матрицы.
crbegin Возвращает реверсный итератор произвольного доступа, связанный с последним столбцом матрицы.
rend Возвращает реверсный итератор произвольного доступа, связанный с псевдостолбцом, находящимся перед первым столбцом матрицы.
crend Возвращает реверсный итератор произвольного доступа, связанный с псевдостолбцом, находящимся перед первым столбцом матрицы.

Операторы, определенные над __TFACE<unit_t>, если unit_t реализует псевдокольцо.

operator* Умножение справа на матрицу.
operator*= Умножение справа на месте на матрицу.
operator* Умножение справа на число.
operator*= Умножение справа на месте на число.
operator+ Сложение.
operator+= Сложение на месте.
operator- Вычитание.
operator-= Вычитание на месте.

Методы, наследуемые классом __TFACE<unit_t> от класса Chusov::Math::Matrix, если unit_t реализует коммутативное кольцо.

Rank Возвращает ранг матрицы.
Det Возвращает детерминант квадратной матрицы.
Minor Возвращает минор для заданного элемента квадратной матрицы.
Cofactor Возвращает кофактор заданного элемента квадратной матрицы
Cofactor Возвращает матрицу, составленную из кофакторов элементов текущей матрицы.
CofactorMe Замещает все элементы матрицы на их кофакторы.
Adjugate Возвращает присоединенную матрицу.
AdjugateMe Замещает матрицу на присоединенную.

Методы, наследуемые классом __TFACE<unit_t> от класса Chusov::Math::Matrix, если unit_t реализует кольцо с делением.

ReducedRowEchelonForm Возвращает матрицу в каноническом ступенчатом виде по строкам.
ReducedRowEchelonFormMe Приводит матрицу к каноническому ступенчатому виду по строкам.
SolveRightSLE Решает СЛАУ.

Методы, наследуемые классом __TFACE<unit_t> от класса Chusov::Math::Matrix, если unit_t реализует поле.

MultiplicativeInverse Возвращает мультипликативную инверсию матрицы.
MultiplicativeInverseMe Выполняет мультипликативную инверсию матрицы на месте.
Inverse Возвращает мультипликативную инверсию матрицы.
InverseMe Выполняет мультипликативную инверсию матрицы на месте.

Класс реализует полигон, композиция которых составляет полигональный элемент с интерфейсом IPolyObject. Полигон представлен матрицей Chusov::Math::Matrix вершин, где каждая вершина задается столбцом , .

Полигон

Внешней стороной полигона является та, с которой обход вершин от до осуществляется по часовой стрелке.

Класс удовлетворяет требованиям DefaultConstructible, CopyConstructible, CopyAssignable, EqualityComparable.

Полигон должен удовлетворять требованию и состоять из, как минимум, из трех вершин. Поэтому неинициализированный (например, созданный по умолчанию) полигон не может использоваться в геометрической модели. Кроме этого, пустой полигон, для которого метод Chusov::Matrix::empty возвращает true, не может быть использован при выполнении большинства операций, определенных над полигоном или матрицей.

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