IAffineTransformation2D3GEN Interface

Provides access to members that define and manipulate affine transformations. IAffineTransformation2D3GEN is generic version of IAffineTransformation2D3

Members

Name Description
Method DefineConformalFromControlPoints Defines the best conformal affine transformation between two sets of points. Can be used to register paper maps on a digitizer.
Method DefineFromControlPoints Defines the best affine transformation between two sets of points. Can be used to register paper maps on a digitizer.
Method DefineFromEnvelopes Defines a transformation that maps a point relative to one envelope to a similar position relative to another envelope.
Method DefineFromEnvelopesEx Defines a transformation that maps a point relative to one envelope to a similar position relative to another envelope.
Method DefineReflection Defines a transformation that can perform a reflection about the line l.
Method GetControlPointError Returns the errors involved in moving control point i from the 'from' to 'to' system. These error terms are valid after using DefineFromControlPoints/Ex to define the transformation.
Method GetRMSError RMS (Root Mean Square) error expressed relative to the 'from' and 'to' points defining the transformation. These error terms are valid after using DefineFromControlPoints/Ex to define the transformation.
Read-only property IsReflective Indicates if the transformation contains a reflection (determinant is negative).
Method Move Incorporates a translation factor into the transformation.
Write-only property MoveOrigin The origin of accumulated transformations used when projecting an affine transformation to a different spatial reference system.
Read-only property MoveOrigin The origin of accumulated transformations used when projecting an affine transformation to a different spatial reference system.
Method MoveVector Performs an X and Y translation defined by a 2D vector.
Method PostMultiply Post-multiplies the transformation by another transformation.
Method PreMultiply Pre-multiplies the transformation by another transformation.
Method Project Moves this transformation into another spatial reference. If the transformations contains only translations, then use the MoveOrigin property to define an equivalent translation in the new spatial reference.
Method QueryLinearCoefficients Returns the linear coefficients which define the two dimensional affine transformation. The array size of the incoming parameters needs to be 6.
Method Reset Resets the tranformation.
Method Rotate Incorporates a rotation (in radians) into the transformation.
Read-only property Rotation The rotation angle. Will not be able if different x/y scale factors have been incorporated into the transformation.
Method Scale Incorporates scale factors into the transformation.
Method SetLinearCoefficients Sets the linear coefficients which define the two dimensional affine transformation. The array size of the incoming parameters needs to be 6.
Read/write property SpatialReference The spatial reference in which this transformation is meaningful.
Method TransformMeasuresFF Transforms floating point measures to floating point measures (or do the inverse).
Method TransformMeasuresFI Transforms floating point measures to integer measures (or do the inverse).
Method TransformMeasuresIF Transforms integer measures to floating point measures (or do the inverse).
Method TransformMeasuresII Transforms integer measures to integer measures (or do the inverse).
Method TransformPointsFF Transforms floating point points to floating point points (or do the inverse).
Method TransformPointsFI Transforms floating point points to integer points (or do the inverse).
Method TransformPointsIF Transforms integer points to floating point points (or do the inverse).
Method TransformPointsII Transforms integer points to integer points (or do the inverse).
Read-only property XScale The scale along the X axis.
Read-only property XTranslation The translation along the X axis.
Read-only property YScale The scale along the Y axis.
Read-only property YTranslation The translation along the Y axis.

IAffineTransformation2D3GEN.DefineConformalFromControlPoints Method

Defines the best conformal affine transformation between two sets of points. Can be used to register paper maps on a digitizer.

Public Sub DefineConformalFromControlPoints ( _
    ByRef fromPoints As IPoint[], _
    ByRef toPoints As IPoint[] _
)
public void DefineConformalFromControlPoints (
    ref IPoint[] fromPoints,
    ref IPoint[] toPoints
);
private void DefineConformalFromControlPoints()

        {

            //The following controls point define a translation of 10 along the X Axis

            IPoint[] fromPoints = new IPoint[2];

            fromPoints[0] = CreatePoint(0, 0);

            fromPoints[1] = CreatePoint(0, 10);

            //To point

            IPoint[] toPoints = new IPoint[2];

            toPoints[0] = CreatePoint(10, 0);

            toPoints[1] = CreatePoint(10, 10);

            //TransformPoint

            IPoint transformPoint = new ESRI.ArcGIS.Geometry.Point();

            transformPoint.PutCoords(5, 5);

            IAffineTransformation2D3GEN affineTransformation = new AffineTransformation2D() as IAffineTransformation2D3GEN;

            //The method requires as inputs the fromPoints and toPoints array

            affineTransformation.DefineConformalFromControlPoints(ref fromPoints, ref toPoints);

            //The affine transformation can then be used as input in the ITransform2D.Transform method

            ITransform2D transformator = transformPoint as ITransform2D;

            transformator.Transform(esriTransformDirection.esriTransformForward, affineTransformation as ITransformation);

        }

        private IPoint CreatePoint(double x, double y)

        {

            IPoint pnt = new PointClass();

            pnt.X = x;

            pnt.Y = y;

            return pnt;

        }
