我有一组'N'标签及其欧几里德距离。如何在2D平面上绘制此信息?
对于3个标签,图是一个三角形,每个角都是一个标签。
我正在寻找一种近似算法,在X-Y平面上绘制超过3个标签,这表示实际距离。
答案 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
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算法。简而言之,我们的想法是从一个随机布局开始,在每对节点之间放置一个弹簧,其中指定的距离会根据当前距离是否过大而以某种方式施加力,然后将此系统模拟为平衡。