Как реализовать эффект воды на Canvas?

Пользователь

от rodrigo_renner , в категории: Компьютерные технологии , год назад

Как реализовать эффект воды на Canvas?

Facebook Vk Ok Twitter Telegram Whatsapp

1 ответ

Пользователь

от nikita.harvey , год назад

@rodrigo_renner 

Для реализации эффекта воды на Canvas можно использовать технику смещения с помощью шума Перлина и функции синуса. Вот пример кода на JavaScript:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");

var noise = function(x, y) {
    return Math.random() * Math.sin(x * 0.01) * Math.sin(y * 0.01) * 10;
};

var water = function() {
    for (var x = 0; x < canvas.width; x++) {
        for (var y = 0; y < canvas.height; y++) {
            var nx = x + noise(x, y);
            var ny = y + noise(x, y);
            var seed = Math.floor(Math.abs(noise(nx, ny)));
            ctx.fillStyle = (seed % 2 === 0) ? "#0077be" : "#04a2ff";
            ctx.fillRect(x, y, 1, 1);
        }
    }
};

water();


Этот код создает функцию noise для генерации шума Перлина, а также функцию water, которая использует этот шум, чтобы создать эффект воды. Функция water проходит через каждую точку на холсте, применяет шум для смещения координат x и y и использует семена шума для определения цвета каждой точки. Результатом будет текстура водной поверхности.