Public Sub DefineConformalFromControlPoints()

        Dim ptfrom(1) As ESRI.ArcGIS.Geometry.IPoint, ptto(1) As ESRI.ArcGIS.Geometry.IPoint, i As Long, paffine As ESRI.ArcGIS.Geometry.IAffineTransformation2D3GEN

        Dim ptrns As ESRI.ArcGIS.Geometry.ITransform2D

        For i = 0 To 1

            ptfrom(i) = New ESRI.ArcGIS.Geometry.Point

            ptto(i) = New ESRI.ArcGIS.Geometry.Point

        Next

        'The following controls point define a translation of 10 along the X Axis

        ptfrom(0).PutCoords(0, 0)

        ptfrom(1).PutCoords(0, 10)

        ptto(0).PutCoords(10, 0)

        ptto(1).PutCoords(10, 10)

        paffine = New ESRI.ArcGIS.Geometry.AffineTransformation2D

        'The method requires as inputs the number of points and a pointer

        'to first object in the array of IPoint

        paffine.DefineConformalFromControlPoints(ptfrom, ptto)

        'TransformPoint

        Dim transformPoint As ESRI.ArcGIS.Geometry.IPoint

        transformPoint = New ESRI.ArcGIS.Geometry.Point

        transformPoint.PutCoords(5, 5)

        'The affine transformation can then be used as input in the ITransform2D::TransForm method

        ptrns = transformPoint

        ptrns.Transform(ESRI.ArcGIS.Geometry.esriTransformDirection.esriTransformForward, paffine)

    End Sub

IAffineTransformation2D3GEN.DefineFromControlPoints Method

Defines the best affine transformation between two sets of points. Can be used to register paper maps on a digitizer.

Public Sub DefineFromControlPoints ( _
    ByRef fromPoints As IPoint[], _
    ByRef toPoints As IPoint[] _
)
public void DefineFromControlPoints (
    ref IPoint[] fromPoints,
    ref IPoint[] toPoints
);
//This example demonstrates how to use the IAffineTransformation2D3GEN.DefineFromControlPoints method

        public void transformPolygon()

        {

            //From point

            IPoint[] fromPoints = new IPoint[4];

            fromPoints[0] = CreatePoint(0, 0);

            fromPoints[1] = CreatePoint(0, 1);

            fromPoints[2] = CreatePoint(1, 1);

            fromPoints[3] = CreatePoint(1, 0);

            //To point

            IPoint[] toPoints = new IPoint[4];

            toPoints[0] = CreatePoint(10, 10);

            toPoints[1] = CreatePoint(10, 15);

            toPoints[2] = CreatePoint(15, 15);

            toPoints[3] = CreatePoint(15, 10);

            //Create polygon

            IGeometry segment1 = CreateLineXY(0, 0, 0, 1) as IGeometry;

            IGeometry segment2 = CreateLineXY(0, 1, 1, 1) as IGeometry;

            IGeometry segment3 = CreateLineXY(0, 1, 0, 0) as IGeometry;

            ISegmentCollection segmentCollection = new Polygon() as ISegmentCollection;

            object Missing = Type.Missing;

            segmentCollection.AddSegment(segment1 as ISegment, ref Missing, ref Missing);

            segmentCollection.AddSegment(segment2 as ISegment, ref Missing, ref Missing);

            segmentCollection.AddSegment(segment3 as ISegment, ref Missing, ref Missing);

            IPolygon polygon = segmentCollection as IPolygon;

            //Define the transformation

            IAffineTransformation2D3GEN affineTransformation2D = new AffineTransformation2DClass();

            affineTransformation2D.DefineFromControlPoints(ref fromPoints, ref toPoints);

            //Transform

            ITransform2D transform2D = polygon as ITransform2D;

            transform2D.Transform(esriTransformDirection.esriTransformForward, affineTransformation2D as ITransformation);

        }

        private IPoint CreatePoint(double x, double y)

        {

            IPoint point = new ESRI.ArcGIS.Geometry.Point();

            point.X = x;

            point.Y = y;

            return point;

        }

        public ILine CreateLineXY(double x1, double y1, double x2, double y2)

        {

            ILine line = new Line();

            line.FromPoint = CreatePoint(x1, y1);

            line.ToPoint = CreatePoint(x2, y2);

            return line;

        }

        public ILine CreateLine(IPoint fromPoint, IPoint toPoint)

        {

            ILine line = new Line();

            line.PutCoords(fromPoint, toPoint);

            return line;

        }
