Azmyth.Procedural.SimplexValueNoise.kernels C# (CSharp) Метод

kernels() приватный Метод

private kernels ( double dx, double dy, byte h1, byte h2, byte h3, byte h4, byte h5, byte h6, byte h7, byte h8, byte h9, byte h10, byte h11, byte h12 ) : double
dx double
dy double
h1 byte
h2 byte
h3 byte
h4 byte
h5 byte
h6 byte
h7 byte
h8 byte
h9 byte
h10 byte
h11 byte
h12 byte
Результат double
        private double kernels(double dx, double dy,
		    byte h1, byte h2, byte h3, byte h4, byte h5, byte h6,
		    byte h7, byte h8, byte h9, byte h10, byte h11, byte h12)
        {
            double value = 0;
            double dxv, dyv, attn;

            dxv = dx + 1 + 2 * STRETCH_CONSTANT; dyv = dy + 1 + 2 * STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            if (attn > 0) {
                attn *= attn;
                value += attn * attn * h1;
            }

            dxv = dx + 0 + STRETCH_CONSTANT; dyv = dy + 1 + STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            // if (attn > 0) {
                attn *= attn;
                value += attn * attn * h2;
            // }

            dxv = dx - 1; dyv = dy + 1;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            if (attn > 0) {
                attn *= attn;
                value += attn * attn * h3;
            }

            dxv = dx + 1 + STRETCH_CONSTANT; dyv = dy + 0 + STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            if (attn > 0) {
                attn *= attn;
                value += attn * attn * h4;
            }

            dxv = dx + 0; dyv = dy + 0;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            // if (attn > 0) {
                attn *= attn;
                value += attn * attn * h5;
            // }

            dxv = dx - 1 - STRETCH_CONSTANT; dyv = dy + 0 - STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            // if (attn > 0) {
                attn *= attn;
                value += attn * attn * h6;
            // }

            dxv = dx - 2 - 2 * STRETCH_CONSTANT; dyv = dy + 0 - 2 * STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            if (attn > 0) {
                attn *= attn;
                value += attn * attn * h7;
            }

            dxv = dx + 0 - STRETCH_CONSTANT; dyv = dy - 1 - STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            // if (attn > 0) {
                attn *= attn;
                value += attn * attn * h8;
            // }

            dxv = dx - 1 - 2 * STRETCH_CONSTANT; dyv = dy - 1 - 2 * STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            // if (attn > 0) {
                attn *= attn;
                value += attn * attn * h9;
            // }

            dxv = dx - 2 - 3 * STRETCH_CONSTANT; dyv = dy - 1 - 3 * STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            // if (attn > 0) {
                attn *= attn;
                value += attn * attn * h10;
            // }

            dxv = dx - 1 - 3 * STRETCH_CONSTANT; dyv = dy - 2 - 3 * STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            if (attn > 0) {
                attn *= attn;
                value += attn * attn * h11;
            }

            dxv = dx - 2 - 4 * STRETCH_CONSTANT; dyv = dy - 2 - 4 * STRETCH_CONSTANT;
            attn = KERNEL_RADIUS - dxv * dxv - dyv * dyv;
            if (attn > 0) {
                attn *= attn;
                value += attn * attn * h12;
            }

            return value;
        }