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

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

この記事では、円に内接する正方形の内部に収まる最大のルーロー三角形の面積を求める方法を解説します。正方形の一辺の長さを「a」、円の半径を「r」とします。

前提となる幾何学的な関係

まず押さえておきたいのは、正方形の対角線の長さが円の直径と一致するという点です。この関係を利用すると、正方形の一辺 a を半径 r を使って表すことができます。

2r = a√2
a = r√2

ルーロー三角形の面積の導出

ルーロー三角形の高さを h とすると、その高さは正方形の一辺と等しくなるため、a = h という関係が成り立ちます。ルーロー三角形の面積は、3つの扇形の面積の合計から中央の正三角形の面積を差し引いたものとして求められ、次の式で表されます。

面積 = ((π − √3) × a²) / 2

さらに、先ほど求めた a = r√2 を代入して整理すると、半径 r だけで表せるシンプルな形になります。

面積 = (π − √3) × r²

C++による実装例

上記の式をC++で実装すると、以下のようになります。半径が負の値の場合は不正な入力として -1 を返すようにしています。

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

float areaReuleaux(float r) { // 円の半径 r を受け取る
    if (r < 0) {  // 負の値は無効
        return -1;
    }
    float area = ((3.1415 - sqrt(3)) * (r * sqrt(2)) * (r * sqrt(2))) / 2;
    return area;
}

int main() {
    float rad = 6;
    cout << "Area of Reuleaux Triangle: " << areaReuleaux(rad);
}

実行結果

Area of Reuleaux Triangle: 50.7402

半径 r = 6 の場合、面積は約 50.74 となりました。これは (π − √3) × 6² ≒ 50.74 という手計算の結果とも一致しており、プログラムが正しく動作していることが確認できます。

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

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

  2. 半円に内接する長方形に内接する円の面積の求め方

    半径 R の半円が与えられているとします。この半円の中に、長さ l、幅 b の長方形が内接しており、さらにその長方形の中に半径 r の円が内接しています。本記事では、この内側の円の面積を求める手順を、数式の導出からC++による実装例までわかりやすく解説します。 半円に内接する最大の長方形 半円に内接する長方形は、底辺が半円の直径上にあり、上側の2つの頂点が半円周上にあります。このとき、三平方の定理(ピタゴラスの定理)より、l と b の間には次の関係が成り立ちます。 (l / 2)2 + b2 = R2 長方形の面積 A = l × b を最大化する条件を求めると、微分計算により次の値が