'This example demonstrates how to use the IAffineTransformation::DefineFromControlPoints method.

    Public Sub AffTrans2D_DefFromPts()

        'From point

        Dim pPtFrom(0 To 3) As ESRI.ArcGIS.Geometry.IPoint

        pPtFrom(0) = CreatePoint(0, 0)

        pPtFrom(1) = CreatePoint(0, 1)

        pPtFrom(2) = CreatePoint(1, 1)

        pPtFrom(3) = CreatePoint(1, 0)

        'To point

        Dim pPtTo(0 To 3) As ESRI.ArcGIS.Geometry.IPoint

        pPtTo(0) = CreatePoint(10, 10)

        pPtTo(1) = CreatePoint(10, 15)

        pPtTo(2) = CreatePoint(15, 15)

        pPtTo(3) = CreatePoint(15, 10)

        'Create polygon

        Dim pSeg1 As ESRI.ArcGIS.Geometry.IGeometry

        pSeg1 = CreateLineXY(0, 0, 0, 1)

        Dim pSeg2 As ESRI.ArcGIS.Geometry.IGeometry

        pSeg2 = CreateLineXY(0, 1, 1, 1)

        Dim pSeg3 As ESRI.ArcGIS.Geometry.IGeometry

        pSeg3 = CreateLineXY(1, 1, 0, 0)

        Dim pPolygon As ESRI.ArcGIS.Geometry.ISegmentCollection

        pPolygon = New ESRI.ArcGIS.Geometry.Polygon

        pPolygon.AddSegment(pSeg1)

        pPolygon.AddSegment(pSeg2)

        pPolygon.AddSegment(pSeg3)

        Dim pPoly As ESRI.ArcGIS.Geometry.IPolygon

        pPoly = pPolygon

        'Define the transformation

        Dim pAffineTrans2D As ESRI.ArcGIS.Geometry.IAffineTransformation2D3GEN

        pAffineTrans2D = New ESRI.ArcGIS.Geometry.AffineTransformation2D

        pAffineTrans2D.DefineFromControlPoints(pPtFrom, pPtTo)

        Dim pTransform2d As ESRI.ArcGIS.Geometry.ITransform2D

        'Transform

        pTransform2d = pPolygon

        pTransform2d.Transform(ESRI.ArcGIS.Geometry.esriTransformDirection.esriTransformForward, pAffineTrans2D)

    End Sub

    Public Function CreatePoint(ByVal XVal As Double, ByVal YVal As Double) As ESRI.ArcGIS.Geometry.IPoint

        CreatePoint = New ESRI.ArcGIS.Geometry.Point

        CreatePoint.X = XVal

        CreatePoint.Y = YVal

    End Function

    Public Function CreateLineXY(ByVal X1 As Double, ByVal Y1 As Double, ByVal X2 As Double, ByVal Y2 As Double) As ESRI.ArcGIS.Geometry.ILine

        CreateLineXY = CreateLine(CreatePoint(X1, Y1), CreatePoint(X2, Y2))

    End Function

    Public Function CreateLine(ByVal pPoint1 As ESRI.ArcGIS.Geometry.IPoint, ByVal pPoint2 As ESRI.ArcGIS.Geometry.IPoint) As ESRI.ArcGIS.Geometry.ILine

        CreateLine = New ESRI.ArcGIS.Geometry.Line

        CreateLine.PutCoords(pPoint1, pPoint2)

    End Function

IAffineTransformation2D3GEN.DefineFromEnvelopes Method

Defines a transformation that maps a point relative to one envelope to a similar position relative to another envelope.

Public Sub DefineFromEnvelopes ( _
    ByVal from As IEnvelope, _
    ByVal to As IEnvelope _
)
public void DefineFromEnvelopes (
    IEnvelope from,
    IEnvelope to
);

IAffineTransformation2D3GEN.DefineFromEnvelopesEx Method

Defines a transformation that maps a point relative to one envelope to a similar position relative to another envelope.

Public Sub DefineFromEnvelopesEx ( _
    ByVal from As IEnvelope, _
    ByVal to As IEnvelope, _
    ByVal outFrom As IEnvelope, _
    ByVal assumeFalseOrigin As Boolean, _
    ByVal keepAspect As Boolean, _
    ByVal flipIt As Boolean _
)
public void DefineFromEnvelopesEx (
    IEnvelope from,
    IEnvelope to,
    IEnvelope outFrom,
    bool assumeFalseOrigin,
    bool keepAspect,
    bool flipIt
);

IAffineTransformation2D3GEN.DefineReflection Method

Defines a transformation that can perform a reflection about the line l.

Public Sub DefineReflection ( _
    ByVal l As ILine _
)
public void DefineReflection (
    ILine l
);

IAffineTransformation2D3GEN.GetControlPointError Method

Returns the errors involved in moving control point i from the 'from' to 'to' system. These error terms are valid after using DefineFromControlPoints/Ex to define the transformation.

