不开方求两点距离的算法

今天在论坛中看到了一个有趣的算法,不需要开方就可以得到两点间的距离,很有意思;

 

 

 不过这也仅是得到近似值,在实际工作中,其实大多数情况下是不需要直接得到距离的,我们得到距离是为了比较,  所以dx*dx+dy*dy 的结果就已经能够满足要求了, 而且很精确;

 

原理在这里>>http://www.flipcode.com/archives/Fast_Approximate_Distance_Functions.shtml 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 两点之间的距离可以使用勾股定理或者欧几里得距离公式,而在Python中计算距离的方法也很简单。 方法一:勾股定理 勾股定理是直角三角形斜边长度的定理,也可以用来两点之间的距离。公式为:a2+b2=c2,其中a、b分别是个直角边的长度,c是斜边的长度,即两点之间的距离。 在Python中,可以使用math库中的sqrt函数开方,用pow函数计算平方。 代码如下: import math x1, y1 = 1, 2 x2, y2 = 3, 4 distance = math.sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)) print(distance) 方法二:欧几里得距离公式 欧几里得距离公式是指在n维空间中,两点A(x1,y1,z1,…,n1)和B(x2,y2,z2,…,n2)之间的距离。公式为:√(x2−x1)²+(y2−y1)²+(z2−z1)²+…+(n2−n1)² 在Python中,同样可以用math库中的sqrt函数开方,用sum函数计算和。 代码如下: import math x1, y1 = 1, 2 x2, y2 = 3, 4 distance = math.sqrt(sum([pow(x2 -x1, 2), pow(y2 - y1, 2)])) print(distance) 种方法都可以计算出两点之间的距离,勾股定理方式简单实用,欧几里得距离公式适用于多维空间。根据具体需选择即可。 ### 回答2: Python是一种高级编程语言,它具有简单易学、语法简洁、功能丰富的特点。在Python中,两点之间的距离通常可以通过数学公式和外部模块实现。下面我将详细介绍这种方法。 方法1:使用数学公式 两点之间的距离公式是勾股定理,也可以叫做欧几里得距离公式。勾股定理如下: d = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 其中d为两点之间的距离,(x1,y1)和(x2,y2)分别为个点的坐标。 以下是使用上述公式两点间距离的完整Python代码: x1 = float(input("请输入第一个点的x坐标:")) y1 = float(input("请输入第一个点的y坐标:")) x2 = float(input("请输入第二个点的x坐标:")) y2 = float(input("请输入第二个点的y坐标:")) distance = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 print("两点之间的距离为:", distance) 这个代码片段首先要用户输入个点的坐标(x1,y1)和(x2,y2),然后计算它们之间的距离。 方法2:使用外部模块 在Python中,也可以使用math模块中的hypot()函数来计算两点之间的距离。hypot()函数可以返回个数的平方和的平方根,即欧几里得距离。 以下是使用hypot()函数计算两点间距离的完整Python代码: import math x1 = float(input("请输入第一个点的x坐标:")) y1 = float(input("请输入第一个点的y坐标:")) x2 = float(input("请输入第二个点的x坐标:")) y2 = float(input("请输入第二个点的y坐标:")) distance = math.hypot(x2 - x1, y2 - y1) print("两点之间的距离为:", distance) 这个代码片段首先导入math模块,然后要用户输入个点的坐标(x1,y1)和(x2,y2),然后计算它们之间的距离。 总结:以上种方法都可以计算两点之间的距离,使用数学公式的方法较为简便,而使用外部模块的方法则更加快捷。Python的灵活性和模块化特点,使得它对代码的重用和简化非常有帮助。 ### 回答3: 计算两点之间的距离可以使用勾股定理或向量计算。 方法一:勾股定理 勾股定理适用于平面直角坐标系下两点之间的距离计算。 假设两点坐标分别为(x1, y1)和(x2, y2),则它们之间的距离d = √((x2-x1)² + (y2-y1)²) 。 代码实现: ``` import math def distance(x1, y1, x2, y2): d = math.sqrt((x2-x1)**2 + (y2-y1)**2) return d ``` 方法二:向量计算 向量计算适用于欧几里得空间下两点之间的距离计算。 假设两点坐标分别为(x1, y1, z1)和(x2, y2, z2),则它们之间的距离d = √((x2-x1)² + (y2-y1)² + (z2-z1)²)。 代码实现: ``` import math def distance(x1, y1, z1, x2, y2, z2): d = math.sqrt((x2-x1)**2 + (y2-y1)**2 + (z2-z1)**2) return d ``` 以上种方法的实现都需要用到math库中的sqrt函数,用于平方根。通过调用distance函数并传入相应参数,即可进行两点间距离的计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值