Проблема с портированием SVG композиции стандарта в Matlab - PullRequest
0 голосов
/ 04 июня 2019

Я перенес большинство из 24 методов из стандарта композиции SVG (2009, https://www.w3.org/TR/2009/WD-SVGCompositing-20090430/) в Matlab, но четыре метода (например, color-dodge) используют для сравнения изображений в операторе if (например: if Sca == Sa && Dca == 0 ...) но Matlab рассматривает это как нескалярные операторы.

Sc, Dc - изображения RGB Sa, Da - серые маски, представляющие альфа-каналы. Dca, Sca - это предварительно умноженные изображения: Dca = Dc. * Da; Sca = Sc. * Sa;

if strcmp(compo_meth, 'color-dodge') == 1; 
    if Sca == Sa && Dca == 0
        Dca = (1 - Da) .* Sca;
    elseif Sca == Sa
        Dca = Sa .* Da + (1 - Da) .* Sca + (1 - Sa) .* Dca;
    elseif Sca < Sa
        Dca = Sa .* Da .* min(1, Dca/Da .* Sa/(Sa - Sca));
    end
    Da  = Sa + Da - Sa .* Da;
end

ошибка в если Sca == Sa && Dca == 0

Операнды к || и операторы && должны быть преобразованы в логические скалярные значения

...