計算蜂窩中兩個點之間的距離

2021-06-16 17:49:33 字數 2044 閱讀 7225

如下圖所示,求兩個id之間的距離,如1到18的距離為2.

方案是用極座標法,然後確定每個id的座標,再根據座標來計算距離。

**如下:

#ifndef honeycomb_h

#define honeycomb_h

extern void init_honeycomb(int max_id);

extern int calc_distance(int id1, int id2);

extern void clear(void);

#endif

#include "honeycomb.h"

#include #include /* for memset */

#define max_ring 256

/*第n環的蜂窩數為6n,n從1開始*/

struct ring_info

;static void init_ring_info(struct ring_info* ri)

static struct ring_info g_all_ring[max_ring];

static void init_all_ring(void)

}/* 共六個方向 */

enum direction

;static void move(enum direction direct, int* x, int* y)

}struct comb_info

;static struct comb_info* g_all_comb = null;

static int g_max_id = 0;

void init_honeycomb(int max_id)

g_max_id = max_id;

init_all_ring();

if (g_all_comb != null)

g_all_comb = (struct comb_info*)malloc((max_id + 1) * sizeof(struct comb_info));

if (null == g_all_comb)

g_all_comb[1].x = 0;

g_all_comb[1].y = 0;

for (i = 1; i < max_ring; i++)

move(left_down, &x, &y);

g_all_comb[cur_id].x = x;

g_all_comb[cur_id].y = y ;

cur_id++;

} for (tmp = left_up; tmp <= down; tmp++)

move(tmp, &x, &y);

g_all_comb[cur_id].x = x;

g_all_comb[cur_id].y = y ;

cur_id++;

}} }

}int calc_distance(int id1, int id2)

if (id1 <= 0

|| id2 <= 0

|| id1 > g_max_id

|| id2 > g_max_id)

d_x = g_all_comb[id1].x - g_all_comb[id2].x;

d_y = g_all_comb[id1].y - g_all_comb[id2].y;

if (d_x*d_y < 0)

else }

void clear(void)

g_max_id = 0;

}

測試用例如下:

#include "honeycomb.h"

#include static test(int id1, int id2, int len_expect)

else }

int main()

sklearn計算兩個向量之間的距離

from sklearn.feature extraction.text import countvectorizer from sklearn.metrics.pairwise import euclidean distances from sklearn.feature extraction.t...

Mysql sql 計算兩個座標之間的距離

mysql sql 計算兩個座標之間的距離 赤道半徑 6378.137km 查詢結果為km select id,6378.137 2 asin sqrt pow sin radians 當前緯度latitude radians 資料庫中儲存的目標緯度latitude 2 2 cos radians ...

計算兩點之間的距離

檔名稱 test.cpp 完成日期 2013年10月17日 版本號 v1.0 輸入描述 輸入兩個橫縱座標 問題描述 輸入兩個橫縱座標,求兩點之間的距離 程式輸出 兩點之間的距離 問題分析 通過輸入兩個橫縱座標,求兩點之間的距離 演算法設計 略 include includeusing namespa...