Вот идея;и если кто-то напишет это, он должен отдать мне должное!Автоматически встроенные шаблоны произвольных матриц, так что эти матрицы являются не математическими типами, а скорее типом хранилища или структуры.В зависимости от параметров шаблона эти матрицы могут быть такими же простыми, как скалярное значение, и такими же сложными, как и почти бесконечномерный объект в теории, если компьютер может разрешить это без нехватки памяти, но на практике это будет ограничено архитектурой, ОС иКомпиляторы присваивают детали размера их целочисленного или целочисленного типа.Таким образом, можно иметь объемную матрицу низкого измерения, которая равна 3 измерениям, но при этом не хватает памяти, потому что она может выглядеть следующим образом: Matrix<type, 1000000000,1000000000,1000000000> matOutOfBounds
перед гораздо более высокой размерной матрицей, такой как Matrix<type, 2,2,2,2,2,2,2,2>
, то есть объемная матрица 8D.Упрощение можно сделать, если они являются «идеальными матрицами».Вот где каждое измерение имеет одинаковое количество элементов независимо от того, сколько у них измерений.Например: <3,3>
<3,3,3>
<3,3,3,3>
- все идеальные матрицы.Упрощение будет Matrix<type, 4^4>
таким же, как и Matrix<type, 4,4,4,4>
, получая 4x4x4x4 4D объемную матрицу с 96 элементами в 4D структуре.Где `Матрица была бы трехмерной объемной матрицей со многими элементами, но имеет трехмерную объемную структуру, поскольку наши текущие часы и компасы работают с такой скоростью, что 360 градусов к полному кругу, 60 минут, 60 секунд, за исключением того, что имеется много элементов хранения чисел с плавающей запятой.
Это ниже в настоящее время будет выглядеть как возможная библиотека C ++, которую кто-то включит в свои проекты;но идея здесь состоит в том, чтобы сделать его встроенным языковым типом.Тогда любой с вашим языком и компилятором может использовать их по своему желанию.Они могут использовать их с любым числом измерений, таких как то, что изображает этот шаблон:
// Header Declaration
template<typename ClassType, unsigned int...>
matrix{
}; // No need to show body just declaration for concept
// User Code Would Be
matrix<float,2,3,4,5,7> mat; // This would create a 2x3x4x5x7 matrix that is a 5th dimensional volumetric matrix
// Default type
matrix<int> mat2; // This creates a 1x1 matrix that would in essence be a scalar.
Теперь то, что я показал, это текущий синтаксис c ++ для шаблонов с переменными числами.Идея заключается в том, что такого рода матричные контейнеры будут встроены в типы!
Хотите сделать их математическими?Конечно, это нормально, но для этого пользователю придется определить свои собственные «алгоритмы, методы, функции или процедуры».
Причина, по которой они должны быть определены независимо, заключается в следующем:
mat<float, 3,3,3> mat1; 3x3x3 3D Volumetric Matrix - 27 elements
mat<float, 5,5> mat2; 5x5 2D Linear-Quadratic (Area) Matrix - 25 elements
mat<int, 6,7,8> mat3; 6x7x8 3D Volumetric Matrix - 336 elements
mat<bool, 8> mat4; 1x8 1D Linear Matrix (Array); transpose?
mat4::transpose; // built in - now 8x1 matrix
mat4::transpose; // back to 1x8.
class TheMotherLoad {// Many members and methods };
// ...
mat<TheMotherLoad*, 9,9,9,9,9,9,9,9,9> mat9;
// simplified version
mat<TheMotherLoad*, 9^9> mat9
// A 9 Dimensional Volumetric container So the first the would be a Cube
// with its sides having a length of 9 cells where the Volume 9^3 is the
// First Order of what a Volumetric Matrix is.
// Anything less is linear or quadratic either it being a scalar,
// translation, an array, a line, a point, a vector, rotation, quadratic and area )
// Now that we have a cube that has 729 elements and the next
// three 9s which are the 4th, 5th & 6th dimensions would act as another
// 9x9x9 matrix surrounding the first 3 dimensions respectively.
// Finally the 7th, 8th & 9th dimensions defines the "outer matrix"
// that also has "9x9x9" elements. So in total the number of elements
// in this matrix would be 729^3 and for every
Из-за свойств матриц определяется тип математических операций, которые могут быть с ними выполнены, так что это должно быть выполнено извне.