C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

行列式を使用して三角形の面積を計算するC++プログラム


このセクションでは、行列式を使用して2D座標空間で三角形の領域を見つける方法を説明します。この場合、スペースは2Dであると考えています。したがって、各ポイントをマトリックスに配置します。最初の列にx値を入れ、2番目の列にyを入れ、3番目の列として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

  1. C++で六角形に内接する最大の三角形の面積

    ここでは、正六角形に内接する最大の三角形の領域が表示されます。六角形の各辺は「a」であり、三角形の各辺は「b」です。 この図から、六角形の1つの辺を使用して1つの三角形を作成すると、これらの2つの三角形が各辺を2つの部分に分割していることがわかります。 2つの直角三角形も見ることができます。ピタゴラスの公式から、次のように言うことができます- したがって、面積は- 例 #include <iostream> #include <cmath> using namespace std; float area(float a) {   &nbs

  2. C++を使用して楕円の領域を見つけるプログラム

    ここでは、C++を使用して楕円の面積を取得する方法を説明します。楕円にはさまざまな部分があります。これらは以下のようなものです。 キーポイント 説明 センター 楕円の中心。また、2つの焦点を結ぶ線分の中心でもあります。 主軸 楕円の最長直径 nmemb これは要素の数であり、各要素のサイズはサイズです。 バイト。 短軸 楕円の最小直径 コード tを指す線分 フォーカス 図で示されている2つのポイント ロータス直腸 蓮の直腸は、焦点を通り、楕円の主軸に垂直な線です。 楕円の面積はΠ𝜋 ∗𝑎a∗b𝑏 サンプルコード #include <iostre