Public Sub GetControlPointError ( _
    ByVal i As Integer, _
    ByRef fromError As Double, _
    ByRef toError As Double _
)
public void GetControlPointError (
    int i,
    ref double fromError,
    ref double toError
);
/// This example demonstrates how to get the GetControlPointError

///for an AffineTransformation

public void GetControlPointError_Example()

{

    try

    {

        //From point

        IPoint[] fromPoints = new IPoint[4];

        fromPoints[0] = CreatePoint(0, 0);

        fromPoints[1] = CreatePoint(0, 1);

        fromPoints[2] = CreatePoint(1, 0);

        fromPoints[3] = CreatePoint(1, 1);

        //To point

        IPoint[] toPoints = new IPoint[4];

        toPoints[0] = CreatePoint(5, 5);

        toPoints[1] = CreatePoint(5, 6);

        toPoints[2] = CreatePoint(6, 5);

        toPoints[3] = CreatePoint(6, 6);

        //Create an AffineTransformation2D object

        IAffineTransformation2D3GEN affineTransformation2D = new AffineTransformation2DClass();

        affineTransformation2D.DefineFromControlPoints(ref fromPoints, ref toPoints);

        double fromError = 0;

        double toError = 0;

        for (int i = 0; i < 4; i++)

        {

            affineTransformation2D.GetControlPointError(i, ref fromError, ref toError);

            System.Windows.Forms.MessageBox.Show("The fromError value is 0 because the control points define a perfect fit : " + fromError);

            System.Windows.Forms.MessageBox.Show("The toError value is 0 because the control points define a perfect fit : " + toError);

        }

        //Now lets introduce some error by modifying one control point to break the perfect fit

        toPoints[3] = CreatePoint(5.9, 5.9);

        //Redefine the affine transformation

        affineTransformation2D.DefineFromControlPoints(ref fromPoints, ref toPoints);

        affineTransformation2D.GetRMSError(ref fromError, ref toError);

        System.Windows.Forms.MessageBox.Show("The fromError value is 0.039 because the control points do not define a perfect fit : " + fromError);

        System.Windows.Forms.MessageBox.Show("The toError value is 0.035 because the control points do not define a perfect fit : " + toError);

    }

    catch (Exception e)

    {

        System.Windows.Forms.MessageBox.Show(e.Message);

    }

}

public IPoint CreatePoint(double x, double y)

{

    IPoint point = new ESRI.ArcGIS.Geometry.Point();

    point.X = x;

    point.Y = y;

    return point;

}
'This example demonstrates how to get the RMS error

    'for all the control points of an AffineTransformation

    Private Sub GetControlPointError_example()

        On Error GoTo ErrorHandler

        'Create an AffineTransformation2D object

        Dim pA2D As IAffineTransformation2D3GEN

        pA2D = New AffineTransformation2D

        Dim pArrFromPts(3) As IPoint

        pArrFromPts(0) = New Point

        pArrFromPts(1) = New Point

        pArrFromPts(2) = New Point

        pArrFromPts(3) = New Point

        Dim pArrToPts(3) As IPoint

        pArrToPts(0) = New Point

        pArrToPts(1) = New Point

        pArrToPts(2) = New Point

        pArrToPts(3) = New Point

        'Define the Affine using control points

        'forming a perfect fit

        pArrFromPts(0).PutCoords(0, 0)

        pArrFromPts(1).PutCoords(0, 1)

        pArrFromPts(2).PutCoords(1, 0)

        pArrFromPts(3).PutCoords(1, 1)

        pArrToPts(0).PutCoords(5, 5)

        pArrToPts(1).PutCoords(5, 6)

        pArrToPts(2).PutCoords(6, 5)

        pArrToPts(3).PutCoords(6, 6)

        pA2D.DefineFromControlPoints(pArrFromPts, pArrToPts)

        Dim dFromErr As Double, dToErr As Double

        Dim i As Long

        Debug.Print("**** Control point errors - Perfect fit ****")

        For i = 0 To 3

            pA2D.GetControlPointError(i, dFromErr, dToErr)

            Debug.Print("FromErr on control point" & i & " = " & dFromErr)

            Debug.Print("ToErr on control point" & i & " = " & dToErr)

        Next

        'Now lets introduce some error by modifying one control point to break the perfect fit

        pArrToPts(3).PutCoords(5.9, 5.9)

        pA2D.DefineFromControlPoints(pArrFromPts, pArrToPts)

        Debug.Print("**** Control point errors - With error ****")

        For i = 0 To 3

            pA2D.GetControlPointError(i, dFromErr, dToErr)

            Debug.Print("FromErr on control point" & i & " = " & dFromErr)

            Debug.Print("ToErr on control point" & i & " = " & dToErr)

        Next

        Exit Sub

ErrorHandler:

        Debug.Print(Err.Description)

    End Sub

