C++で正N角形に内接する最大の円の面積を求める方法
正N角形に内接する円の面積とは
本記事では、正N角形に内接する最大の円(内接円)の面積を求める方法を解説します。条件として、多角形の辺の数Nと、各辺の長さaが与えられているものとします。
考え方:多角形を三角形に分割する
アプローチは非常にシンプルです。正N角形は、中心と各頂点を結ぶことで、N個の同一の二等辺三角形に分割できます。このとき、各三角形が中心でなす角(中心角)は360/N度となります。
この中心角の半分に着目すると、内接円の半径rは次の式で求められます。
r = a / (2 × tan(π/N))
半径rが求まれば、円の面積は以下の公式で簡単に計算できます。
面積 = π × r²
サンプルコード
#include <iostream>
#include <cmath>
using namespace std;
float area(float n, float a) {
if (n < 0 || a < 0) // 値が負の場合は無効
return -1;
float r = a / (2.0 * tan((180 / n) * 3.14159 / 180));
float area = 3.14159 * r * r;
return area;
}
int main() {
float n = 8, a = 4;
cout << "Area : " << area(n, a);
}このコードでは、まず入力値の妥当性をチェックしています。辺の数nまたは辺の長さaが負の値の場合は、無効な入力として-1を返します。次に、上記の公式に基づいて内接円の半径を計算し、その半径から円の面積を求めています。
サンプルでは、8角形(正八角形)で各辺の長さが4の場合を計算しています。
実行結果
Area : 73.2422
このように、正N角形の幾何学的な性質を利用することで、内接円の面積を効率的に求めることができます。同じ手法は、任意の辺数の正多角形にそのまま適用可能です。
-
C++で指定された辺の長さを持つn辺の正多角形の面積を求める方法
この記事では、指定された辺の長さを持つn辺の正多角形の面積を求める問題を取り上げ、図形の面積を計算する公式を導出し、それに基づいたプログラムを作成します。まず、内容を理解しやすくするために、基本事項をおさらいしましょう。基本事項のおさらいn辺の正多角形とは、すべての辺の長さが等しいn個の辺を持つ多角形のことです。例えば、正五角形や正六角形などが挙げられます。面積とは、二次元の図形が占める広がりの大きさを数量的に表したものです。面積公式の導出正多角形の面積を求めるには、図形を構成する個々の三角形の面積を求め、それに辺の数nを掛けます。正多角形は、中心を共有する頂点としてn個の二等辺三角形に分割で
-
Pythonでポリゴンの面積を求める方法:靴ひも公式を使った実装
はじめに2次元平面上に、単純な多角形(ポリゴン)の頂点を時計回りまたは反時計回りの順に並べた座標リストが与えられたとします。このとき、その多角形の面積を計算するのが本記事の目的です。例えば、入力が points = [(0, 0), (0, 5), (3, 5), (3, 0)] のような場合、これは幅3・高さ5の長方形を表しているため、出力は 15.0 となります。解法の考え方:靴ひも公式(Shoelace Formula)この問題は、有名な靴ひも公式(測量士の公式)を使うことで効率的に解けます。隣り合う2頂点ごとに外積 x1*y2 - y1*x2 を計算し、それらをすべて足し合わせて絶対値