C语言A和B的乘积,求两个矩阵的和A+B乘积A*BC语言

共回答了15个问题采纳率:93.3%

几维的矩阵?

class Matrix4

{

public:

Matrix4()

{

setIdentity();

}

Matrix4(T m0, T m1, T m2, T m3,

T m4, T m5, T m6, T m7,

T m8, T m9, T m10, T m11,

T m12, T m13, T m14, T m15){

m[ 0] = m0; m[ 1] = m1; m[ 2] = m2; m[ 3] = m3;

m[ 4] = m4; m[ 5] = m5; m[ 6] = m6; m[ 7] = m7;

m[ 8] = m8; m[ 9] = m9; m[10] = m10; m[11] = m11;

m[12] = m12; m[13] = m13; m[14] = m14; m[15] = m15;

}

Matrix4(const T* elements){

memcpy(m, elements, sizeof(T)*16);

}

Matrix4(const Matrix4 &mat){

memcpy(m, mat.m, sizeof(T)*16);

}

inline Matrix4 operator + (const Matrix4 &mat){

return Matrix4(m[ 0] + mat.m[ 0], m[ 1] + mat.m[ 1], m[ 2] + mat.m[ 2], m[ 3] + mat.m[ 3],

m[ 4] + mat.m[ 4], m[ 5] + mat.m[ 5], m[ 6] + mat.m[ 6], m[ 7] + mat.m[ 7],

m[ 8] + mat.m[ 8], m[ 9] + mat.m[ 9], m[10] + mat.m[10], m[11] + mat.m[11],

m[12] + mat.m[12], m[13] + mat.m[13], m[14] + mat.m[14], m[15] + mat.m[15]);

}

inline Matrix4 operator - (const Matrix4 &mat){

return Matrix4(m[ 0] - mat.m[ 0], m[ 1] - mat.m[ 1], m[ 2] - mat.m[ 2], m[ 3] - mat.m[ 3],

m[ 4] - mat.m[ 4], m[ 5] - mat.m[ 5], m[ 6] - mat.m[ 6], m[ 7] - mat.m[ 7],

m[ 8] - mat.m[ 8], m[ 9] - mat.m[ 9], m[10] - mat.m[10], m[11] - mat.m[11],

m[12] - mat.m[12], m[13] - mat.m[13], m[14] - mat.m[14], m[15] - mat.m[15]);

}

inline Matrix4 operator * (const Matrix4 &mat){

return Matrix4(m[0]*mat.m[ 0]+m[4]*mat.m[ 1]+m[ 8]*mat.m[ 2]+ m[12]*mat.m[ 3],

m[1]*mat.m[ 0]+m[5]*mat.m[ 1]+m[ 9]*mat.m[ 2]+ m[13]*mat.m[ 3],

m[2]*mat.m[ 0]+m[6]*mat.m[ 1]+m[10]*mat.m[ 2]+ m[14]*mat.m[ 3],

m[3]*mat.m[ 0]+m[7]*mat.m[ 1]+m[11]*mat.m[ 2]+ m[15]*mat.m[ 3],

m[0]*mat.m[ 4]+m[4]*mat.m[ 5]+m[ 8]*mat.m[ 6]+ m[12]*mat.m[ 7],

m[1]*mat.m[ 4]+m[5]*mat.m[ 5]+m[ 9]*mat.m[ 6]+ m[13]*mat.m[ 7],

m[2]*mat.m[ 4]+m[6]*mat.m[ 5]+m[10]*mat.m[ 6]+ m[14]*mat.m[ 7],

m[3]*mat.m[ 4]+m[7]*mat.m[ 5]+m[11]*mat.m[ 6]+ m[15]*mat.m[ 7],

m[0]*mat.m[ 8]+m[4]*mat.m[ 9]+m[ 8]*mat.m[10]+ m[12]*mat.m[11],

m[1]*mat.m[ 8]+m[5]*mat.m[ 9]+m[ 9]*mat.m[10]+ m[13]*mat.m[11],

m[2]*mat.m[ 8]+m[6]*mat.m[ 9]+m[10]*mat.m[10]+ m[14]*mat.m[11],

m[3]*mat.m[ 8]+m[7]*mat.m[ 9]+m[11]*mat.m[10]+ m[15]*mat.m[11],

m[0]*mat.m[12]+m[4]*mat.m[13]+m[ 8]*mat.m[14]+ m[12]*mat.m[15],

m[1]*mat.m[12]+m[5]*mat.m[13]+m[ 9]*mat.m[14]+ m[13]*mat.m[15],

m[2]*mat.m[12]+m[6]*mat.m[13]+m[10]*mat.m[14]+ m[14]*mat.m[15],

m[3]*mat.m[12]+m[7]*mat.m[13]+m[11]*mat.m[14]+ m[15]*mat.m[15]);

}

}

matrix3 或者 matrix2 就把去掉最后的行和列,或者直接使用,给m[13]等变量0值就可以了.

1年前

追问

10

910925146

能不能简单点。才学C语言

910925146

线性代数的书在不在,你看一下就明白了 另外,上面的可以直接使用的. 你定义个结构体 struct Matrix { float a; float b; float c; float d; }; //生成两个矩阵变量 Matrix A,B,C; 然后赋值 A矩阵 a,b c,d B矩阵 a,b, c,d 然后,C=A+B, C.a= A.a+B.a; C.b=A.b+B.b.....同理 乘法 C.a=A.a*B.a+A.b*B.c; 等等,具体看线性代数书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值