Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算地球上一个地方与太阳的夹角?_Java_Algorithm - Fatal编程技术网

Java 如何计算地球上一个地方与太阳的夹角?

Java 如何计算地球上一个地方与太阳的夹角?,java,algorithm,Java,Algorithm,对于我的应用程序,我需要计算两条不同直线之间的角度: 1) 第一条线位于地球上由经纬度定义的一点和太阳中心之间 2) 第二条线位于地球上由经度和纬度定义的点与月球表面之间,与地球的距离很小 我不知道该如何从那里开始。有什么提示吗?首先,问题是在什么时间点。月亮绕着地球转,地球又绕着太阳转,所以你提到的距离和角度在不同的时间点是不同的 例如,当你有日食时,角度接近于零 因此,如果没有时间信息和对给定时间地球、卫星和太阳位置的准确了解,计算是不可能的。假设你已经计算了所有三个兴趣点[*],其中O是观

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

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

2) 第二条线位于地球上由经度和纬度定义的点与月球表面之间,与地球的距离很小


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

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

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


因此,如果没有时间信息和对给定时间地球、卫星和太阳位置的准确了解,计算是不可能的。

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

OM . OS = |OM| * |OS| * cos(theta)
或者,换句话说,要计算θ,取两个向量的点积,除以这两个向量的大小,然后取结果的反余弦


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

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

您可能需要深入研究的来源,以寻找可以确定该点在地球上相对于月亮和太阳中心的位置的方程式


当你有这些坐标时,应用Alnitak关于向量s的建议作为这个问题的相关答案。你知道Wolframalpha.com可以解决这个问题吗

例如,如果您正在查找:


你可以用Mathematica内核做同样的事情,然后调用Java。

好吧,一点基本信息:两点之间的角度是什么?我认为Java在这种情况下是最后一个。对不起,我在我的问题中混淆了它。两条路径之间的角度。日期在这里很重要,因为所有三个对象都在移动。这真是一个数学问题stion,这不是Java问题。我建议您试着想象一下,在没有这一步的情况下完成这项工作。:POut of interest do common libraries(认为是标准库,而不是第三方库)做点积或者你需要自己做数学吗?我从来没有试过自己…这在数学库中很常见,但不管怎么说它很简单。如果你有两个3D向量A和B,它只是
(Ax*Bx)+(Ay*By)+(Az*Bz)
谢谢,但问题的关键是获取太阳和月球的位置。使用7k rep,您现在应该知道如何编写一个准确的问题……建议您将此问题修改为关于两个任意向量之间的角度的问题,然后编写一个新的问题,询问如何计算太阳和月球的位置。或者更好“纽约晚上9点日月夹角”,太棒了!