private double[,] GetMdz()
{
double[,] mt = {{ -Math.Sin(rz), Math.Cos(rz), 0 },
{ -Math.Cos(rz), -Math.Sin(rz), 0 },
{ 0, 0, 0 }};
double[,] m=new double[3,3];
MatrixTool.Multi(mt,GetMy(),ref m);
MatrixTool.Multi(m,GetMx(),ref m);
return m;
}
private double[,] specialMulti(double[,] m,double[,] X)
{
int rowNumM=m.GetLength(0);
int colNumM=m.GetLength(1);
int rowNumX=X.GetLength(0);
int colNumX=X.GetLength(1);
int lines=rowNumX/colNumM;
double[,] mt=MatrixTool.Init(rowNumM,colNumX);
double[,] subX=MatrixTool.Init(colNumM,colNumX);
double[,] res=MatrixTool.Init(rowNumM*lines,colNumX);
for(int i=0;i<lines;i++)
{
MatrixTool.CopySub(X,i*colNumM,0,colNumM,colNumX,ref subX,0,0);
MatrixTool.Multi(m,subX,ref mt);
MatrixTool.CopySub(mt,0,0,rowNumM,colNumX,ref res,i*rowNumM,0);
}
return res;
}
private double[,] specialSub(double[,] m,double[,] X)
{
int rowNumM=m.GetLength(0);
int colNumM=m.GetLength(1);
int rowNumX=X.GetLength(0);
int colNumX=X.GetLength(1);
int lines=rowNumX/rowNumM;
double[,] subX=MatrixTool.Init(rowNumM,colNumX);
double[,] res=MatrixTool.Init(rowNumX,colNumX);
for(int i=0;i<rowNumX;i+=rowNumM)
{