Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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 オプションを付ける必要がある点に注意してください。

  1. 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

  2. Googleマップで2点間・複数地点の距離を測る方法(Android/iPhone/PC対応)

    Googleマップで場所をチェックしているとき、現在地から目的地までの距離など、2点間の距離を知りたい場面がありますよね。距離測定機能を活用すれば、徒歩で向かうべきか車を使うべきかを事前に判断できます。しかも、複数の地点を回る場合の合計距離まで、追加アプリをインストールせずにGoogleマップだけで確認できるのが便利なところです。 Googleマップで距離を測定する方法【Android編】 Android端末でGoogleマップを開き、現在地を使用するか、住所や地名を入力します。地図上の任意の場所を長押しして、赤いピン(バルーン)を表示させる方法もあります。 入力した住所の情報が画面下部に