还记得上次那个用ASCII实现光线追踪技术的国外小哥吗?
没错,他又有新动作了!
这次,他再一次使用ASCII码模拟了碰撞的星系,同样,全过程都是用C++实现的。
毫无疑问,这个最新的项目一经出现,就在Reddit上收揽了2.5K+热度。
下图就是星球即将碰撞的一瞬间:
此外,小哥还模仿了两颗星球在相反方向进行旋转的过程:
//
用牛顿引力定律助力星系碰撞
这些神奇的效果是怎么实现的呢?
小哥在他的视频里简单介绍了一下基本的过程和原理:
首先,使用牛顿引力定律,他实现了重力的模拟。
使用这个公式,他就可以预测任何数量的物体的运动趋势:
下图还模拟了日地月三个星球的运动状态:
整个实验的代码地址:
github.com/DinoZ1729/Galaxy
诸多项目妙趣横生,只有想不到没有做不到
除此之外,小哥还放上了另外三个项目的视频链接:
一个是「在c++控制台模拟10,000双摆」:
视频链接:
https://www.youtube.com/watch?v=DMOK5BS6KJw
下面是一个双摆的运动状态:
/
下图是两个双摆:
下面是10000个双摆的运动情况:
这个项目是「Boids |模拟鱼类和鸟类的运动」:
视频链接:
https://www.youtube.com/watch?v=mev2cgRN9Zo
下图是鱼群和鸟群的运动状态:
他使用了三种简单的规则来模拟运动状态:
而没有了这三种规则的限制,情况会是下图这样:
可以看出,在没有规则的限制下,运动轨迹会是完全混乱的。
此外,这个小哥还在他的github和youtube频道上持续更新最新的项目和视频,感兴趣的小伙伴可以前去持续关注哦!
参考链接:
https://www.reddit.com/r/programming/comments/l3f5v4/i_created_an_ascii_simulation_of_colliding/