楕円に内接する正方形の中に描ける最大のルーロー三角形の面積を求める方法
概要
本記事では、「楕円に内接する正方形」の中に収まる最大のルーロー三角形(Reuleaux Triangle)の面積を求める方法を解説します。ルーロー三角形とは、正三角形の3つの頂点をそれぞれ中心として、ほかの頂点を通る円弧をつなぎ合わせてできる幅一定の曲線三角形で、マンホールの蓋などにも使われることで知られる形状です。
ここでは、楕円の長軸の長さを 2a、短軸の長さを 2b とし、内接する正方形の一辺を x、ルーロー三角形の高さを h として考えます。

ステップ1:楕円に内接する正方形の一辺を求める
長軸が 2a、短軸が 2b の楕円に内接する正方形の一辺は、次の式で与えられます。

ステップ2:ルーロー三角形の面積を計算する
この正方形に内接する最大のルーロー三角形の高さ h は、正方形の一辺と等しくなります。すなわち h = x です。したがって、求めるルーロー三角形の面積は次の式で表されます。

C++での実装例
以下のコードは、楕円の長半径 a と短半径 b を引数として受け取り、対応するルーロー三角形の面積を返します。a または b が負の値である場合は、無効な入力として -1 を返します。
#include <iostream>
#include <cmath>
using namespace std;
float areaReuleaux(float a, float b) { // a, b はそれぞれ楕円の長半径・短半径
if (a < 0 || b < 0) // どちらか一方でも負であれば無効な値
return -1;
float x = sqrt((a*a) + (b*b)) / (a*b);
float area = ((3.1415 - sqrt(3)) * (x) * (x)) / 2;
return area;
}
int main() {
float a = 5;
float b = 4;
cout << "Area of Reuleaux Triangle: " << areaReuleaux(a, b);
}実行結果
Area of Reuleaux Triangle: 0.0722343
a = 5、b = 4 を入力して実行すると、ルーロー三角形の面積として約 0.0722 が出力されます。このように、楕円の長半径と短半径から正方形の一辺を導き、その値をそのままルーロー三角形の高さとして面積の式に代入することで、目的の面積を簡単に計算できます。
-
半円に内接する正方形の中に収まる最大のルーロー三角形の面積を求める方法
本記事では、半円に内接する正方形の中に内接する最大のルーロー三角形の面積を求める方法を解説します。半円の半径を R、正方形の一辺の長さを a、ルーロー三角形の高さを h として考えます。数学的な導出まず、半径 R の半円に内接する正方形の一辺の長さは、次の式で表されます。a = 2R / √5次に、ルーロー三角形の高さは、この正方形の一辺と等しくなります。したがって、a = h が成り立ちます。一般に、高さ h のルーロー三角形の面積は、以下の公式で求められます。面積 = ((π − √3) × h²) / 2ここに h = 2R / √5 を代入すると、最終的な面積の式は次のようになります。
-
ルーロー三角形の面積の求め方|公式の導出とC++での計算例
本記事では、下図のようなルーロー三角形の面積を求める方法を解説します。ルーロー三角形の内部には一辺の長さが等しい正三角形が含まれており、その高さを h とします。この図形は、正三角形の各頂点を中心とした3つの円が重なり合った部分(共通部分)として作られます。ルーロー三角形とはルーロー三角形は、正三角形の3つの頂点をそれぞれ中心とし、頂点間の距離を半径とする3つの円の交わりでできる図形です。どの方向から測っても幅が一定になる「定幅図形」の最も簡単な例として知られており、マンホールの蓋や一部の工具などにも応用されています。面積の導出方法ルーロー三角形の面積は、3つの扇形(おうぎ形)に分解して考える