2.1.17.8.20 ocmath_xyzv_remove_duplicates
Description
This function remove duplicated points and replace duplicated points by nMethod, where 0 means replace with mean, 1=median, 2=min, 3=max, 4=sum
Syntax
int ocmath_xyzv_remove_duplicates( UINT nSize, double * px, double * py, double * pz, double * pv, int nMethod = Replace_With_Mean, double dPrecision = 1.0e-8, bool bSort = TRUE )
Parameters
- nSize
- [modify] on input, size of px, py; on output, number of points in px, py after removed duplicates
- px
- [modify] on input, it contains X coordinate's datas; on output, contains X coordinate's datas removed duplicates
- py
- [modify] on input, it contains Y coordinate's datas; on output, contains Y coordinate's datas removed duplicates
- pz
- [modify] on input, it contains z coordinate's datas; on output, contains z coordinate's datas removed duplicates
- pv
- [modify] on input, it contains v coordinate's datas; on output, contains v coordinate's datas removed duplicates
- nMethod
- [input] replace duplicates methods, where 0 means replace with mean, 1=median, 2=min, 3=max, 4=sum
- dPrecision
- [input] precision to determine whether two points are duplicated or not
- bSort
- [input] if TRUE, will sort pv by px, py and pz.
Return
the number of unique points in (x,y,z,v)
Examples
EX1
//Before running, make sure the active window is a workbook in current project
void ocmath_xyzv_remove_duplicates_ex1()
{
Worksheet wks = Project.ActiveLayer();
wks.SetSize(-1, 8); // To contain the results
Dataset dsX(wks, 0), dsY(wks, 1), dsZ(wks, 2), dsF(wks, 3);
vector vX(dsX), vY(dsY), vZ(dsZ), vF(dsF);
int nSize = vX.GetSize();
double dPrecision = 1e-8;
int iRet = ocmath_xyzv_remove_duplicates(nSize, vX, vY, vZ, vF, Replace_With_Mean, dPrecision);
printf("%d points removed.\n", nSize - iRet);
//Output results to Cols 3, 4, 5.
vX.SetSize(iRet); vY.SetSize(iRet); vZ.SetSize(iRet); vF.SetSize(iRet);
dsX.Attach(wks, 4); dsY.Attach(wks, 5); dsZ.Attach(wks, 6); dsF.Attach(wks, 7);
dsX.SetSize(0); dsY.SetSize(0); dsZ.SetSize(0); dsF.SetSize(0);
dsX.Append(vX); dsY.Append(vY); dsZ.Append(vZ); dsF.Append(vF);
}
// At the end of example:
Remark
See Also
Header to Include
origin.h
Reference
|