#ifndef AURORA_FUNCTION3D_H
#define AURORA_FUNCTION3D_H


#include "Matrix.h"
#include "Function1D.h"

namespace Aurora {

    /**
     * 创建全部为1的数组，矩阵
     * @param aRow 行数，必须大于0
     * @param aColumn 列数，必须大于0
     * @param aSlice 层数
     * @return 全部为1的数组，矩阵
     */
    Matrix ones(int aRow, int aColumn, int aSlice = 0);

    /**
     * 创建全部为1的方阵
     * @param aSquareRow
     * @return 全部为1的方阵
     */
    Matrix ones(int aSquareRow);

    /**
     * 创建全部为0的数组，矩阵
     * @param aRow 行数，必须大于0
     * @param aColumn 列数，必须大于0
     * @param aSlice 层数
     * @return 全部为0的数组，矩阵
     */
    Matrix zeros(int aRow, int aColumn, int aSlice = 0);

    /**
     * 创建全部为0的方阵
     * @param aSquareRow
     * @return 全部为0的方阵
     */
    Matrix zeros(int aSquareRow);
    Matrix interp3(const Matrix& aX, const Matrix& aY, const Matrix& aZ, const Matrix& aV, const Matrix& aX1, const Matrix& aY1, const Matrix& aZ1,InterpnMethod aMethod);
    Matrix interpn(const Matrix& aX, const Matrix& aY, const Matrix& aZ, const Matrix& aV, const Matrix& aX1, const Matrix& aY1, const Matrix& aZ1,InterpnMethod aMethod);

    Matrix size(const Matrix &aMatrix);
};


#endif //AURORA_FUNCTION3D_H
