Если вам точно известно, что вы ограничены трехмерными объектами, то вы можете рассмотреть возможность использования типа double3 (или float3, если ваш графический процессор не поддерживает двойную точность).
Пока что поддерживаются только векторы, так что вам придется самостоятельно создавать код для любого умножения или инверсии матриц. Однако вас могут заинтересовать следующие встроенные геометрические функции . В частности, определены точка продуктов и крест продуктов.
Вам также может быть интересно узнать, что существует зарезервированных типов данных для реализации матриц на будущее: см., Например, double n x m . В вашем случае, если он будет доступен в будущем, вы сможете использовать типы double3x3 для своих матриц.