问题标签 [orbital-mechanics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ThreeJS 轨道控制设置目标,无需查看
我正在尝试制作用于构建模型的 3D 查看器。我们已经加载了模型,并试图与模型进行某种交互。因此,我们使用 OrbiControls 来旋转、平移和缩放模型。
我们希望在查看器中具有这样的行为:当用户单击并拖动(因此旋转)时,旋转中心位于用户单击的建筑物的点。
我认为通过这样更改 OrbitControl 的目标是明智的:
但是,我在 OrbitControl.js 文件的源代码中发现,当控件更新时,
函数被调用,这导致相机跳到一个新的位置。
有没有办法解决这个问题?我已经尝试了几个小时,但似乎没有任何效果。
尝试更改 target0,然后在控件上调用 reset()。还尝试将相机改回旧位置(这可能是它的完成方式,但我可能尝试得很糟糕。
c++ - 在 3D 空间中查找 3D 点和定向椭圆之间的距离(C++)
为了给这个问题一些背景知识,我正在创建一个游戏,它需要知道一个物体的“轨道”是否在另一个轨道的容差范围内。为了展示这一点,我使用目标轨道绘制了一个具有给定半径(公差)的圆环形状,现在我需要检查椭圆是否在该圆环内。
我迷失在数学/堆栈交换的方程式中,所以要求更具体的解决方案。为澄清起见,这是一张带有圆环和轨道(红线)的游戏图像。很简单,我想检查那个红色轨道是否在那个圆环形状内。
我认为我需要做的是在其中一个轨道上的 World-Space 中绘制四个点(很容易做到)。然后我需要计算该点与其他轨道椭圆之间的最短距离。这是困难的部分。有几个例子可以找到点到椭圆的最短距离,但都是二维的,很难理解。
如果该距离小于所有四个点的容差,则认为这等于轨道位于目标圆环内。
为简单起见,所有这些轨道的原点始终位于世界原点 (0, 0, 0) - 我的坐标系是 Z-Up。每个轨道都有一系列定义它的参数(轨道元素)。
python - 地球在 2d 物理引擎中拉太阳
我正在用 python 创建一个基本的物理引擎,并且我设法创建了一个简单的“行星”类来处理数学。当一颗小行星绕着一颗大行星运行时,我还创建了一个基本的工作场景——如果这个小行星的质量为零。然而,当我给这颗小行星任何质量时,它会慢慢地将太阳拉到右边,形成弧形。在这张图片中更容易看到:
.
我明白发生了什么——地球正在将太阳拉到一边并阻止它,但没有将其拉回另一侧——但我不知道如何解决它,除了给太阳一个硬编码的速度。我检查了其他一些来源,但没有任何帮助 - 事实上,这个物理模拟也有同样的问题(取消选中以系统为中心)。
这会发生在现实世界中,还是这种模拟的故障?无论哪种方式,是否有某种黑客可以防止这种情况发生?
我的星球类(所有方法都非常简单):
和“主要”文件:
c - 用 C 语言对 Runge Kutta 中的轨道积分运动微分方程
我正在尝试使用 C 中的四阶 runge-kutta 积分行星轨道的微分方程。我尝试积分的第一个方程是位置,dr/dt = sqrt((2/mu)*(E-( k/r)) - pow(l, 2)/(pow(mu, 2)*pow(r, 2)))。该程序编译正确但不断返回nan,我对C相当陌生,所以我想知道为什么会这样。我正在使用的源代码如下:
我的代码如下:
python - 使用 Runge-Kutta 4 计算卫星位置
我的问题与 Runge-Kutta 4 (RK4) 方法和轨道卫星状态向量所需的正确迭代步骤有关。以下代码(在 Python 中)根据此链接(http://www.navipedia.net/index.php/GLONASS_Satellite_Coordinates_Computation)的描述描述了运动:
还有更多代码,但是我想限制我现在展示的内容,因为这是我最感兴趣解决的中间步骤。基本上,对于那些熟悉状态向量并使用 RK4 的人来说,您可以看到在中间步骤中更新了位置和速度,但没有更新加速度。我的问题与更新加速度所需的计算有关。它会开始:
...但究竟发生了什么还不是很清楚。欢迎任何建议。
以下是完整代码:
python - 卫星仰角负
直到最近,我用来计算来自某个特定地点的卫星的仰角和方位角的代码似乎仍然有效。然后我使用了一个站点的不同文件,不是在北半球,而是在南半球。计算的仰角有时是负的,即卫星在地平线以下。这是不正确的,因此用于卫星位置的文件参数是错误的(不太可能),或者我下面的代码不正确(更有可能)。
如何确保上面的代码不会最终计算出负仰角?
gps - 特定时期卫星下的地面经度/纬度(笛卡尔坐标)
我要开发的脚本使用来自卫星的笛卡尔坐标 (XYZ),并结合某个位置的距离、仰角和方位角,然后获取卫星的轨道信息并获取该卫星下的地面经度/纬度在给定的时间。
更进一步:想象一颗卫星在海拔 300 公里处穿透大气层发出的信号。在这个高度为 300 公里的特定点,我需要计算地面经度/纬度。
在 pyemph 模块中似乎已经有一种方法(ephem.readtle)可以实现这一点,但仅适用于 TLE(两行元素)数据。我想使用卫星的笛卡尔坐标来开发它。已经有这样的方法了吗?或者也许在这个领域有经验的人可以为我指明正确的方向。
一个类似的问题已经存在于 Azimuth, Elevation, Range 和 Observer Lat,Lon,Alt的 ECEF 中,但这不是同一个问题。
这是我已经开发的: - 卫星笛卡尔坐标,XYZ - 卫星从地面站的方位角、仰角和范围 - 以纬度、经度、海拔高度为单位的地面站坐标
这就是我需要的: - 特定时期卫星下的地面经度/纬度,特别是大气中的穿透点(来自卫星的信号穿透大气层的点)是 300 公里高度。
java - 给定加速度计的加速度,如何建模模块在空间中的位置?
我 每 100 毫秒获取一个 grove pi 模块acc_vector = (accX, accY, accZ)的 3 维值。我想要的是,使用java,显示我使用模块所做的运动......但我的问题不是如何显示它:p
为此,我需要计算 对应于加速度值的位置position_vector = (x,y,z)的值。但我不知道该怎么做。
这是我尝试过的,但它总是给出奇怪的结果(初始位置、速度和加速度是 (0,0,0) ):
position_vector = 0.5f*acc_vector*t;
position_vector += acc_vector;
position_vector = acc_vector*(t-t_just_before);