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

啟動你的 職業生涯

完成課程獲得認證

開始吧
廣告
© . All rights reserved.