使用行列式的 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

更新时间:2020 年 7 月 4 日

554 人阅读

启动你的 职业生涯

完成课程获得认证

开始吧
广告