在3D空间中确定两个物体的公式

3

我正在尝试找出计算3D空间中两个物体距离的公式。到目前为止,当我运行程序时得到的答案是错误的:

float Distance3D(const float & object1X , 
             const float & object1Y ,
             const float & object1Z , 
             const float & object2X , 
             const float & object2Y ,
             const float & object2Z )
{
    float x = pow ((object2X - object1X),2);// for x
    float y = pow ((object2Y - object1Y),2);// for y
    float z = pow ((object2Z - object1Z),2);// for z
    float objectDistance = 0.0f;

    objectDistance = sqrt(object2X*object1X + object2Y*object1Y + object2Z*object1Z);
    cout << objectDistance << endl;

    return objectDistance;
}

3
你一开始做得很正确,但后来完全放弃了。如果你在后面的代码中从未使用过xyz,那你为什么要计算它们呢?你已经正确地计算出了xyz,现在继续使用它们来计算距离。 - AnT stands with Russia
我想表达我对你的数学老师不满的意见。 - Mikhail
5个回答

2
如果你想要计算三维空间中两点之间的欧几里得距离,你的代码应该看起来更像这样:
objectDistance = sqrt((object2X-object1X)*(object2X-object1X) + 
                      (object2Y-object1Y)*(object2Y-object1Y) + 
                      (object2Z-object1Z)*(object2Z-object1Z));

或者更简单地使用您的平方距离变量 x,y,z
objectDistance = sqrt(x + y + z);

xyz 已经被平方了,你不需要再次对它们进行平方。 - AnT stands with Russia
@AndreyT,谢谢您指正。我是在问题编辑后才添加它们的。 - mathematician1975

2

1

在三维空间中,距离通常使用毕达哥拉斯定理来计算。

其公式为

d^2=(x0-x1)^2+(y0-y1)^2+(z0-z1)^2

其中d是点之间的距离。

使用这个公式,你的代码应该像这样

float Distance3D(const float & object1X , 
             const float & object1Y ,
             const float & object1Z , 
             const float & object2X , 
             const float & object2Y ,
             const float & object2Z )
{
    float delta_x = pow (object2X - object1X,2);// for x
    float delta_y = pow (object2Y - object1Y,2);// for y
    float delta_z = pow (object2Z - object1Z,2);// for z
    float objectDistance = 0.0f;

    objectDistance = sqrt(delta_x*delta_x + delta_y*delta_y + delta_z*delta_z);
    cout << objectDistance << endl;

    return objectDistance;
}

有趣的是,对于高维数据,这个度量标准的实用性会下降,曼哈顿距离可能会成为更可取的度量标准。Aggarwal (2001)的一篇论文《关于高维空间中距离度量的惊人行为》就探讨了这个问题。


0

你的公式不正确,请查看2D距离公式,然后将其扩展到3D。

还要注意获取2D/3D向量长度的公式的相似之处。


0

你应该尝试每个组件差的平方根。请参见formula


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接