2009年8月5日水曜日

2点間の距離 (Euclidean distance)

公式

2点 P(x1, y1),Q(x2, y2)のとき

C言語での実装

#include <stdio.h>
#include <math.h>

/* ---------------------------------------------
  2点間の距離を求める
  引数1: p1 点の座標1
  引数2: p2 点の座標2
  引数3: n 次元数
  戻り値 p1とp2間の距離
 ---------------------------------------------*/
double distance(double *p1, double *p2, int n)
{
    int i;
    double distance = 0.0;

    for (i = 0; i < n; i++) {
        distance += (p2[i] - p1[i]) * (p2[i] - p1[i]);
    }
    return sqrt(distance);
}

/* main */
int main(void)
{
    double p1[] = {1.0, 2.0, 3.0};
    double p2[] = {1.0, 2.0, 4.0};
    double d;

    d = distance(p1, p2, 3);
    printf("2点間の距離:%f\n", d);

    return 0;
}
実行例
2点間の距離:1.000000

0 件のコメント:

コメントを投稿