gpt4 book ai didi

python - 如何找到距其他三个点特定距离的点的坐标?

转载 作者:行者123 更新时间:2023-12-01 07:29:05 24 4
gpt4 key购买 nike

enter image description here 三个点的坐标为 (-2.5466649, -1.2534076, 0.0001741)、(-2.6229969, 1.6419994, 0.0000651) 和 (-2.6972299, 2.8495214, 0.0003421)。想找到距离分别为 1.01、3.91 和 5.12 的点。

import numpy as np
x1=-2.5466649
y1=-1.2534076
z1= 0.0001741
x2=-2.6229969
y2= 1.6419994
z2= 0.0000651
x3=-2.6972299
y3= 2.8495214
z3= 0.0003421
#distance
l1=1.01
l2=3.91
l3=5.12
#coefficient
a1=2*(x2-x1)
a2=2*(x3-x2)
a3=2*(x1-x3)
b1=2*(y2-y1)
b2=2*(y3-y2)
b3=2*(y1-y3)
c1=2*(z2-z1)
c2=2*(z3-z2)
c3=2*(z1-z3)
d1 = l1**2 - l2**2 - x1**2 - y1**2 - z1**2 + x2**2 + y2**2 + z2**2
d2 = l2**2 - l3**2 - x2**2 - y2**2 - z2**2 + x3**2 + y3**2 + z3**2
d3 = l3**2 - l1**2 - x3**2 - y3**2 - z3**2 + x1**2 + y1**2 + z1**2
a = np.array([[a1, b1, c1], [a2, b2, c2], [a3, b3, c3]])
b = np.array([d1, d2, d3])
x = np.linalg.solve(a, b)
print x # [-5.00886518e+02 -1.78735572e+01 -6.55360000e+04]

最佳答案

我认为从你的图形描述来看,你指的是三边测量。更多信息here

我还找到了this安德鲁给出的答案之一( link to answer )中有一些代码。在这里为您的问题分享相同的代码。

import numpy                                             
from numpy import sqrt, dot, cross
from numpy.linalg import norm
# Find the intersection of three spheres
# P1,P2,P3 are the centers, r1,r2,r3 are the radii
# Implementaton based on Wikipedia Trilateration article.
def trilaterate(P1,P2,P3,r1,r2,r3):
temp1 = P2-P1
e_x = temp1/norm(temp1)
temp2 = P3-P1
i = dot(e_x,temp2)
temp3 = temp2 - i*e_x
e_y = temp3/norm(temp3)
e_z = cross(e_x,e_y)
d = norm(P2-P1)
j = dot(e_y,temp2)
x = (r1*r1 - r2*r2 + d*d) / (2*d)
y = (r1*r1 - r3*r3 -2*i*x + i*i + j*j) / (2*j)
temp4 = r1*r1 - x*x - y*y
if temp4<0:
raise Exception("The three spheres do not intersect!");
z = sqrt(temp4)
p_12_a = P1 + x*e_x + y*e_y + z*e_z
p_12_b = P1 + x*e_x + y*e_y - z*e_z
return p_12_a,p_12_b

P1=numpy.array([-2.5466649, -1.2534076, 0.0001741])
P2=numpy.array([-2.6229969, 1.6419994, 0.0000651])
P3=numpy.array([-2.6972299, 2.8495214, 0.0003421])
r1=1.01
r2=3.91
r3=5.12
print(trilaterate(P1,P2,P3,r1,r2,r3))

尽管此代码给出了此错误

raise Exception("The three spheres do not intersect!");

Exception: The three spheres do not intersect!

我认为你们的距离存在问题,这会导致没有共同的交点。

编辑:编辑代码,因为没有导入

关于python - 如何找到距其他三个点特定距离的点的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com