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

C言語で求める!正三角形に内接する最大の正方形の一辺の長さ

ある図形が別の図形や立体の中に内接するとは、その図形が相手の内部に隙間なくすっぽりと収まっている状態を指します。つまり、「正方形が三角形に内接する」という表現は、「三角形が正方形に外接する」という表現と完全に同じ意味になります。

本記事では、一辺 a の正三角形に内接できる最大の正方形の一辺の長さを、C言語で求める方法を解説します。

まずは具体例から見てみましょう。

入力: 5
出力: 2.32

頂点 A を上、底辺 BC を下にとった正三角形 ABC を考えます。内接する最大の正方形では、その上辺 DE(D は AB 上、E は AC 上)が底辺 BC と平行になります。

数学的な導出手順

正方形の一辺の長さを x とします。

このとき、AHDE に対して垂直です。

DEBC と平行であるため、角 AED = 角 ACB = 60° が成り立ちます。

三角形 EFC において、以下の関係が得られます。

  ⇒ sin60° = x / EC
  ⇒ √3 / 2 = x / EC
  ⇒ EC = 2x / √3

次に、三角形 AHE において、

  ⇒ cos60° = x / (2AE)
  ⇒ 1/2 = x / (2AE)
  ⇒ AE = x

したがって、正三角形の一辺 AC の長さは「2x/√3 + x」で表されます。ここで、

a = 2x/√3 + x

この式を x について整理すると、

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

つまり、一辺 a の正三角形に内接できる最大の正方形の一辺は、もとの三角形の一辺の約 0.464 倍になることがわかります。

C言語での実装例

この公式を使えば、プログラムは非常にシンプルになります。

#include <stdio.h>
#include <math.h>

int main() {
    float a = 5;
    float area = 0.464 * a;
    printf("The area is : %f", area);
    return 0;
}

実行結果

The area is : 2.320000

一辺 5 の正三角形の場合、内接できる最大の正方形の一辺は約 2.32 と計算されました。定数 0.464 を掛けるだけで答えが求まるため、任意の入力値にも即座に対応できます。

  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²)