Diện tích tam giác trong mặt phẳng 2D với 3 đỉnh (x1,y1), (x2,y2), (x3,y3) bằng nửa giá trị tuyệt đối của định thức ma trận 3x3:
$$Area = \frac{1}{2} \left| \begin{vmatrix} x_1 & y_1 & 1 \\ x_2 & y_2 & 1 \\ x_3 & y_3 & 1 \end{vmatrix} \right|$$
Ví dụ code
#include <iostream>
#include <cmath>
using namespace std;
double det(double M[3][3]) {
double t1 = M[1][1]*M[2][2] - M[1][2]*M[2][1];
double t2 = M[1][0]*M[2][2] - M[1][2]*M[2][0];
double t3 = M[1][0]*M[2][1] - M[1][1]*M[2][0];
return M[0][0]*t1 - M[0][1]*t2 + M[0][2]*t3;
}
int main() {
double M[3][3];
cout << "Điểm 1 (x y): "; cin >> M[0][0] >> M[0][1]; M[0][2] = 1;
cout << "Điểm 2 (x y): "; cin >> M[1][0] >> M[1][1]; M[1][2] = 1;
cout << "Điểm 3 (x y): "; cin >> M[2][0] >> M[2][1]; M[2][2] = 1;
double area = fabs(det(M)) * 0.5;
cout << "Diện tích: " << area;
}Kết quả
Điểm 1: 3 4 Điểm 2: 6 4 Điểm 3: 3 9 Diện tích: 7.5