コード例 #1
0
ファイル: DFT.cpp プロジェクト: mit-gfx/ImageStack
bool FFTConvolve::test() {
    Image im(17, 34, 8, 2);
    Image kernel(5, 7, 3, 2);
    Noise::apply(im, 0, 1);
    Noise::apply(kernel, 0, 1);
    // Make the kernel lopsided to check for flipping issues
    kernel(0, 0, 0, 0) = 17;

    Convolve::BoundaryCondition b[] = {Convolve::Clamp, Convolve::Wrap, Convolve::Zero, Convolve::Homogeneous};
    Multiply::Mode m[] = {Multiply::Outer, Multiply::Elementwise, Multiply::Inner};
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 3; j++) {
            Image fa = FFTConvolve::apply(im, kernel, b[i], m[j]);
            Image a = Convolve::apply(im, kernel, b[i], m[j]);
            if (!nearlyEqual(a, fa)) return false;
        }
    }

    return true;
}
コード例 #2
0
static bool parallel(const GrDrawState::Edge& a, const GrDrawState::Edge& b) {
    return (nearlyEqual(a.fX, b.fX) && nearlyEqual(a.fY, b.fY)) ||
           (nearlyEqual(a.fX, -b.fX) && nearlyEqual(a.fY, -b.fY));
}
コード例 #3
0
static bool nearlyEqual(const GrPoint& a, const GrPoint& b) {
    return nearlyEqual(a.fX, b.fX) && nearlyEqual(a.fY, b.fY);
}