C ++程序使用行列式计算三角形的面积

在本节中,我们将看到如何使用矩阵行列式在2D坐标空间中找到三角形的面积。在这种情况下,我们考虑的空间是2D。因此,我们将每个点放在矩阵中。将x值放在第一列,y放在第二列,并以1作为第三列。然后找到它们的决定因素。三角形的面积将是行列式值的一半。如果行列式为负,则只需取其绝对值即可。

$$Area \:= \:absolute \:of \ begin {pmatrix} \ frac {1} {2} \ begin {vmatrix} x_1 \:\:y_1 \:\\:1 \\ x_2 \:\:y_2 \ :\:1 \\ x_3 \:\:y_3 \:\:1 \ end {vmatrix} \ end {pmatrix} $$

在这里我们假设这是3x3矩阵,所以行列式函数无法找到不是3x3的矩阵的行列式。

范例程式码

#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);

}

main() {

   double M[3][3];

   cout << "Enter Point p1 (x, y):";

   cin >> M[0][0] >> M[0][1];

   M[0][2] = 1;

   cout << "Enter Point p2 (x, y):";

   cin >> M[1][0] >> M[1][1];

   M[1][2] = 1;

   cout << "Enter Point p3 (x, y):";

   cin >> M[2][0] >> M[2][1];

   M[2][2] = 1;

   int determinant = det(M);

   cout << "The area is: " << fabs(determinant) * 0.5;

}

输出结果

Enter Point p1 (x, y):3 4

Enter Point p2 (x, y):6 4

Enter Point p3 (x, y):3 9

The area is: 7.5

以上是 C ++程序使用行列式计算三角形的面积 的全部内容, 来源链接: utcz.com/z/352486.html

回到顶部