【C言語】指定された半径を持つn辺の正多角形の面積を求める方法
正多角形とは、n個の等しい辺と等しい内角を持つ閉じた図形のことです。本記事で扱う「半径」とは、多角形の中心から任意の頂点までの距離を指します。
下の図に示すように、正多角形は中心を共有するn個の同一の二等辺三角形に分割できます。この性質を利用すると、多角形全体の面積を三角法を用いたシンプルな式から導き出すことができます。

面積の導出手順
まず、基本となる三角形の面積の公式は次のとおりです。
三角形の面積 = (底辺 × 高さ) / 2
三角法を用いると、中心角が t の小さな三角形の面積は次のように表されます。
面積 = r2・sin(t)・cos(t) = (r2・sin(2t)) / 2
正多角形は n 個の同じ三角形で構成されているため、全体の面積は「1つの三角形の面積 × n」で求められます。
面積 = n ・ r2・sin(2t) / 2
= n ・ r2・sin(360°/n) / 2
ここで、分割された各三角形の頂角は 360°/n になる点に注意してください。
C言語での実装例
以下は、半径 r = 4、辺の数 n = 12 の正十二角形の面積を計算するCプログラムです。C言語の sin() 関数はラジアンを引数として受け取るため、角度に π/180 を掛けてラジアンへ変換しています。
#include <stdio.h>
#include <math.h>
int main() {
float r = 4, n = 12;
float area = ((r * r * n) * sin((360 / n) * 3.14159 / 180)) / 2;
printf("area = %f", area);
return 0;
}
実行結果
area = 47.999962
理論値では、この正十二角形の面積は 12 × 42 × sin(30°) / 2 = 48 となります。出力が 47.999962 とわずかに異なるのは、円周率を 3.14159 と近似しているためです。より高い精度が必要な場合は、math.h で定義されている M_PI を使うか、円周率の有効桁数を増やすとよいでしょう。
-
Pythonでポリゴンの面積を求める方法:靴ひも公式を使った実装
はじめに2次元平面上に、単純な多角形(ポリゴン)の頂点を時計回りまたは反時計回りの順に並べた座標リストが与えられたとします。このとき、その多角形の面積を計算するのが本記事の目的です。例えば、入力が points = [(0, 0), (0, 5), (3, 5), (3, 0)] のような場合、これは幅3・高さ5の長方形を表しているため、出力は 15.0 となります。解法の考え方:靴ひも公式(Shoelace Formula)この問題は、有名な靴ひも公式(測量士の公式)を使うことで効率的に解けます。隣り合う2頂点ごとに外積 x1*y2 - y1*x2 を計算し、それらをすべて足し合わせて絶対値
-
Pythonで指定されたインデックスに基づいて文字列をシャッフルする方法
文字列 s とインデックスのリスト ind が与えられ、両者は同じ長さであるとします。文字列 s は、位置 i にある文字が最終的な文字列内の ind[i] の位置へ移動するようにシャッフルされます。このとき、シャッフル後の最終的な文字列を求める必要があります。例えば、入力が s = ktoalak、ind = [0,5,1,6,2,4,3] の場合、出力は kolkata となります。解決手順この問題を解くには、以下の手順に従います。fin_str を s と同じサイズのリストとして作成し、0で初期化するs 内の各インデックス i と各文字 v に対して、次の操作を行うfin_str[ind