高分求两点距离的近似计算公式

wcb2001 2003-10-17 04:51:36
因为是j2me的程序,无法用浮点数,开方也不现实,不知道那位大侠有近似的计算公式,多谢啦
...全文
178 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
justju 2003-10-23
  • 打赏
  • 举报
回复
对的
liangbch 2003-10-23
  • 打赏
  • 举报
回复 1
改正错误后如下:

我来给出一个算法:这个算法完全是由自己推的,正确性和效率请大家验证。
问题:求p1(坐标:x1,y1),p2(坐标:x2,y2)之间的距离X,不能使用sqrt函数
解法:
1. a=|x1-x2|, b=|y1-y2|
2. if (a<b),交换a<->b.
3. X0= a + b^2/(2*a)
4. 使用迭代公式逐步求精,X(n+1)=( X(n)+(a^2+b^2)/X(n))/2
说明:a,b相差越大,在要求精度一定情况下,初值越精确,计算速度越快
测试数据:
1。a=4,b=3, x=sqrt(3^2+4^2)=5
使用该算法:x0= 5.125,x1=5.0015,x2=5.00000023
2. a=60,b=11, x=sqrt(60^2+11^2)=61
使用该算法:x0=61.0083 ,x1=61.000000569,61.000000000000002655
liangbch 2003-10-23
  • 打赏
  • 举报
回复 1
我来给出一个算法:这个算法完全是由自己推的,正确性和效率请大家验证。
问题:求p1(坐标:x1,y1),p2(坐标:x2,y2)之间的距离X,不能使用sqrt函数
解法:
1. a=|x1-x2|, b=|y1-y2|
2. if (a<b),交换a<->b.
3. X0= a + b^2/(2*a)
4. 使用迭代公式逐步求精,X(n+1)=( X(n)+(a^2+b^2)/X(n))/2
说明:a,b相差越大,在要求精度一定情况下,初值越精确,计算速度越快
测试数据:
1。a=4,b=3, c=sqrt(3^2+4^2),精确值5
使用该算法:x0= 5.125,x1=5.0015,x2=5.00000023,
2. a=60,11, c=sqrt(60^2+11^2),精确值61
使用该算法:x0=61.0083 ,x1=61.000000569
醉马不肖 2003-10-22
  • 打赏
  • 举报
回复
就用公式(x1-x2)^2+(y1-y2)^2表示“距离”不行吗?,这样可以省去开方的误差
zzwu 2003-10-22
  • 打赏
  • 举报
回复
Bresenham算法不用开方,只用乘法和加法。
zzwu 2003-10-22
  • 打赏
  • 举报
回复
直接用Bresenham算法统计一下2点之间的点数就行了。
对斜线,这可能有误差,但总比平方值或直角距离(dx+dy)要精确得多。
HUNTON 2003-10-22
  • 打赏
  • 举报
回复
不能开方,那就不用开,也就是用距离的平方来代替距离,这个对判断距离的大小是没有影响的
BoyMgl 2003-10-22
  • 打赏
  • 举报
回复
d=sqrt(pow((x1-x2),2)+pow((y1-y2),2))
用其他语言做个DLL不久行了!
BlueSky2008 2003-10-22
  • 打赏
  • 举报
回复
我说的求平方根的公式就是:
比如求100的平方根:

(1 + 100/1)/2 = 50
(50 + 100/50)/2 = 26
(26 + 100/26)/2 = 14
(14 + 100/14)/2 = 10
(10 + 100/10)/2 = 10

小于100的数可以先扩大100倍再求。不过zzwu说的Bresenham算法效果更好。你可以用他的方法。
两两间比较也可以用平方来计算



wcb2001 2003-10-21
  • 打赏
  • 举报
回复
楼上的老大,能不能稍微详细一点啊
BlueSky2008 2003-10-18
  • 打赏
  • 举报
回复
求平方根的迭代公式:
X[n+1]=(x[n]+y/x[n])/2
ttmmdd 2003-10-17
  • 打赏
  • 举报
回复
可以用定点数计算.
http://www.happypedestrian.com/java/fixed_point_arith.html
如果只用整形的话number_of_fraction_bits设成0就可.
不要求精确的话 用如下也可dist=Abs(x0-x1)+Abs(y0-y1)

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