最近,我需要用C ++实现一个4维矩阵和向量类来辅助我的算法。这似乎很容易,但是当我实际执行这些编码时我犹豫不决,我不想使用eigen
或valarray
。以下是我的一些困惑,它们更可能是设计问题而不是编码问题:
首先。如何实现列向量乘以行向量(得到矩阵),我应该定义两个区分类
class RVector4
和
class CVector4
继承自相同的class Vector4
,然后由两侧的类重载操作“次”或
我应该定义一个class Vector4
,然后定义两个区分操作:一个“MTimes”计算colcumn vector乘以行向量并返回一个矩阵,另一个“VTimes”计算行向量乘以列向量并返回一个值?
哪种惯例或更有效?
二。如果我只需要使用4维矩阵和向量,是否应该实现class Matrix<int x, int y>
和typedef Vector4 Matrix4<4,1>
以及typedef Matrix4 Matrix<4,4>
之类的内容。换句话说,定义Matrix<x,y>
并定义Matrix4
和
Vector4
分开,哪个更好?当然,我需要像这样的操作
Matrix4 * Vector4 ,它Matrix<x,y>
是否过度编码?
第三。有些书谈论这些问题吗?我总是面对这些问题并感到恼火。
提前谢谢!