【お知らせ】この部分は英語原文のみでの提供となります。何卒ご了承ください。
2.2.4.28.52 MatrixObject::SetXY
Contents
Description
Set matrix object xy mapping coordinates
Syntax
BOOL SetXY( double dXMin, double dYMin, double dXMax, double dYMax, BOOL bUndo = FALSE )
Parameters
- dXMin
- [input] map 1st column (0) of matrix to this X value
- dYMin
- [input] map 1st row (0) of matrix to this Y value
- dXMax
- [input] map last column (nCols-1) of matrix to this X value
- dYMax
- [input] map last row (nRows-1) of matrix to this Y value
- bUndo
- [input] Whether to support Undo (TRUE) or not (FALSE).
- Its default value is FALSE.
Return
FALSE if dXMin == dXMax or dYMin == dYMax, otherwise return TRUE
Examples
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; }
Remark
Set matrix object xy mapping coordinates. All matrices have linearly mapped values for columns and rows.
See Also
MatrixObject::GetXY, Matrix::GetXMax, Matrix::GetYMin, Matrix::GetYMax, Matrix::SetXMin, Matrix::SetYMin, Matrix::SetXMax, Matrix::SetYMax
Header to Include
origin.h