3D空間で2点間の距離を計算するCプログラム
3次元空間はx軸・y軸・z軸の3つの軸で構成され、空間上の各点の位置は (x, y, z) という座標の組み合わせで表されます。本記事では、C言語を使って3次元空間上の2点 P1(x1, y1, z1) と P2(x2, y2, z2) の間の距離(ユークリッド距離)を計算し、その結果を表示するプログラムを解説します。
3次元空間における距離の計算式
2点間の距離は、ピタゴラスの定理(三平方の定理)を3次元に拡張した次の公式で直接求めることができます。
d = √( (x2 − x1)2 + (y2 − y1)2 + (z2 − z1)2 )
この式は、x・y・zの各軸方向における座標の差をそれぞれ2乗して合計し、その平方根を取ることで、空間内の2点を結ぶ直線距離を求めるものです。
計算のアプローチ
- 2点の座標 (x1, y1, z1) と (x2, y2, z2) を入力として受け取る
- 上記の公式を適用し、各軸の差の2乗和の平方根を計算する
- 求めた距離を出力する
アルゴリズム
開始
ステップ1 → 2点間の距離を計算する関数を宣言する
void three_dis(float x1, float y1, float z1, float x2, float y2, float z2)
float dis = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2) + pow(z2 - z1, 2))
dis を表示する
ステップ2 → main() 関数内で
float x1 = 4
float y1 = 9
float z1 = -3
float x2 = 5
float y2 = 10
float z2 = 9
three_dis(x1, y1, z1, x2, y2, z2) を呼び出す
終了C言語による実装例
#include <stdio.h>
#include <math.h>
// 2点間の距離を求める関数
void three_dis(float x1, float y1, float z1, float x2, float y2, float z2) {
float dis = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2) + pow(z2 - z1, 2));
printf("2点間の距離 : %f", dis);
return;
}
int main() {
float x1 = 4;
float y1 = 9;
float z1 = -3;
float x2 = 5;
float y2 = 10;
float z2 = 9;
three_dis(x1, y1, z1, x2, y2, z2);
return 0;
}実行結果
上記のコードをコンパイルして実行すると、次の出力が得られます。
2点間の距離 : 12.083046
処理の解説
この例では、P1(4, 9, −3) と P2(5, 10, 9) の距離を求めています。各軸の差はx方向が1、y方向が1、z方向が12となるため、√(12 + 12 + 122) = √146 ≈ 12.083046 という結果になります。距離の計算には、math.h ヘッダーに含まれる pow()(べき乗)と sqrt()(平方根)を使用しており、これらを組み合わせることで簡潔に実装できます。なお、Linux環境のgccでコンパイルする場合は、数学ライブラリをリンクするために -lm オプションを付ける必要がある点に注意してください。
-
C++で二重積分を計算するプログラム|シンプソン1/3則による数値積分の実装
変数xの下限・上限、変数yの下限・上限、そしてx・yそれぞれの刻み幅(ステップ幅)が与えられたとき、二重積分を数値的に計算し、その結果を表示するのが本記事のテーマです。 入出力の例 入力: xの刻み幅 = 1.2 yの刻み幅 = 0.54 xの下限 = 1.3 xの上限 = 2.1 yの下限 = 1.0 yの上限 = 2.1 出力: double integration is : 2.1 計算のアプローチ 本プログラムでは、以下の手順で二重積分を求めます。 xとyの上限・下限の値に加えて、x・yそれぞれの刻み幅を入力として受け取ります。 二重積分の計算にはシンプソン1/3則(Simpson
-
Googleマップで2点間・複数地点の距離を測る方法(Android/iPhone/PC対応)
Googleマップで場所をチェックしているとき、現在地から目的地までの距離など、2点間の距離を知りたい場面がありますよね。距離測定機能を活用すれば、徒歩で向かうべきか車を使うべきかを事前に判断できます。しかも、複数の地点を回る場合の合計距離まで、追加アプリをインストールせずにGoogleマップだけで確認できるのが便利なところです。 Googleマップで距離を測定する方法【Android編】 Android端末でGoogleマップを開き、現在地を使用するか、住所や地名を入力します。地図上の任意の場所を長押しして、赤いピン(バルーン)を表示させる方法もあります。 入力した住所の情報が画面下部に