C++で頂点座標から多角形の面積を計算する方法
このプログラムでは、与えられた頂点の座標をもとに、多角形の面積を求めます。本題に入る前に、理解を深めるために基本的な用語をおさらいしておきましょう。
基本用語のおさらい
面積
面積とは、2次元の図形が占める広がりの大きさを数量的に表したものです。
多角形
多角形とは、一定の数の辺で構成される閉じた図形のことです。
頂点の座標
頂点の座標とは、2次元平面上における点の位置を示す値のことです。例えば (0, 0) のように表されます。
面積を求める数式
多角形の各頂点の座標が分かっていれば、次の「靴紐公式」と呼ばれる数式を使うことで、その面積を計算できます。
Area = ½ [(x1y2 + x2y3 + …… + x(n-1)yn + xny1) − (x2y1 + x3y2 + …… + xny(n-1) + x1yn)]
この公式は、隣り合う頂点の座標を掛け合わせた項の差をすべて足し合わせ、その絶対値を2で割ることで面積を求めるものです。なお、頂点は時計回りまたは反時計回りのいずれか一方向に順番どおり並べて入力する必要がある点に注意してください。
C++による実装例
#include <iostream>
#include <math.h>
using namespace std;
double areaOfPolygon(double x[], double y[], int n){
double area = 0.0;
int j = n - 1;
for (int i = 0; i < n; i++){
area += (x[j] + x[i]) * (y[j] - y[i]);
j = i;
}
return abs(area / 2.0);
}
int main(){
double X[] = {0, 1, 4, 8};
double Y[] = {0, 2, 5, 9};
int n = sizeof(X)/sizeof(X[0]);
cout<<"The area is "<<areaOfPolygon(X, Y, n);
}
コードの解説
areaOfPolygon 関数は、x座標の配列・y座標の配列・頂点の数 n を受け取ります。変数 j は「直前の頂点」のインデックスを表し、初期値は最後の頂点である n - 1 です。ループの中では、現在の頂点 i と直前の頂点 j を使って (x[j] + x[i]) * (y[j] - y[i]) を累積加算していきます。これにより、多角形の外周に沿って一周分の計算が自動的に完了します。最後に abs() で絶対値を取り、2で割った値を面積として返しています。
実行結果
The area is 3.5
この例では、(0,0)、(1,2)、(4,5)、(8,9) の4つの頂点を持つ多角形の面積として 3.5 が出力されました。この手法は、凸多角形だけでなく凹多角形にも対応できるため、頂点座標が既知の任意の単純多角形の面積計算に幅広く活用できます。
-
C++で指定された辺の長さを持つn辺の正多角形の面積を求める方法
この記事では、指定された辺の長さを持つn辺の正多角形の面積を求める問題を取り上げ、図形の面積を計算する公式を導出し、それに基づいたプログラムを作成します。まず、内容を理解しやすくするために、基本事項をおさらいしましょう。基本事項のおさらいn辺の正多角形とは、すべての辺の長さが等しいn個の辺を持つ多角形のことです。例えば、正五角形や正六角形などが挙げられます。面積とは、二次元の図形が占める広がりの大きさを数量的に表したものです。面積公式の導出正多角形の面積を求めるには、図形を構成する個々の三角形の面積を求め、それに辺の数nを掛けます。正多角形は、中心を共有する頂点としてn個の二等辺三角形に分割で
-
C++で3辺の長さが与えられた三角形の外接円の面積を求める方法
C++で三角形の外接円の面積を計算する 本記事では、3辺の長さが分かっている三角形について、その外接円(3つの頂点すべてを通る円)の面積をC++で求める方法を解説します。 下図のように、辺ABの長さをa、辺BCの長さをb、辺CAの長さをc、外接円の半径をrとします。 外接円の半径を求める公式 外接円の半径rは、3辺の長さと三角形の面積Sを用いて、次の式で表されます。 具体的な手順は以下の通りです。 まず、半周長 s = (a + b + c) / 2 を求めます。 ヘロンの公式より、三角形の面積は S = √(s(s − a)(s − b)(s − c)) で計算できます。 半径 r =