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

C++で正六角形に内接する最大の三角形の面積を求める方法

本記事では、正六角形に内接する最大の三角形の面積を求める方法を解説します。正六角形の一辺の長さを「a」、その内側に描ける最大の三角形の一辺の長さを「b」とします。

C++で正六角形に内接する最大の三角形の面積を求める方法

図から分かるように、六角形の一辺を利用して三角形を作ると、その一辺は2つの部分に分けられます。このとき、2つの直角三角形が現れます。三平方の定理(ピタゴラスの定理)を用いると、次の関係が成り立ちます。

C++で正六角形に内接する最大の三角形の面積を求める方法

つまり、正六角形に内接する最大の三角形は正三角形となり、その一辺 b は b = √3 × a で表されます。この関係を正三角形の面積の公式に代入すると、最大の三角形の面積は次の式で求められます。

C++で正六角形に内接する最大の三角形の面積を求める方法

面積 = (√3 ÷ 4) × b2 = (3√3 ÷ 4) × a2

サンプルコード

#include <iostream>
#include <cmath>
using namespace std;
float area(float a) {
    if (a < 0) // 値が負の場合は無効
        return -1;
    float area = (3 * sqrt(3) * pow(a, 2)) / 4;
    return area;
}
int main() {
    float a = 6;
    cout << "Area : " << area(a);
}

実行結果

Area : 46.7654

コードの解説

area() 関数は、正六角形の一辺の長さ a を引数として受け取ります。負の値が渡された場合は、面積として無効であるため -1 を返します。それ以外の場合は、導出した公式 (3√3 × a2) ÷ 4 に基づいて面積を計算し、その結果を返します。main() 関数では a = 6 を渡して面積を計算し、結果を標準出力に表示しています。

  1. C++で楕円に内接する最大の正方形の面積を求める方法

    この記事では、楕円に内接できる最大の正方形の面積を求める方法について解説します。楕円の中に正方形を内接させたときの位置関係は、下の図のようになります。 まず、長半径 a・短半径 b をもつ楕円の方程式は次のとおりです。 x² / a² + y² / b² = 1 ここで、内接する正方形の頂点の座標を (±x, ±y) とおきます。図形が正方形になるためには x と y が等しくなる必要があるため、x = y を上記の楕円の方程式に代入します。 これを整理すると、楕円に内接する最大の正方形の面積は、次の式で求められることになります。 面積 = 4 × (a² + b²) ÷ (a² × b²)

  2. Pythonで点のリストから作れる最大の三角形の面積を求める方法

    平面上に与えられた点のリストの中から、任意の3点を選んで作ることができる三角形のうち、最も大きな面積を持つものを求める問題です。例えば、入力が [[0,0],[0,1],[1,0],[0,2],[2,0]] の場合、出力は 2 となります。解法のアプローチこの問題は、すべての3点の組み合わせについて三角形の面積を計算し、その最大値を求めることで解けます。手順は以下の通りです。結果を格納する変数 res を 0 で初期化する点のリストのサイズを N とする三重ループで、i、j、k の3つのインデックスの組み合わせをすべて列挙する(i < j < k)各組み合わせに対して、3点の座標