【问题标题】:How to calculate the angle between a place on Earth and the Sun?如何计算地球上某个地方与太阳之间的角度?
【发布时间】:2011-03-17 20:04:49
【问题描述】:

对于我的应用,我需要计算两条不同线之间的角度:

1) 第一条线位于地球上由经纬度定义的一点与太阳中心之间。

2) 第二条线是地球上由经纬度定义的一点与月球表面之间距离地球最近的一点。

我不知道我应该如何从那里开始。有什么提示吗?

【问题讨论】:

  • 嗯,一些基本信息:physicalgeography.net/fundamentals/6h.html
  • 请问两点之间的夹角是多少?
  • 我认为 Java 在这种情况下排在最后。
  • 对不起,我在我的问题中混淆了它。两条路径之间的角度。
  • 日期在这里很重要,因为所有三个对象都在移动。这确实是一道数学题,而不是 Java 题。

标签: java algorithm


【解决方案1】:

假设您实际上已经计算了所有三个兴趣点[*],其中O 是观察者的位置(在地球上),S 是太阳的位置,M 是那么月球上的那个点:

OM . OS = |OM| * |OS| * cos(theta)

或者,换句话说,要计算theta,取两个向量的点积,将结果除以这两个向量的幅度,然后取其反余弦值结果。

[*] 您的问题只询问两条线之间的角度 - 如果您想知道如何及时计算实际线,那么您应该重写您的问题。

【讨论】:

  • 出于兴趣,公共库(想想标准库而不是第三方库)做点积还是你需要自己做数学?我从来没有尝试过自己......
  • 这在数学库中很常见,但无论如何都是微不足道的。如果你有两个 3D 向量 A 和 B,那就是 (Ax * Bx) + (Ay * By) + (Az * Bz)
  • 谢谢,但问题是要获得太阳和月亮的位置。
  • 用 7k rep 你现在应该知道如何写一个准确的问题了...建议你修改这个问题成为一个关于两个任意向量之间角度的问题,然后写一个新的问题来询问如何计算太阳和月球的位置。
【解决方案2】:

首先,问题是在什么时间点。月亮绕着地球转,地球又绕着太阳转,所以你提到的距离和角度在不同的时间点是不同的。

例如,当你有日食时,角度接近于零。

因此,如果没有时间信息以及当时地球、月亮和太阳位置的确切知识,计算是不可能的。

【讨论】:

    【解决方案3】:

    您可能想深入了解Celestia 的来源,以寻找可以让您确定地球上点相对于月球和太阳中心的位置的方程式。

    当你有这些坐标时,应用 Alnitak 对矢量dot products 的建议

    【讨论】:

      【解决方案4】:

      作为这个问题的相关答案。您知道 Wolframalpha.com 可以解决这个问题吗?

      例如,如果您正在寻找:

      你可以用 Mathematica 内核做同样的事情,并在 Java 中调用。

      【讨论】:

      • 或者更好的“纽约晚上 9 点太阳和月亮之间的角度”。太棒了!
      【解决方案5】:

      我建议如下:将所有坐标转换为一个唯一的坐标系(例如,地球绑定点的经度/纬度中的太阳和月亮位置)。然后您可以轻松计算该坐标系中的角度。

      【讨论】:

      • 我建议你试着想象一下没有这一步。 :P
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      相关资源
      最近更新 更多