Set matrix object xy mapping coordinates
BOOL SetXY( double dXMin, double dYMin, double dXMax, double dYMax, BOOL bUndo = FALSE )
FALSE if dXMin == dXMax or dYMin == dYMax, otherwise return TRUE
EX1
// Create a new matrix window, // set the number of rows and columns and the XY mapping // and fill the matrix void MatrixObject_SetXY_Ex1(int nr = 32, int nc = 24, double xmin = -10, double xmax = 20, double ymin = -2.3, double ymax = 12.4) { MatrixPage mp; mp.Create("Origin", CREATE_HIDDEN); MatrixLayer ml = mp.Layers(); MatrixObject mo = ml.MatrixObjects(0); mo.SetSize(nr, nc); mo.SetXY(xmin, ymin, xmax, ymax); Matrix& mat = mo.GetDataObject(); double xinc = (xmax-xmin)/nc; double yinc = (ymax-ymin)/nr; for(int ii = 0; ii < nr; ii++) { for(int jj = 0; jj < nc; jj++) { double x = xmin + xinc * jj; double y = ymin + yinc * ii; mat[ii][jj] = sin(x) + cos(y); } } mp.SetShow(); }
EX2
void lowpass_filter(int nRows = 512, int nCols = 640, double cutoff = 0.5, int n = 1) { string strLowpassButterworth = "1/(1+ (sqrt(x^2+y^2)/cutoff)^(2*N))"; MatrixLayer ml1 = Project.ActiveLayer(); MatrixObject mo = ml1.MatrixObjects(0); double d1 = GetTickCount(); int nErr = make_filter_2D(strLowpassButterworth, mo, nRows, nCols, cutoff, n); if(nErr != 0) out_int("err = ", nErr); } int make_filter_2D(LPCSTR lpcszExpression, MatrixObject& mo, int nRows, int nCols, double cutoff, int nn) { if(cutoff < 0 || cutoff > 0.5) return -1; if(nn < 1) return -2; // just incase matrix was not double, force it to be so mo.SetInternalData(FSI_DOUBLE, false, false); mo.SetSize(nRows, nCols, 0);// no need to restore or init to be faster //normaliz to +-0.5 for both rows and cols mo.SetXY(-0.5, -0.5, 0.5, 0.5); //define cutoff and nn to as LT variable string strBeforeScript; strBeforeScript.Format("cutoff=%g; \r\n n=%d;", cutoff, nn); string strFormula = (string)lpcszExpression + STR_COL_FORMULAR_SEPARATOR + strBeforeScript; mo.SetFormula(strFormula); mo.ExecuteFormula(0, -1, false);// disable undo to make it faster return 0; }
Set matrix object xy mapping coordinates. All matrices have linearly mapped values for columns and rows.
MatrixObject::GetXY, Matrix::GetXMax, Matrix::GetYMin, Matrix::GetYMax, Matrix::SetXMin, Matrix::SetYMin, Matrix::SetXMax, Matrix::SetYMax
origin.h