专栏名称: 前端外刊评论
最新、最前沿的前端资讯,最有深入、最干前端相关的技术译文。
目录
相关文章推荐
前端之巅  ·  苹果12年首次大改UI,还炮轰“跨平台”框架 ... ·  6 小时前  
程序员好物馆  ·  只用一行 CSS,秒解决布局难题 ·  12 小时前  
前端早读课  ·  【第3526期】通过 MCP ... ·  昨天  
阿杜书馆  ·  5个儿子养不了一个妈! ... ·  2 天前  
阿杜书馆  ·  5个儿子养不了一个妈! ... ·  2 天前  
51好读  ›  专栏  ›  前端外刊评论

那么,来用 JS 画个黑洞吧!

前端外刊评论  · 公众号  · 前端  · 2019-04-11 08:25

正文

请到「今天看啥」查看全文


* Math . PI / 180 ,

  • startRadius ,

  • 0 ,

  • 10 * Math . PI );

  • 要能把产生 xy 坐标绘制出来看到环绕黑洞的路径就好了。用下面这个方法可以实现:

    1. var getXYPhotonPathFromSolution = function (sol) {

    2. // Note: transpose(sol.y)[0] contains the u values. 

    3. // transpose(sol.y)[1] contains u_prime values.

    4. var rValues = numeric.transpose(sol.y)[0]

    5. .map(function (u) {

    6. // we want the radius r = 1/u

    7. return 1 / u;

    8. });

    9. var phiValues = sol.x;

    10. var photonPath = [];

    11. for (var i = 0; i < rValues.length; i++) {

    12. // Negative r is nonsensical, and this can occur as

    13. // radius goes to infinity. Stop when you start

    14. // hitting infinity

    15. if (rValues[i] < 0) break;

    16. var x = rValues[i] * Math.cos(phiValues[i]);

    17. var y = rValues[i] * Math.sin(phiValues[i]);

    18. photonPath.push([x, y]);

    19. }

    20. return photonPath;

    21. }

    终于,我们可以使用 numeric.js 的试验台 REPL 标出光子路径的 xy 坐标了。你需要把之前的函数拷贝到 REPL 中,这样你才可以在上面的函数中使用它们。

    为了在 REPL 中绘制答案,我们需要完成几个操作:如果把绘图的边界定死就可以很容易地看到结果,因此我们首先设置绘图默认的边界。接着,创建两个解,一个是 15° 角的光线,另一个是 40° 角。然后,我们获取这两个解的光子的 xy 路径。最后,绘制结果。

    1. > var plotOptions = { xaxis: { min: -20, max: 20 }, yaxis: { min: -20, max: 20 } }

    2. > var sol1 = getBlackHoleSolution(15 * Math.PI / 180, startRadius







    请到「今天看啥」查看全文