Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

행렬식을 사용하여 삼각형의 면적을 계산하는 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