7.2.8 Les opérateurs de la Matrice4

Voici tout les opérateurs de la Matrice4 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Matrice4 & Matrice4::operator = (const Matrice4 & other){
	this->copyMatrice4(other);
	return *this;
}

Matrice4 & Matrice4::operator - (){
	for(unsigned int i(0); i < 16; i++){
		p_mat[i] = -p_mat[i];
	}
	return *this;
}

Matrice4 & Matrice4::operator -= (const Matrice4 & other){
	for(unsigned int i(0); i < 16; i++){
		p_mat[i] -= other.p_mat[i];
	}
	return *this;
}

Matrice4 & Matrice4::operator += (const Matrice4 & other){
	for(unsigned int i(0); i < 16; i++){
		p_mat[i] += other.p_mat[i];
	}
	return *this;
}

Matrice4 & Matrice4::operator *= (const Matrice4 & other){
	Matrice4 matrice;
	float calcul(0);
	int i,j,k;
	for(j = 0; j < 4; j++){
		for(i = 0; i < 4; i++){
			calcul = 0;
			for(k = 0; k < 4; k++){
				calcul +=  p_mat[4*j + k]*other.p_mat[4*k + i];
			}
			matrice.p_mat[4*j + i] = calcul;
		}
	}
	this->copyMatrice4(matrice);
	return *this;
}

Matrice4 & Matrice4::operator *= (float nb){
	for(unsigned int i(0); i < 16; i++){
		p_mat[i] *= nb;
	}
	return *this;
}

Matrice4 & Matrice4::operator /= (float nb){
	for(unsigned int i(0); i < 16; i++){
		p_mat[i] /= nb;
	}
	return *this;
}

La seule difficulté est de ne pas se planté en écrivant la multiplication de deux matrices.