Создать фрактал с использованием 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);
}