获得两点之间的距离/位移

时间:2017-11-16 19:07:12

标签: java math

我需要返回两点之间的距离(p1 =(x1,y1)和p2 =(x2,y2))但如果p2的值小于p1,则返回负距离。

这个例子是真的: https://i.imgur.com/ZbN8CkG.png

√((x1-x2)²+(y1-y2)²)将始终返回正值,因为距离不能为负。但我需要的更像是流离失所。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

如果第一个点的x值较大,则只需要为负数,那么你可以检查x1是否大于x2,如果是,则将结果乘以-1。 除非我遗漏了什么

答案 1 :(得分:0)

听起来你真的想要一个矢量。它具有幅度方向。幅度是两点之间的距离。通过从起点到终点绘制矢量来确定方向。选择是任意的。

从(0,0)到(5,0)的矢量与从(5,0)到(0.0)的矢量长度相同:两者都是长度5.但是一个指向正x方向;负x方向的其他点。矢量思想更为通用。

在2D直角坐标中,您有点p1 =(p1x,p1y)和p2 =(p2x,p2y)。

从p1到p2的向量是:

p = (p2x-p1x)*i + (p2y-p1y)*j

其中i =单位x-vector,j =单位y-vector。

p的大小是

pmag = sqrt((p2x-p1x)^2 + (p2y-p1y)^2)

从p1到p2的单位向量可以通过将向量p除以其大小来得到:

p(unit) = (p2x-p1x)*i/pmag + (p2y-p1y)*j/pmag

与p相同的方向点,但它的大小为1(因此名称为#34;单位向量")。