- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试使用 pygame 开发一个按比例缩放的宇宙模型。目前,当我计算行星的 x、y 位置时。尽管仅使用基于行星距离和角度的位置方程(无力),但行星正在慢慢落向太阳。
以下是当前计算距给定恒星距离的代码片段:
def d_obj(self, reference):
x_diff_sq = pow(self.x - reference.pos[0], 2)
y_diff_sq = pow(self.y - reference.pos[1], 2)
return pow(x_diff_sq + y_diff_sq, 0.5)
然后我将这个函数返回的内容传递给下一个函数来计算位置
def move(self, d):
self.theta += self.d_theta
self.x = int(d * math.cos(self.theta)) + total_d/2
self.y = int(d * math.sin(self.theta)) + total_d/2
total_d/2 是坐标偏移量,self.d_theta 是给定行星的自转周期。
每个行星都有其初始位置硬编码,我用它来计算所有行星的初始距离和当前距离之间的差异,每个刻度明显地行星向太阳移动约 1 公里。有什么办法可以尝试抵消这个影响吗?
我知道,在我以数百万公里绘制事物的规模中,我只是好奇这些方程的哪一部分导致了错误。我尝试过在 pow 上使用 '**' 运算符,经过一些在线研究发现 pow 更适合涉及 float 的幂。
还应该提到的是,所有计算均以公里为单位,然后在绘制之前,行星半径和 x、y 会从当前约为 4 天文单位的设定距离映射到屏幕。
最佳答案
你正在尝试让你的行星绕圈移动,对吧?
在您的代码中,您
您不必做所有这些。相反,您可以保持硬编码距离,然后
那么你的距离就根本不会漂移。
<小时/>旁注:如果您计划让行星长时间运行,请确保将您的 theta 保持在 0 到 2*pi 之间,否则舍入误差将开始出现,您的 theta 准确性将会恶化。
<小时/>您认为这会使添加卫星和小行星变得困难。
不是真的!
您可以对卫星执行相同的操作,注意它们属于哪个行星、到该行星的距离、delta_theta 和初始 theta(基于其母行星)。
如果你想开始做椭圆而不是圆形,你可以改变你的计算(使用方便的常数 orbital elements 而不是距离和 delta_theta,它不再是常数)来应用 Kepler's laws .
您也可以稍后添加小行星。在计算所有“平凡”移动物体的运动后,您可以保留小行星的笛卡尔位置和速度,并单独计算它们的运动。
关于python - 如何抵消极坐标计算直角坐标的误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804555/
我正在 iFrame 中加载外部页面,该页面在计数器后重定向。我想禁用重定向。我使用 Firebug 来定位重定向。 if(!counter) self.iframe.src=self.vars[
我正在运行一个 MySQL 查询,以获取按每个字段分组的每一行的最高 ID。我这样做: SELECT period,max(id) AS maxid FROM f WHERE type = '1' G
我在网站上使用 Bootstrap ,并在加载时使用以下代码将我的选择框变成 select2下拉菜单 $("select").select2(); 但是,当加载带有选择下拉列表的任何页面时,在绘制 s
我是一名优秀的程序员,十分优秀!