FunctionImage applies one of the following functions to an image: Polynomial, Sinusoid, Arctan, Arcsin to generate a gradient image with varying intensity. The image below shows the generated gradient, and an analysis of the image generated (the red line) to make it easier to see the gradient
FUNCTION_SINUSOID Intensity = f3 * sin(f1 * (x + f2)) + f4

value = amplitude * sin(2*PI( freq*value + phase/360 ) ) + bias

f1 - Frequency of wave
f2 - Start angle, default = 0
f3 - Amplitude, default = 0.5
f4 - Constant waves are applied to, default = 0.5

Function
First term
Second term
Third term
Fourth term
FunctionImage applies one of the following functions to an image: Polynomial, Sinusoid, Arctan, Arcsin to generate a gradient image with varying intensity. The image below shows the generated gradient, and an analysis of the image generated (the red line) to make it easier to see the gradient
FUNCTION_SINUSOID Intensity = f3 * sin(f1 * (x + f2)) + f4

value = amplitude * sin(2*PI( freq*value + phase/360 ) ) + bias

f1 - Frequency of wave
f2 - Start angle, default = 0
f3 - Amplitude, default = 0.5
f4 - Constant waves are applied to, default = 0.5
        //Example 1 - Polynomial

        $imagick = new \Imagick();
        $imagick->newPseudoImage(500, 500, 'gradient:black-white');
        $arguments = array(
            $this->control->getFirstTerm(),
        );

        $secondTerm = $this->control->getSecondTerm();
        $thirdTerm = $this->control->getThirdTerm();
        $fourthTerm = $this->control->getFourthTerm();
        if (strlen($secondTerm)) {
            $arguments[] = $secondTerm;
            if (strlen($thirdTerm)) {
                $arguments[] = $thirdTerm;
                if (strlen($fourthTerm)) {
                    $arguments[] = $fourthTerm;
                }
            }
        }

        $imagick->functionImage(\Imagick::FUNCTION_POLYNOMIAL, $arguments);
        $imagick->setimageformat('png');

        Image::analyzeImage($imagick, 512, 256);
        //Example 2 - Sinusoid

        $imagick = new \Imagick();
        $imagick->newPseudoImage(500, 500, 'gradient:black-white');
        $arguments = array(
            $this->control->getFirstTerm(),
        );

        $secondTerm = $this->control->getSecondTerm();
        $thirdTerm = $this->control->getThirdTerm();
        $fourthTerm = $this->control->getFourthTerm();
        if (strlen($secondTerm)) {
            $arguments[] = $secondTerm;
            if (strlen($thirdTerm)) {
                $arguments[] = $thirdTerm;
                if (strlen($fourthTerm)) {
                    $arguments[] = $fourthTerm;
                }
            }
        }

        $imagick->functionImage(\Imagick::FUNCTION_SINUSOID, $arguments);
        $imagick->setimageformat('png');

        Image::analyzeImage($imagick, 512, 256);
        //Example 3 - ArcTan

        $imagick = new \Imagick();
        $imagick->newPseudoImage(500, 500, 'gradient:black-white');
        $arguments = array(
            $this->control->getFirstTerm(),
        );

        $secondTerm = $this->control->getSecondTerm();
        $thirdTerm = $this->control->getThirdTerm();
        $fourthTerm = $this->control->getFourthTerm();
        if (strlen($secondTerm)) {
            $arguments[] = $secondTerm;
            if (strlen($thirdTerm)) {
                $arguments[] = $thirdTerm;
                if (strlen($fourthTerm)) {
                    $arguments[] = $fourthTerm;
                }
            }
        }

        $imagick->functionImage(\Imagick::FUNCTION_ARCTAN, $arguments);
        $imagick->setimageformat('png');

        Image::analyzeImage($imagick, 512, 256);
        //Example 4 - ArcSin 

        $imagick = new \Imagick();
        $imagick->newPseudoImage(500, 500, 'gradient:black-white');
        $arguments = array(
            $this->control->getFirstTerm(),
        );

        $secondTerm = $this->control->getSecondTerm();
        $thirdTerm = $this->control->getThirdTerm();
        $fourthTerm = $this->control->getFourthTerm();
        if (strlen($secondTerm)) {
            $arguments[] = $secondTerm;
            if (strlen($thirdTerm)) {
                $arguments[] = $thirdTerm;

                if (strlen($fourthTerm)) {
                    $arguments[] = $fourthTerm;
                }
            }
        }

        $imagick->functionImage(\Imagick::FUNCTION_ARCSIN, $arguments);
        $imagick->setimageformat('png');

        Image::analyzeImage($imagick, 512, 256);