Создать фрактал с использованием IFS

Я работаю с фракталами с тех пор, как несколько недель назад... Я знаю теорию системы итеративных функций, и я мог бы создавать простые фракталы (в javascript), такие как Fern, Levi Curve, Dragons... Но я пытаюсь применить эта теория к цифровому изображению, то есть с учетом изображения применяют IFS, а затем получают фрактал изображения. Однако я застрял: во-первых, я не знаю, может ли JavaScript помочь мне в этом. Я надеюсь, что вы могли бы помочь мне с кодом или рекомендацией по языку. Спасибо:)

PS. Вот код фрактала Ферн (извлечен для математического кода)

var canvas  = document.getElementById("canvas"),
    context = canvas.getContext("2d"),
    width   = canvas.width  = window.innerWidth,
    height  = canvas.height = window.innerHeight;
var rules = [{
    a:0, b:0, c:0, d:0.16,
    tx:0.203, ty:-0.035,
    p:0.01,
    color:"yellow"
}, {
    a:0.2, b:0.26, c:-0.23, d:0.22,
    tx:0.173, ty:1.628,
    p:0.07,
    color:"blue"
}, {
    a:-0.15, b:-0.28, c:-0.26, d:0.24,
    tx:0.222, ty:0.465,
    p:0.07,
    color:"red"
}, {
    a:0.85, b:-0.04, c:0.04, d:0.85,
    tx:0.029, ty:1.597,
    p:0.85,
    color:"green"
}];

var x = Math.random(),
    y = Math.random();

context.translate(width / 2, height);
iteracion();
function iteracion(){
    for (var i=0; i<150; i++) {
        var rule = getRule(),
            x1 = x*rule.a + y*rule.b + rule.tx,
            y1 = x*rule.c + y*rule.d + rule.ty
        x = x1;
        y = y1;
        plot(x, y, rule.color);
    }
    requestAnimationFrame(iteracion);
}
function getRule() {
    var rand = Math.random();
    for (var i=0; i<rules.length; i++) {
        var rule = rules[i];
        if (rand < rule.p) {
            return rule;
        }
        rand -= rule.p
    }
}
function plot(x, y, color) {
    context.fillStyle = color;
    context.fillRect(x*60, -y*60, 1, 1);
}

0 ответов

Другие вопросы по тегам