mandelbrot-js
Version:
mandelbrot-js =======
63 lines (62 loc) • 2.46 kB
JavaScript
;
/**
* Project Mandelbrot
*
* @author Moin Khan
* @copyright Moin Khan
*
* @link https://mo.inkhan.dev
*
*/
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _Mandelbrot_instances, _Mandelbrot_getNextCordinates;
Object.defineProperty(exports, "__esModule", { value: true });
const complex_1 = require("./complex");
class Mandelbrot {
constructor(MAX_ITERATIONS) {
_Mandelbrot_instances.add(this);
this.MAX_ITERATIONS = MAX_ITERATIONS !== null && MAX_ITERATIONS !== void 0 ? MAX_ITERATIONS : 100;
}
/**
* The orbit of the critical point z=0 under iteration of the quadratic map
*
* @param {ICordinate} number Complex number
*
* @return {ICordinate[]} The sequence
*
*/
getOrbit(number) {
let value = [0, 0];
let values = [];
for (let i = 0; i <= this.MAX_ITERATIONS; i++) {
value = __classPrivateFieldGet(this, _Mandelbrot_instances, "m", _Mandelbrot_getNextCordinates).call(this, value, number);
values.push(value);
}
return values;
}
/**
* Check if the given complex number is a part of the Mandelbrot set
*
* @param {ICordinate} number Complex number
*
* @return {[boolean, number]} The sequence
*
*/
isMandelbrot(number) {
let value = [0, 0];
for (let i = 0; i <= this.MAX_ITERATIONS; i++) {
value = __classPrivateFieldGet(this, _Mandelbrot_instances, "m", _Mandelbrot_getNextCordinates).call(this, value, number);
if ((0, complex_1.complexMod)(value) > 2)
return [false, i];
}
return [true, this.MAX_ITERATIONS];
}
}
_Mandelbrot_instances = new WeakSet(), _Mandelbrot_getNextCordinates = function _Mandelbrot_getNextCordinates(current, number) {
return (0, complex_1.complexADD)((0, complex_1.complexSquare)(current), number);
};
exports.default = Mandelbrot;