【问题标题】:Mandelbrot set program not working in JS fiddleMandelbrot 设置程序在 JS 小提琴中不起作用
【发布时间】:2015-05-28 02:41:25
【问题描述】:

我的脚本标签标签包含一个名为math.js 的数学库,它可以处理复数和其他高级数学函数。

i = 0;
z = math.complex(0, 0);
c = math.complex(-0.75, -0.1);
function Mandelbrot() {
    function Magnitude() {
        a = z.re;
        b = z.im;
        return(math.sqrt(math.pow(a, 2) + math.pow(b, 2)));
    }
    while (Magnitude() <= 2 && i < 100) {
        z = math.pow(z, 2) + c;
        i++;
    }
    alert(i)
}
Mandelbrot();

这个程序应该是我正在制作的用于绘制 Mandelbrot 集的程序的基础。

这里是小提琴的链接:https://jsfiddle.net/noahthefuzzy/ryvtL3Lq/1/

【问题讨论】:

  • z 是一个对象。你不能提升一个物体的力量。换句话说...math.pow(z, 2) 正在抛出错误...
  • 虽然,其实不是Math.pow,而是这个库math.pow的东西……和z在那个时候被定义了……
  • 我进行了建议的更改。这是新的小提琴:jsfiddle.net/noahthefuzzy/ryvtL3Lq/2 仍然不起作用
  • @Liam 忘记这些变化......如果math.pow 可以处理复数,那就没问题了。问题是 z 在那一点上是未定义的……

标签: javascript jsfiddle fractals math.js


【解决方案1】:

你需要使用math.add而不是+来添加c,因为c是一个存储复数的对象:

z = math.add(math.pow(z, 2), c);

【讨论】:

  • 我就是这么想的。当math.pow(z, 2) + c 执行时,他得到"0-0.75 - 0.1i"。他需要再次将其解析为复数。
  • 非常感谢。如果你有兴趣,我正在做一个愚蠢的数学艺术项目,我想我会让它变得很酷
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多