Javascript 所以我想创建一个基于浏览器的地球和其他围绕太阳运行的行星的交互式实时动画…从哪里开始?

Javascript 所以我想创建一个基于浏览器的地球和其他围绕太阳运行的行星的交互式实时动画…从哪里开始?,javascript,html,opengl,Javascript,Html,Opengl,我想创建一个基于浏览器的交互式实时动画,根据一天中的时间和一年中的时间,显示地球绕太阳运行的过程。该动画还应该(最终)显示太阳系中的其他行星,用户应该能够在太阳系周围平移,并从不同侧面看到它(通过单击、拖动、滚动等) 我不认为它有任何实际的应用,但我喜欢在宇宙中发现的艺术价值…所以开始做这件事会很有趣,我可能会在做这件事的时候学到一些东西 我对行星物理学没有任何经验,尽管如果有一个好的信息来源,我可能会理解它。我确实有一些web开发经验,使用JavaScript、HTML、CSS和Python等

我想创建一个基于浏览器的交互式实时动画,根据一天中的时间和一年中的时间,显示地球绕太阳运行的过程。该动画还应该(最终)显示太阳系中的其他行星,用户应该能够在太阳系周围平移,并从不同侧面看到它(通过单击、拖动、滚动等)

我不认为它有任何实际的应用,但我喜欢在宇宙中发现的艺术价值…所以开始做这件事会很有趣,我可能会在做这件事的时候学到一些东西

我对行星物理学没有任何经验,尽管如果有一个好的信息来源,我可能会理解它。我确实有一些web开发经验,使用JavaScript、HTML、CSS和Python等语言

现在,问题是:

  • 最重要的是,我将如何开始一个新的工作 像这样的项目

  • 我从哪里获得有关的信息 地球和地球的自转 太阳系中的其他行星

  • 我应该使用/学习什么语言

  • 你还有什么想法 这个主意?你有什么功能 我想对一个年轻人来说会很有趣 像这样的项目

这个想法是非常冲动的,尤其是在一天的这个深夜…当我看着窗外,看到建筑物越来越暗,我也在想象地球是如何慢慢地围绕着自己旋转,也围绕着太阳旋转,我认为从外部的角度来看这将是一个非常好的景象


希望得到一些反馈。干杯

一个问题有很多问题;)

无论如何,我会先做一些计划:将大任务划分为子任务(例如天体力学(“行星如何运动”),用代码表示,用3D渲染,纹理和着色,动画?),然后开始研究/处理这些任务,遇到问题时请回到这里。语言并不重要,真的-任何允许你渲染3D场景的东西都可以


也许你可以适应你的项目——毕竟,它确实提供了一个从空间某个点到某个方向的视角。它的目的是从另一个角度看——从地球向外看,但我认为代码分叉可能是可行的。

如果我要这样做,我将从学习如何使用Javascript
canvas
元素来绘制东西开始。编写一些代码,在屏幕上绘制一些行星位置的圆圈/椭圆。然后添加一些动画。最后,我将了解如何使用Javascript进行所有天体力学计算


其他人可能会从天体力学开始,然后再计算出图形。只要选择你觉得“有趣”的部分,就可以投入其中。

听起来像是一个很酷的项目!我会被启发去做的那种(很少完成;-)

首先,你的听众是什么?例如,大多数互联网用户和大多数主要浏览器

我倾向于使用(基于),但这要求您不介意您的艺术作品只在最先进的浏览器中运行,而不是在IE中运行。编程将在JavaScript中完成。然而,这将是一个挑战。我的下一个问题是,在寒冷的早晨,我是否对这个项目有足够的灵感投入大量时间学习语言和图形库

另一个问题是,您是否希望在3D中执行此操作?听起来很像,但太阳系的2D表现也有美学价值,所以值得一问

如果你还没有编程或3D图形方面的经验,你可以考虑一下。它的目标是艺术家而不是程序员,并且它有可以在浏览器中运行的小程序

对于行星,你基本上会做纹理球体,至少从一开始;有关WebGL或O3D,请参见


还做了一个开源太阳能系统模拟项目搜索。。。有很多,你可以偷数学算法。:-)

@Purple,这不是有效SO问题是否具有“现实世界适用性”的标准。公平地说,这个问题相当模糊,没有一个明确的答案。尽管如此,IMHO本身并没有理由关闭它。嗯,有一个交换网站的提议,所以你可以在它启动时解决这个问题。至于如何做到这一点,请查看Stellarium:-(开源)没有答案,因为您不知道任何答案……因为这不是一个项目,由客户支付。这被称为对事物的想象,试图用编程语言和现代技术创造出美丽的事物。是的,我不知道从何处开始一个如此规模的项目,但我相信这里有一些人可以给我指点,为了构建这个项目,应该使用什么语言、框架和源代码。不要因为事情不能“解决真正的工作问题”就那么快地将其忽略。。。将此部分编辑为“更好”…我不是一名web开发人员,因此我无法就特定的web技术和内容向您提供建议。然而,总的来说,IMO最好的方法是从小处着手,逐步添加功能。即,首先实现一个中心球体的视图,另一个在椭圆轨道上围绕中心球体旋转。然后在它们的表面上添加纹理。接下来,添加平移/缩放。等等@Andrei:嗯,我一直在想,“它从空间某处的坐标X、Y、Z生成天空视图(相对于太阳?也许吧);也许它可以改变,使坐标不在地球轨道上,并将地球添加为另一颗行星”非常好,谢谢你的明确回答。所以我从中了解到JS画布适合3D渲染?或者,我猜3D渲染只是根据透视点显示2D图像。3D rend