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

正三角形に内接できる最大の正方形の面積を求める方法【公式の導出とC++実装】


正三角形に内接できる最大の正方形とは?

本記事では、一辺の長さが a の正三角形の中に描ける最大の正方形について解説します。正方形の一辺の長さを x とし、その面積を幾何学的な関係から求めていきます。

正三角形に内接できる最大の正方形の面積を求める方法【公式の導出とC++実装】

一辺 x を求める式の導出

一辺 a の正三角形の高さは、三平方の定理より (√3/2)a となります。

正三角形に内接できる最大の正方形の面積を求める方法【公式の導出とC++実装】

底辺の上に置かれた正方形の上方には、元の三角形と相似な小さな正三角形が現れます。この小さな三角形の一辺は正方形の一辺 x に等しいため、「全体の高さ = 正方形の高さ + 小さな正三角形の高さ」という関係から次の式が成り立ちます。

(√3/2)a = x + (√3/2)x = x(1 + √3/2)

これを x について解くと、内接できる最大の正方形の一辺は次のようになります。

x = a / (1 + 2/√3)

正三角形に内接できる最大の正方形の面積を求める方法【公式の導出とC++実装】

したがって、求める正方形の面積は x² = [a / (1 + 2/√3)]² で表されます。

C++ での実装例

以下は、三角形の一辺 a を入力として受け取り、内接する最大の正方形の一辺と面積を計算する C++ プログラムです。負の値が渡された場合は無効な入力として −1 を返します。

#include <iostream>
#include <cmath>
using namespace std;

// a は三角形の一辺。最大の正方形の一辺を返す
float sideOfSquare(float a) {
    if (a < 0) // 負の値は無効
        return -1;
    return a / (1 + 2/sqrt(3));
}

int main() {
    float a = 7;
    float side = sideOfSquare(a);
    cout << "正方形の一辺: " << side << endl;
    cout << "正方形の面積: " << side * side;
    return 0;
}

実行結果

正方形の一辺: 3.24871
正方形の面積: 10.5541

まとめ

一辺 a の正三角形に内接できる最大の正方形の一辺は x = a / (1 + 2/√3) で与えられます。たとえば a = 7 の場合、一辺は約 3.249、面積は約 10.554 となります。相似な図形の高さの関係を立てるだけで公式が導けるので、ぜひ覚えておきましょう。


  1. 半円に内接する正方形の中に収まる最大のルーロー三角形の面積を求める方法

    本記事では、半円に内接する正方形の中に内接する最大のルーロー三角形の面積を求める方法を解説します。半円の半径を R、正方形の一辺の長さを a、ルーロー三角形の高さを h として考えます。数学的な導出まず、半径 R の半円に内接する正方形の一辺の長さは、次の式で表されます。a = 2R / √5次に、ルーロー三角形の高さは、この正方形の一辺と等しくなります。したがって、a = h が成り立ちます。一般に、高さ h のルーロー三角形の面積は、以下の公式で求められます。面積 = ((π − √3) × h²) / 2ここに h = 2R / √5 を代入すると、最終的な面積の式は次のようになります。

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

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