2.1.11.18 ocmath_polynomial
Description
This function constructs a polynomial curve
Syntax
bool ocmath_polynomial( const double * pX, double * pY, uint nSize, const double * pParas, int nOrder )
Parameters
- pX
- [input] pointer to X vector data, must have nSize values
- pY
- [output] pointer to resulting vector data, must have been allocated with nSize values, and they are replaced by the polynomial values for each pX values
- nSize
- [input] vector size of both pY and pX
- pParas
- [input] pointer to the vector to hold the polynomial coefficients, P[0], P[1] etc
- nOrder
- [input] polynomial order, pParas must hold (nOrder + 1) values
Return
Returns TRUE on success and FALSE on failure.
Examples
EX1
void ocmath_polynomial_ex1()
{
GraphLayer gl = Project.ActiveLayer();
if(!gl)
return;
using cc = Project.ActiveCurveBase();
string strCuvName = cc.GetName();
if(strCuvName.IsEmpty())
return;
// First create a copy of the data curve for further processing
Curve crvDataCopy(cc);
double coeff[3];
fitpoly(crvDataCopy, 2, coeff); // fit 2nd order
double x1, x2;
Curve_MinMax(&crvDataCopy, &x1, &x2, FALSE);
int npts = 300;
vector vx;
vx.Data(x1, x2, (x2-x1)/(npts-1));
vector vy(vx.GetSize());
ocmath_polynomial(vx, vy, vx.GetSize(), coeff, 2);
// plot the polynomial with a new hidden wks
Worksheet wks;
wks.Create(NULL, CREATE_HIDDEN);
wks.SetSize(vx.GetSize(), 2);
DataRange drOut;
drOut.Add("X", wks, 0, 0, -1, 0);
drOut.Add("Y", wks, 0, 1, -1, 1);
drOut.SetData(&vy, &vx);
int nPlot = gl.AddPlot(drOut, IDM_PLOT_LINE);
DataPlot dp = gl.DataPlots(nPlot);
dp.SetColor(1); // red
}
Remark
See Also
Header to Include
origin.h
Reference
|