IAffineTransformation2D3GEN.GetRMSError Method

RMS (Root Mean Square) error expressed relative to the 'from' and 'to' points defining the transformation. These error terms are valid after using DefineFromControlPoints/Ex to define the transformation.

Public Sub GetRMSError ( _
    ByRef fromError As Double, _
    ByRef toError As Double _
)
public void GetRMSError (
    ref double fromError,
    ref double toError
);
/// This example demonstrates how to get the RMS error

///for an AffineTransformation

public void GetRMSError_Example()

{

    try

    {

        //From point

        IPoint[] fromPoints = new IPoint[4];

        fromPoints[0] = CreatePoint(0, 0);

        fromPoints[1] = CreatePoint(0, 1);

        fromPoints[2] = CreatePoint(1, 0);

        fromPoints[3] = CreatePoint(1, 1);

        //To point

        IPoint[] toPoints = new IPoint[4];

        toPoints[0] = CreatePoint(5, 5);

        toPoints[1] = CreatePoint(5, 6);

        toPoints[2] = CreatePoint(6, 5);

        toPoints[3] = CreatePoint(6, 6);

        //Create an AffineTransformation2D object

        IAffineTransformation2D3GEN affineTransformation2D = new AffineTransformation2DClass();

        affineTransformation2D.DefineFromControlPoints(ref fromPoints, ref toPoints);

        double fromError = 0;

        double toError = 0;

        affineTransformation2D.GetRMSError(ref fromError, ref toError);

        System.Windows.Forms.MessageBox.Show("The fromError value is 0 because the control points define a perfect fit : " + fromError);

        System.Windows.Forms.MessageBox.Show("The toError value is 0 because the control points define a perfect fit : " + toError);

        //Now lets introduce some error by modifying one control point to break the perfect fit

        toPoints[3] = CreatePoint(5.9, 5.9);

        //Redefine the affine transformation

        affineTransformation2D.DefineFromControlPoints(ref fromPoints, ref toPoints);

        affineTransformation2D.GetRMSError(ref fromError, ref toError);

        System.Windows.Forms.MessageBox.Show("The fromError value is 0.039 because the control points do not define a perfect fit : " + fromError);

        System.Windows.Forms.MessageBox.Show("The toError value is 0.035 because the control points do not define a perfect fit : " + toError);

    }

    catch (Exception e)

    {

        System.Windows.Forms.MessageBox.Show(e.Message);

    }

}

public IPoint CreatePoint(double x, double y)

{

    IPoint point = new ESRI.ArcGIS.Geometry.Point();

    point.X = x;

    point.Y = y;

    return point;

}
'This example demonstrates how to get the RMS error

    'for an AffineTransformation

    Private Sub GetRMSError_Example()

        On Error GoTo ErrorHandler

        'Create an IAffineTransformation2D3Gen object

        Dim pA2D As IAffineTransformation2D3GEN

        pA2D = New AffineTransformation2D

        Dim pArrFromPts(3) As IPoint

        pArrFromPts(0) = New Point

        pArrFromPts(1) = New Point

        pArrFromPts(2) = New Point

        pArrFromPts(3) = New Point

        Dim pArrToPts(3) As IPoint

        pArrToPts(0) = New Point

        pArrToPts(1) = New Point

        pArrToPts(2) = New Point

        pArrToPts(3) = New Point

        'Define the Affine using control points

        'forming a perfect fit

        pArrFromPts(0).PutCoords(0, 0)

        pArrFromPts(1).PutCoords(0, 1)

        pArrFromPts(2).PutCoords(1, 0)

        pArrFromPts(3).PutCoords(1, 1)

        pArrToPts(0).PutCoords(5, 5)

        pArrToPts(1).PutCoords(5, 6)

        pArrToPts(2).PutCoords(6, 5)

        pArrToPts(3).PutCoords(6, 6)

        pA2D.DefineFromControlPoints(pArrFromPts, pArrToPts)

        Dim dFromErr As Double, dToErr As Double

        pA2D.GetRMSError(dFromErr, dToErr)

        Debug.Print("The dFromErr value is 0 because the control points define a perfect fit : " & dFromErr)

        Debug.Print("The dToErr value is 0 because the control points define a perfect fit : " & dToErr)

        'Now lets introduce some error by modifying one control point to break the perfect fit

        pArrToPts(3).PutCoords(5.9, 5.9)

        'Redefine the affine transformation

        pA2D.DefineFromControlPoints(pArrFromPts, pArrToPts)

        pA2D.GetRMSError(dFromErr, dToErr)

        Debug.Print("The dFromErr value is 0.039 because the control points do not define a perfect fit : " & dFromErr)

        Debug.Print("The dToErr value is 0.035 because the control points do not define a perfect fit : " & dToErr)

        Exit Sub

ErrorHandler:

        Debug.Print(Err.Description)

    End Sub

IAffineTransformation2D3GEN.IsReflective Property

Indicates if the transformation contains a reflection (determinant is negative).

Public ReadOnly Property IsReflective As Boolean
public bool IsReflective {get;}

IAffineTransformation2D3GEN.Move Method

Incorporates a translation factor into the transformation.

Public Sub Move ( _
    ByVal dx As Double, _
    ByVal dy As Double _
)
public void Move (
    double dx,
    double dy
);

IAffineTransformation2D3GEN.MoveOrigin Property

The origin of accumulated transformations used when projecting an affine transformation to a different spatial reference system.

Public Property MoveOrigin As IPoint
public IPoint MoveOrigin {get; set;}

IAffineTransformation2D3GEN.MoveOrigin Property

The origin of accumulated transformations used when projecting an affine transformation to a different spatial reference system.

Public Property MoveOrigin As IPoint
public IPoint MoveOrigin {get; set;}

IAffineTransformation2D3GEN.MoveVector Method

Performs an X and Y translation defined by a 2D vector.

Public Sub MoveVector ( _
    ByVal movementVector As ILine _
)
public void MoveVector (
    ILine movementVector
);

IAffineTransformation2D3GEN.PostMultiply Method

Post-multiplies the transformation by another transformation.

Public Sub PostMultiply ( _
    ByVal postTransform As IAffineTransformation2D3GEN _
)
public void PostMultiply (
    IAffineTransformation2D3GEN postTransform
);

IAffineTransformation2D3GEN.PreMultiply Method

Pre-multiplies the transformation by another transformation.

Public Sub PreMultiply ( _
    ByVal preTransform As IAffineTransformation2D3GEN _
)
public void PreMultiply (
    IAffineTransformation2D3GEN preTransform
);

IAffineTransformation2D3GEN.Project Method

Moves this transformation into another spatial reference. If the transformations contains only translations, then use the MoveOrigin property to define an equivalent translation in the new spatial reference.

Public Sub Project ( _
    ByVal newSpatialReference As ISpatialReference _
)
public void Project (
    ISpatialReference newSpatialReference
);

IAffineTransformation2D3GEN.QueryLinearCoefficients Method

Returns the linear coefficients which define the two dimensional affine transformation. The array size of the incoming parameters needs to be 6.

Public Sub QueryLinearCoefficients ( _
    ByVal Direction As esriTransformDirection, _
    ByRef params As Double[]& _
)
public void QueryLinearCoefficients (
    esriTransformDirection Direction,
    ref Double[]& params
);
//This example demonstrates how to use the

//QueryLinearCoefficients/SetLinearCoefficients methods

private void SetLinearCoefficients_test()

{

    try

    {

        IAffineTransformation2D3GEN affineTransformation = new AffineTransformation2D() as IAffineTransformation2D3GEN;

        //Define a rotation, translation and scale values

        double rotation = 0.0;

        double xTranslation = 10.0;

        double yTranslation = 10.0;

        double xScale = 2.0;

        double yScale = 2.0;

        //Define the expected linear coefficients based on the defined

        //rotation, translation and scale values

        double[] expectedParameters = new double[6];

        //a

        expectedParameters[0] = xScale * Math.Cos(rotation);

        //b

        expectedParameters[1] = yScale * ((Math.Tan(0) * Math.Cos(rotation)) - Math.Sin(rotation));

        //c

        expectedParameters[2] = xTranslation;

        //d

        expectedParameters[3] = xScale * Math.Sin(rotation);

        //e

        expectedParameters[4] = yScale * ((Math.Tan(0) * Math.Sin(rotation)) + Math.Cos(rotation));

        //f

        expectedParameters[5] = yTranslation;

        //Set the linear coefficients

        affineTransformation.SetLinearCoefficients(esriTransformDirection.esriTransformForward, ref expectedParameters);

        //Get the linear coefficients

        double[] outPutParameters = new double[6];

        affineTransformation.QueryLinearCoefficients(esriTransformDirection.esriTransformForward, ref outPutParameters);

        //Queried Paramaters

        String queriedParamters = "";

        for (int i = 0; i < outPutParameters.Length; i++)

        {

            queriedParamters = queriedParamters + i + " , " + outPutParameters[i] + "\n";

        }

        System.Windows.Forms.MessageBox.Show(queriedParamters);

        //Create a polygon

        ISegmentCollection tranformPolygon = new Polygon() as ISegmentCollection;

        IEnvelope envelope = new EnvelopeClass();

        envelope.PutCoords(0, 0, 10, 10);

        tranformPolygon.SetRectangle(envelope);

        //Print the polygon coordinates

        IPointCollection polygonPointCollection = tranformPolygon as IPointCollection;

        String message = "*** Polygon coordinates before transformation ***\n";

        for (int i = 0; i < polygonPointCollection.PointCount; i++)

        {

            message = message + i + " , " + polygonPointCollection.get_Point(i).X + " , " + polygonPointCollection.get_Point(i).Y + "\n";

        }

        ITransform2D transformator = tranformPolygon as ITransform2D;

        //Transform the polygon

        transformator.Transform(esriTransformDirection.esriTransformForward, affineTransformation as ITransformation);

        //Print the polygon coordinates

        IPointCollection transformedPoints = transformator as IPointCollection;

        message = message + "*** Polygon coordinates after transformation ***\n";

        for (int i = 0; i < transformedPoints.PointCount; i++)

        {

            message = message + i + " , " + transformedPoints.get_Point(i).X + " , " + transformedPoints.get_Point(i).Y + "\n";

        }

        System.Windows.Forms.MessageBox.Show(message);

    }

    catch (Exception e)

    {

        System.Windows.Forms.MessageBox.Show(e.Message);

    }

}
'This example demonstrates how to use the

    'QueryLinearCoefficients/SetLinearCoefficients methods

    Private Sub SetLinearCoefficients_test()

        On Error GoTo ErrorHandler

        Dim i As Long, pAffineTransformation2D3 As IAffineTransformation2D3GEN

        Dim pTransform2D As ITransform2D, dParamsOut(0 To 5) As Double

        Dim dParamsExpected(0 To 5) As Double, dRotation As Double

        Dim dXTranslation As Double, dYTranslation As Double

        Dim dXScale As Double, dYScale As Double

        Dim lFlag As Long, pTranformPolygon As ISegmentCollection

        Dim pEnv As IEnvelope, pc As IClone

        Dim pgOri As IGeometry, pTrans2D As ITransform2D

        Dim ptcOut As IPointCollection

        pAffineTransformation2D3 = New AffineTransformation2D

        'Define a rotation, translation and scale values

        dRotation = 0

        dXTranslation = 10

        dYTranslation = 10

        dXScale = 2

        dYScale = 2

        'Define the expected linear coefficients based on the defined

        'rotation, translation and scale values

        'a

        dParamsExpected(0) = dXScale * Math.Cos(dRotation)

        'b

        dParamsExpected(1) = dYScale * ((Math.Tan(0) * Math.Cos(dRotation)) - Math.Sin(dRotation))

        'c

        dParamsExpected(2) = dXTranslation

        'd

        dParamsExpected(3) = dXScale * Math.Sin(dRotation)

        'e

        dParamsExpected(4) = dYScale * ((Math.Tan(0) * Math.Sin(dRotation)) + Math.Cos(dRotation))

        'f

        dParamsExpected(5) = dYTranslation

        'Set the linear coefficients

        pAffineTransformation2D3.SetLinearCoefficients(esriTransformDirection.esriTransformForward, dParamsExpected)

        'Get the linear coefficients

        pAffineTransformation2D3.QueryLinearCoefficients(esriTransformDirection.esriTransformForward, dParamsOut)

        Debug.Print("*** Queried Paramaters ***")

        For i = 0 To 5

            Debug.Print(i & " , " & dParamsOut(i))

        Next

        'Create a polygon

        pTranformPolygon = New Polygon

        pEnv = New Envelope

        pEnv.PutCoords(0, 0, 10, 10)

        pTranformPolygon.SetRectangle(pEnv)

        'Print the polygon coordinates

        ptcOut = pTranformPolygon

        Debug.Print("*** Polygon coordinates before transformation ***")

        For i = 0 To ptcOut.PointCount - 1

            Debug.Print(i & " , " & ptcOut.Point(i).X & " , " & ptcOut.Point(i).Y)

        Next

        pTrans2D = pTranformPolygon

        'Transform the polygon

        pTrans2D.Transform(esriTransformDirection.esriTransformForward, pAffineTransformation2D3)

        'Print the polygon coordinates

        ptcOut = pTrans2D

        Debug.Print("*** Polygon coordinates after transformation ***")

        For i = 0 To ptcOut.PointCount - 1

            Debug.Print(i & " , " & ptcOut.Point(i).X & " , " & ptcOut.Point(i).Y)

        Next



        Exit Sub

ErrorHandler:

        Debug.Print(Err.Description)

    End Sub

IAffineTransformation2D3GEN.Reset Method

Resets the tranformation.

Public Sub Reset ( _
)
public void Reset (
);

IAffineTransformation2D3GEN.Rotate Method

Incorporates a rotation (in radians) into the transformation.

Public Sub Rotate ( _
    ByVal da As Double _
)
public void Rotate (
    double da
);

IAffineTransformation2D3GEN.Rotation Property

The rotation angle. Will not be able if different x/y scale factors have been incorporated into the transformation.

Public ReadOnly Property Rotation As Double
public double Rotation {get;}

IAffineTransformation2D3GEN.Scale Method

Incorporates scale factors into the transformation.

Public Sub Scale ( _
    ByVal dx As Double, _
    ByVal dy As Double _
)
public void Scale (
    double dx,
    double dy
);

IAffineTransformation2D3GEN.SetLinearCoefficients Method

Sets the linear coefficients which define the two dimensional affine transformation. The array size of the incoming parameters needs to be 6.

Public Sub SetLinearCoefficients ( _
    ByVal Direction As esriTransformDirection, _
    ByRef params As Double[]& _
)
public void SetLinearCoefficients (
    esriTransformDirection Direction,
    ref Double[]& params
);

IAffineTransformation2D3GEN.SpatialReference Property

The spatial reference in which this transformation is meaningful.

Public Property SpatialReference As ISpatialReference
public ISpatialReference SpatialReference {get; set;}

IAffineTransformation2D3GEN.TransformMeasuresFF Method

Transforms floating point measures to floating point measures (or do the inverse).

Public Sub TransformMeasuresFF ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inMeasures As Double[]&, _
    ByRef outMeasures As Double[]& _
)
public void TransformMeasuresFF (
    esriTransformDirection Direction,
    ref Double[]& inMeasures,
    ref Double[]& outMeasures
);

IAffineTransformation2D3GEN.TransformMeasuresFI Method

Transforms floating point measures to integer measures (or do the inverse).

Public Sub TransformMeasuresFI ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inMeasures As Double[]&, _
    ByRef outMeasures As Int32[]& _
)
public void TransformMeasuresFI (
    esriTransformDirection Direction,
    ref Double[]& inMeasures,
    ref Int32[]& outMeasures
);

IAffineTransformation2D3GEN.TransformMeasuresIF Method

Transforms integer measures to floating point measures (or do the inverse).

Public Sub TransformMeasuresIF ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inMeasures As Int32[]&, _
    ByRef outMeasures As Double[]& _
)
public void TransformMeasuresIF (
    esriTransformDirection Direction,
    ref Int32[]& inMeasures,
    ref Double[]& outMeasures
);

IAffineTransformation2D3GEN.TransformMeasuresII Method

Transforms integer measures to integer measures (or do the inverse).

Public Sub TransformMeasuresII ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inMeasures As Int32[]&, _
    ByRef outMeasures As Int32[]& _
)
public void TransformMeasuresII (
    esriTransformDirection Direction,
    ref Int32[]& inMeasures,
    ref Int32[]& outMeasures
);

IAffineTransformation2D3GEN.TransformPointsFF Method

Transforms floating point points to floating point points (or do the inverse).

Public Sub TransformPointsFF ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inPoints As Double[]&, _
    ByRef outPoints As Double[]& _
)
public void TransformPointsFF (
    esriTransformDirection Direction,
    ref Double[]& inPoints,
    ref Double[]& outPoints
);

IAffineTransformation2D3GEN.TransformPointsFI Method

Transforms floating point points to integer points (or do the inverse).

Public Sub TransformPointsFI ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inPoints As Double[]&, _
    ByRef outPoints As Int32[]& _
)
public void TransformPointsFI (
    esriTransformDirection Direction,
    ref Double[]& inPoints,
    ref Int32[]& outPoints
);

IAffineTransformation2D3GEN.TransformPointsIF Method

Transforms integer points to floating point points (or do the inverse).

Public Sub TransformPointsIF ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inPoints As Int32[]&, _
    ByRef outPoints As Double[]& _
)
public void TransformPointsIF (
    esriTransformDirection Direction,
    ref Int32[]& inPoints,
    ref Double[]& outPoints
);

IAffineTransformation2D3GEN.TransformPointsII Method

Transforms integer points to integer points (or do the inverse).

Public Sub TransformPointsII ( _
    ByVal Direction As esriTransformDirection, _
    ByRef inPoints As Int32[]&, _
    ByRef outPoints As Int32[]& _
)
public void TransformPointsII (
    esriTransformDirection Direction,
    ref Int32[]& inPoints,
    ref Int32[]& outPoints
);

IAffineTransformation2D3GEN.XScale Property

The scale along the X axis.

Public ReadOnly Property XScale As Double
public double XScale {get;}

IAffineTransformation2D3GEN.XTranslation Property

The translation along the X axis.

Public ReadOnly Property XTranslation As Double
public double XTranslation {get;}

IAffineTransformation2D3GEN.YScale Property

The scale along the Y axis.

Public ReadOnly Property YScale As Double
public double YScale {get;}

IAffineTransformation2D3GEN.YTranslation Property

The translation along the Y axis.

Public ReadOnly Property YTranslation As Double
public double YTranslation {get;}

Classes that implement IAffineTransformation2D3GEN

Classes Description
AffineTransformation2D A two dimensional affine transformation.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.