Lat - 长转换器,角度和距离计算器

时间:2012-01-23 12:53:10

标签: c++ c

Lat – Long Converter ,Angle and Distance Calculator

该算法用于将给定的纬度和经度位置转换为XY坐标系。该算法还可以找到任意2个位置之间的角度和距离以及它们之间的角度。通过查找每个客户与其他客户的距离来形成距离矩阵,并将其传递给最近的邻居算法。

伪代码

  1. 将所有给定的坐标位置转换为弧度。
  2. 将r设置为lat,long值之和的平方根值。
  3. 将角度设置为旋转角度的弧度值。
  4. 如果r大于0
    a)将rt设为r的分割值r。
    b)将st设为long的除以r的分割值 c)将X坐标值设置为r值的乘积,ct的乘积与角的余弦值之和与乘积st和角度的Sin值之和。 d)同样地找到Y坐标值作为r值的乘积,st的乘积与角的余弦值之和与乘积ct与角度的Sin值之和的乘积。
    e)将更新保存为最终X& Y值。
  5. 结束如果
  6. 调用find_angle以查找depo与客户之间的角度。
  7. 调用Find_diatance以查找2个位置之间的距离。
  8. 返回X,Y,角度和距离。
  9. 我不能解决第4点和第5点......你能帮我形成一个方程来解决它

2 个答案:

答案 0 :(得分:4)

以下是我对步骤4.c的解释:

设置X坐标值
    x =

将X坐标值设置为的乘积:
    x = ( ) * ( )

将X坐标值设置为 r值的乘积:
    x = (r) * ( )

将X坐标值设为r值的乘积, 的总和:
    x = (r) * ( ( ) + ( ) )

将X坐标值设为r值的乘积, 的乘积之和:
    x = (r) * ( ( ( ) * ( ) ) + ( ) )

将X坐标值设为r值的乘积, ct 的乘积之和:
    x = (r) * ( ( (ct) * ( ) ) + ( ) )

将X坐标值设置为r值的乘积,ct 的乘积与余弦值的乘积之和:
    x = (r) * ( ( (ct) * (cos( ) ) ) + ( ) )

将X坐标值设置为r值的乘积,ct的乘积与余弦值角度的乘积:
    x = (r) * ( ( (ct) * (cos(angle) ) ) + ( ) )

将X坐标值设置为r值的乘积,ct的乘积与角度的余弦值之和与乘积st与角度Sin值之和
    x = (r) * ( ( (ct) * (cos(angle) ) ) + ( (st) * (sin(angle) ) ) )

删除不必要的括号:
    x = r * (ct * cos(angle) + st * sin(angle));

答案 1 :(得分:1)

纬度和经度是球体上的坐标。 XY坐标通常是平面上的坐标。在它们之间进行转换并没有多大意义。

您可以直接计算两个纬度/经度坐标之间的距离;这个距离被称为大圆距离。几个stackoverflow问题涵盖了如何执行此操作。 Here's一个。

如果你正在寻找最近的邻居,你真的需要角度吗?