如何在X-Y平面上绘制标签之间的欧几里德距离

时间:2016-12-27 11:43:28

标签: python algorithm graph computational-geometry euclidean-distance

我有一组'N'标签及其欧几里德距离。如何在2D平面上绘制此信息?

对于3个标签,图是一个三角形,每个角都是一个标签。

我正在寻找一种近似算法,在X-Y平面上绘制超过3个标签,这表示实际距离。

我附上了七个标签矩阵的屏幕截图及其欧几里德距离 7 tag matrix

2 个答案:

答案 0 :(得分:0)

对于A,B,C点的每个三元组,您需要求解方程组

(B.X - A.X)^2 + (B.Y - A.Y)^2 = dAB^2
(C.X - A.X)^2 + (C.Y - A.Y)^2 = dAC^2
(B.X - C.X)^2 + (B.Y - C.Y)^2 = dBC^2

请注意,3个方程有6个未知数。所以你在初选时有一些自由:

将(0,0)坐标分配给第一个点。 设(BX,0)是第二点的坐标。 找到BX,CX,CY。注意,二次方程给出了CY的两个可能位置 - 选择正位置。

为下一个点解决类似的系统D.从两个可能的位置做出正确的选择 - 检查距离dAD。

重复所有下一个点的过程。

距离为dAB=1, dBC=1, dCD=1, dDA=1, dAC=1.414, dBD=1.414

的3个点的示例
A = 0,0
B = 1,0
C = 1,1 (another variant 1,-1)
for D using B,C we can calculate (0,1) and (2,0) - using dAD we choose the first one

答案 1 :(得分:0)

您可以使用force-directed graph drawing算法。简而言之,我们的想法是从一个随机布局开始,在每对节点之间放置一个弹簧,其中指定的距离会根据当前距离是否过大而以某种方式施加力,然后将此系统模拟为平衡。