C++一组三维点数据按参考点最短路线排序 例子
时间: 2024-06-06 10:07:17 浏览: 127
假设有一组三维点数据:{(1,2,3), (4,5,6), (7,8,9), (2,5,8), (6,3,1), (9,6,3)},我们以点(5,5,5)为参考点,按照最短路线从参考点到每个点的距离进行排序。
首先,我们需要计算每个点到参考点的距离,可以使用欧几里得距离公式:
d = sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)
其中,(x1,y1,z1)为参考点的坐标,(x2,y2,z2)为每个点的坐标。
计算得到每个点到参考点的距离如下:
d1 = sqrt((1-5)^2 + (2-5)^2 + (3-5)^2) ≈ 4.58
d2 = sqrt((4-5)^2 + (5-5)^2 + (6-5)^2) ≈ 1.73
d3 = sqrt((7-5)^2 + (8-5)^2 + (9-5)^2) ≈ 4.58
d4 = sqrt((2-5)^2 + (5-5)^2 + (8-5)^2) ≈ 3.74
d5 = sqrt((6-5)^2 + (3-5)^2 + (1-5)^2) ≈ 3.87
d6 = sqrt((9-5)^2 + (6-5)^2 + (3-5)^2) ≈ 4.58
接下来,将每个点与它到参考点的距离组成一个元组,并按照距离升序排序,得到排序结果如下:
[(4, 3.74), (5, 3.87), (2, 4.58), (1, 4.58), (6, 4.58), (3, 4.58)]
其中,元组的第一个元素为点的索引(从0开始),第二个元素为到参考点的距离。
因此,按照最短路线从参考点到每个点的距离进行排序后,点的顺序为{(4,5,6), (6,3,1), (7,8,9), (1,2,3), (9,6,3), (2,5,8)}。
阅读全文