使用行列式的 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP