Цветовая интерполяция с набором 2D точек - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь смоделировать физическую проблему фотоупругости на поверхности. Мне удается получить массив X, Y - координат поверхности, и для каждой точки у меня есть соответствующий цвет в формате RGB. Я использовал Python scatter для построения графика, и результат уже отличный, но все еще есть некоторые разрывы из-за отсутствия разрешения, которое я не могу улучшить :( Я просто хотел спросить, как можно непрерывно генерировать один и тот же график поверхности (с новые промежуточные точки, для которых их цвет интерполирован по отношению к точкам соседства. Я не обязательно ищу кодирование на python, приветствуется любое программное обеспечение. Спасибо!

1 Ответ

0 голосов
/ 17 апреля 2019

Я написал это в javascript: https://jsfiddle.net/87nw05kz/

Важная часть - CalculateColor.Он находит обратный квадрат расстояния до каждого цвета от затененного пикселя и использует его, чтобы определить, на какой пиксель должен воздействовать каждый цвет.

function calculateColor(x, y) {
    let total = 0;
    for (let i = 0; i < colors.length; i++) {
        let c = colors[i];
        let d = distance(c.x, c.y, x, y);
        if (d === 0) {
            return c;
        }
        d = 1 / (d * d);
        c.d = d;
        total += d;
    }
    let r = 0, g = 0, b = 0;
    for (let i = 0; i < colors.length; i++) {
        let c = colors[i];
        let ratio = c.d / total;
        r += ratio * c.r;
        g += ratio * c.g;
        b += ratio * c.b;
    }
    r = Math.floor(r);
    g = Math.floor(g);
    b = Math.floor(b);
    return {r:r,g:g,b:b};
}
...