# IPolynomialXform Interface

## Members

Name Description ApplyRotation Applies a rotation to the polynomial. ApplyScale Applies a scale to the polynomial. ApplyShift Applies a shift to the polynomial. CheckResidualRMS Gets the residuals and RMS using checking points. DefineFromCoefficients Defines a polynomial XForm from polynomial (order: 0-3) coefficients . DefineFromControlPoints Defines a polynomial (order: 0-3) XForm from control points. Domains The domains in output space. GetCoefficients Gets the coefficients of the polynomial. GetControlPoints Gets control points used in defining the polynomial. GetSystemResidual Gets the system residuals. GetSystemRMS Gets the system RMS. IsIdentity Indicates if this geodata transform is an identity transform. Order The polynomial order (0-3). SpatialReference The output spatial reference after applying this transform. Transform Transforms a set of points in a given direction. TransformCellsize Transforms a cellsize in a given direction. TransformExtent Transforms an extent in a given direction. TransformPoints Transforms a point collection in a given direction

### IPolynomialXform.ApplyRotation Method

Applies a rotation to the polynomial.

``````Public Sub ApplyRotation ( _
ByVal direction As esriTransformDirection, _
ByVal pPivotPoint As IPoint, _
ByVal degree As Double _
)
``````
``````public void ApplyRotation (
esriTransformDirection direction,
IPoint pPivotPoint,
double degree
);
``````

#### Remarks

ApplyRotation method append an xform to the existing PolynomialXform. To define a rotation transformation for work with raster data using this method, you must define both forward and inverse transformation.

For example, to define a rotation of 45 degree unclockwise, you need to call

pPolynomialXform.ApplyRotate TransformationForward, 45

pPolynomialXform.ApplyRotate TransformationReverse, -45

### IPolynomialXform.ApplyScale Method

Applies a scale to the polynomial.

``````Public Sub ApplyScale ( _
ByVal direction As esriTransformDirection, _
ByVal scaleX As Double, _
ByVal scaleY As Double _
)
``````
``````public void ApplyScale (
esriTransformDirection direction,
double scaleX,
double scaleY
);
``````

#### Remarks

ApplyScale method appends an xform to the existing PolynomialXform. To define an scale transformation to work with raster data using this method, you must define both forward and inverse transformations.

For example, to define a scale transformation, you need to call

pPolynomialXform.ApplyScale TransformationForward, 10

pPolynomialXform.ApplyScale TransformationReverse, 1/10

### IPolynomialXform.ApplyShift Method

Applies a shift to the polynomial.

``````Public Sub ApplyShift ( _
ByVal direction As esriTransformDirection, _
ByVal shiftX As Double, _
ByVal shiftY As Double _
)
``````
``````public void ApplyShift (
esriTransformDirection direction,
double shiftX,
double shiftY
);
``````

#### Remarks

ApplyShift method append an xform to the existing PolynomialXform. To define a shift transformation to work with raster data using this method, you must define both forward and inverse transformations.

For example, to define a shift transformation, you need to call

pPolynomialXform.ApplyShift TransformationForward, 10

pPolynomialXform.ApplyShift TransformationReverse, -10

### IPolynomialXform.CheckResidualRMS Method

Gets the residuals and RMS using checking points.

``````Public Sub CheckResidualRMS ( _
ByVal CheckingsSurcePoints As IPointCollection, _
ByVal CheckingsTargetPoints As IPointCollection, _
ByVal direction As esriTransformDirection, _
ByRef pResidual As Object, _
ByRef rms As Double _
)
``````
``````public void CheckResidualRMS (
IPointCollection CheckingsSurcePoints,
IPointCollection CheckingsTargetPoints,
esriTransformDirection direction,
ref object pResidual,
ref double rms
);
``````

#### Remarks

Get residual on a set of user specified check points. The residual returned is a variant array of double type.

### IPolynomialXform.DefineFromCoefficients Method

Defines a polynomial XForm from polynomial (order: 0-3) coefficients .

``````Public Sub DefineFromCoefficients ( _
ByRef pForwardPolyCoef As Object, _
ByRef pReversePolyCoef As Object, _
ByVal Order As Integer _
)
``````
``````public void DefineFromCoefficients (
ref object pForwardPolyCoef,
ref object pReversePolyCoef,
ref int Order
);
``````

#### Remarks

The polynomial coefficients are a variant array of nx2 elements of double type, where n=3 for the first order, 6 for the second order and 10 for the third order.

To define a PolynomialXform to work with raster dataset, coefficients for both forward case and reverse case must be set.

You can define a PolynomialXform that performs one direction transformation, for transforming other type of data, such as forward transformation, pass Null to reverse coefficient argument.

### IPolynomialXform.DefineFromControlPoints Method

Defines a polynomial (order: 0-3) XForm from control points.

``````Public Sub DefineFromControlPoints ( _
ByVal pSrcPoints As IPointCollection, _
ByVal pTarPoints As IPointCollection, _
ByVal Order As Integer _
)
``````
``````public void DefineFromControlPoints (
IPointCollection pSrcPoints,
IPointCollection pTarPoints,
int Order
);
``````

#### Remarks

The polynomial order can be 1,2,3 and the number of the non-correlated control points required must be at least 3, 6, and 10 respectively.

### IPolynomialXform.GetCoefficients Method

Gets the coefficients of the polynomial.

``````Public Function GetCoefficients ( _
ByVal direction As esriTransformDirection _
) As Object
``````
``````public object GetCoefficients (
esriTransformDirection direction
);
``````

#### Remarks

The polynomial coefficients are in a variant array of nx2 elements of double type, where n=3 for the first order, 6 for the second order and 10 for the third order.

### IPolynomialXform.GetControlPoints Method

Gets control points used in defining the polynomial.

``````Public Sub GetControlPoints ( _
ByRef ppSrcPoints As IPointCollection, _
ByRef ppTarPoints As IPointCollection _
)
``````
``````public void GetControlPoints (
ref IPointCollection ppSrcPoints,
ref IPointCollection ppTarPoints
);
``````

### IPolynomialXform.GetSystemResidual Method

Gets the system residuals.

``````Public Function GetSystemResidual ( _
ByVal direction As esriTransformDirection _
) As Object
``````
``````public object GetSystemResidual (
esriTransformDirection direction
);
``````

#### Remarks

The residual returned is variant array of double type, the size of the array is the number of control points used in creating the PolynomialXform.

### IPolynomialXform.GetSystemRMS Method

Gets the system RMS.

``````Public Function GetSystemRMS ( _
ByVal direction As esriTransformDirection _
) As Double
``````
``````public double GetSystemRMS (
esriTransformDirection direction
);
``````

### IPolynomialXform.Order Property

The polynomial order (0-3).

``````Public ReadOnly Property Order As Integer
``````
``````public int Order {get;}
``````

## Inherited Interfaces

Interfaces Description

## Classes that implement IPolynomialXform

Classes Description
PolynomialXform A polynomial transform class.

## Remarks

The IPolynomialXform interface provides methods and properties used to create the PolynomialXform object and perform error analysis of the polynomial transformation.

You can create a PolynomialXform in two ways: One is to use DefineFromControlPoints with two sets of control points, one being source and one being target, to construct a polynomial. The other way is to set the polynomial coefficients directly using DefineFromCoefficients if the polynomial coefficients are known.

A polynomial transformation is an approximate transformation and the IPolynomialXform interface provides two ways to calculate the system residuals and RMS. One is based on the control points using GetSystemResidual and GetSystemRMS methods; and the other is based on a set of check points using CheckResidualRMS method.