Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ คำนวณพื้นที่สามเหลี่ยมโดยใช้ดีเทอร์มิแนนต์


ในส่วนนี้เราจะมาดูวิธีการหาพื้นที่ของสามเหลี่ยมในพื้นที่พิกัด 2 มิติโดยใช้ตัวกำหนดเมทริกซ์ ในกรณีนี้ เรากำลังพิจารณาว่าพื้นที่นั้นเป็น 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