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

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

本記事では、半円に内接する正方形の中に内接する最大のルーロー三角形の面積を求める方法を解説します。半円の半径を R、正方形の一辺の長さを a、ルーロー三角形の高さを h として考えます。

数学的な導出

まず、半径 R の半円に内接する正方形の一辺の長さは、次の式で表されます。

a = 2R / √5

次に、ルーロー三角形の高さは、この正方形の一辺と等しくなります。したがって、a = h が成り立ちます。

一般に、高さ h のルーロー三角形の面積は、以下の公式で求められます。

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

ここに h = 2R / √5 を代入すると、最終的な面積の式は次のようになります。

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

C++による実装例

上記の式を C++ プログラムで実装すると、次のようになります。引数として渡された半径 r が負の場合は無効な入力として -1 を返す点にも注目してください。

#include <iostream>
#include <cmath>
using namespace std;
float areaReuleaux(float r) { // 半円の半径 r
    if (r < 0) // r が負の場合は無効
        return -1;
    float area = ((3.1415 - sqrt(3)) * (2*r/(sqrt(5))) * (2*r/(sqrt(5))))/2;
    return area;
}
int main() {
    float rad = 8;
    cout << "Area of Reuleaux Triangle: " << areaReuleaux(rad);
}

出力結果

Area of Reuleaux Triangle: 36.0819

このように、半径 8 の半円に対して、内接する正方形を経由して求めた最大のルーロー三角形の面積は約 36.08 となります。幾何学的な関係式を組み合わせることで、複雑に見える図形の面積も段階的に導出できるのがポイントです。

  1. ルーロー三角形の面積の求め方|公式の導出とC++での計算例

    本記事では、下図のようなルーロー三角形の面積を求める方法を解説します。ルーロー三角形の内部には一辺の長さが等しい正三角形が含まれており、その高さを h とします。この図形は、正三角形の各頂点を中心とした3つの円が重なり合った部分(共通部分)として作られます。ルーロー三角形とはルーロー三角形は、正三角形の3つの頂点をそれぞれ中心とし、頂点間の距離を半径とする3つの円の交わりでできる図形です。どの方向から測っても幅が一定になる「定幅図形」の最も簡単な例として知られており、マンホールの蓋や一部の工具などにも応用されています。面積の導出方法ルーロー三角形の面積は、3つの扇形(おうぎ形)に分解して考える

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

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