function [image] = MakeSineImage(freqi,freqj,nRowPixels,nColPixels,centerRowPixel,centerColPixel)
% [image] = MakeSineImage(freqi,freqj,nRowPixels,[nColPixels],[centerRowPixel],[centerColPixel])
%
% Computes a two-dimensional sine function image.
%
% The image has dimensions nRowPixels by nColPixels.
% If nColPixels is omitted, a square image is returned.
%
% If you want to pass centerRowPixel, you must pass nColPixels.
% centerRowPixel and centerColPixel each default to zero if not passed.
%
% 8/15/94		dhb		Both row and column dimensions used if passed.
%				dhb		Changed zero frequency convention.
% 6/20/98       dhb, mw Fixed error in zero handling case.
% 9/07/23       dhb     Allow passing of center row and column pixels,
%                       leaving previous behavior unaffected

% Set column pixels for square image if it wasn't passed.
if (nargin <= 3)
	nColPixels = nRowPixels;
end

if (nargin <= 4)
	centerRowPixel = 0;
    centerColPixel = 0;
end

if (nargin <= 5)
    centerColPixel = 0;
end

x = 1:nColPixels;
y = 1:nRowPixels;
usefreqi = 2*pi*freqi/nRowPixels;
usefreqj = 2*pi*freqj/nColPixels;

% Handle zero frequency case
if (usefreqj == 0 && usefreqi ~= 0)
	sinx = ones(size(x));
else
	sinx = sin(usefreqj*(x-centerColPixel));
end

% Handle zero frequency case
if (usefreqi == 0 && usefreqj ~= 0)
	siny = ones(size(y));
else
	siny = sin(usefreqi*(y-centerRowPixel));
end

% Build composite image
image = siny'*sinx;