function pedalIFS(A, B, C) {
let a = Math.sqrt((B[0] - C[0]) ** 2 + (B[1] - C[1]) ** 2);
let b = Math.sqrt((A[0] - C[0]) ** 2 + (A[1] - C[1]) ** 2);
let c = Math.sqrt((A[0] - B[0]) ** 2 + (A[1] - B[1]) ** 2);
let alpha = (b ** 2 + c ** 2 - a ** 2) / (2 * b * c);
let beta = (a ** 2 + c ** 2 - b ** 2) / (2 * a * c);
let gamma = (a ** 2 + b ** 2 - c ** 2) / (2 * a * b);
if (alpha > 0 && beta > 0 && gamma > 0) {
let AB = [B[0] - A[0], B[1] - A[1]];
let AC = [C[0] - A[0], C[1] - A[1]];
let fa = scale(alpha, A).compose(flip(AB, AC, A));
let BA = [A[0] - B[0], A[1] - B[1]];
let BC = [C[0] - B[0], C[1] - B[1]];
let fb = scale(beta, B).compose(flip(BA, BC, B));
let CA = [A[0] - C[0], A[1] - C[1]];
let CB = [B[0] - C[0], B[1] - C[1]];
let fc = scale(gamma, C).compose(flip(CA, CB, C));
return new IteratedFunctionSystem([fa, fb, fc]);
} else {
throw "Non accute triangle";
}
}