This document is archived and information here might be outdated. Recommended version. |
ArcObjects namespaces > Geometry > ESRI.ArcGIS.Geometry > Interfaces > IA > IAffineTransformation2D Interface > IAffineTransformation2D.Rotate Method (ArcObjects .NET 10.4 SDK) |
Incorporates a rotation (in radians) into the transformation.
[Visual Basic .NET] Public Sub Rotate ( _ ByVal da As Double _ )
[C#] public void Rotate ( double da );
[C++]
HRESULT Rotate(
double da
);
[C++]
Parameters da da is a parameter of type double
Rotates the existing affine transformation by da radians around (0,0).
Note: The Move, Scale, and Rotate transformations are cumulative they add the transformation specified to any existing transformation in an AffineTransformation2D object.
private void RotateAroundPoint()
{
//Point to be rotated
IPoint rotatePoint=new ESRI.ArcGIS.Geometry.Point();
rotatePoint.PutCoords(2, 2);
//Point around which to rotate
IPoint centerPoint=new ESRI.ArcGIS.Geometry.Point();
centerPoint.PutCoords(1, 1);
//Rotation Angle
double angle=45 * Math.PI / 180.0;
//Rotate Around pCenter
IAffineTransformation2D3GEN affineTransformation=new AffineTransformation2D() as IAffineTransformation2D3GEN;
affineTransformation.Move(-centerPoint.X, -centerPoint.Y);
affineTransformation.Rotate(angle);
affineTransformation.Move(centerPoint.X, centerPoint.Y);
ITransform2D transformator=rotatePoint as ITransform2D;
transformator.Transform(esriTransformDirection.esriTransformForward, affineTransformation as ITransformation);
//Set up Comparison Point
//This is the point the transformation should result in
IPoint comparePoint=new ESRI.ArcGIS.Geometry.Point();
comparePoint.PutCoords(2, 2);
transformator=comparePoint as ITransform2D;
transformator.Rotate(centerPoint, angle);
System.Windows.Forms.MessageBox.Show(
"Using IAffineTransformation2D.Rotate: Point X:" + rotatePoint.X + ", Y:" + rotatePoint.Y + "\n" +
"Using IAffineTransformation2D::Rotate, Point X:" + rotatePoint.X + ", Y:" + rotatePoint.Y + "\n" +
"Using ITransform2D::Rotate, Point X: " + comparePoint.X + ", Y:" + comparePoint.Y + "\n" +
"Did X coordinates match? " + (rotatePoint.X == comparePoint.X) + "\n" +
"Did Y coordinates match? " + (rotatePoint.Y == comparePoint.Y)
);
}
Private Sub RotateAroundPoint()
'Point to be rotated
Dim pPt As IPoint
pPt=New Point
pPt.PutCoords(2, 2)
'Point around which to rotate
Dim pCenter As IPoint
pCenter=New Point
pCenter.PutCoords(1, 1)
'Rotation Angle
Dim dAngle As Double
Dim dPi As Double
dPi=4 * Math.Atan(1)
dAngle=45 * dPi / 180
'Rotate Around pCenter
Dim pA2D As IAffineTransformation2D
pA2D=New AffineTransformation2D
pA2D.Move(-pCenter.x, -pCenter.y)
pA2D.Rotate(dAngle)
pA2D.Move(pCenter.x, pCenter.y)
Dim pT2D As ITransform2D
pT2D=pPt
pT2D.Transform(esriTransformDirection.esriTransformForward, pA2D)
'Set up Comparison Point
'This is the point the transformation should result in
Dim pComparePt As IPoint
pComparePt=New Point
pComparePt.PutCoords(2, 2)
pT2D=pComparePt
pT2D.Rotate(pCenter, dAngle)
Debug.Print("Using IAffineTransformation2D::Rotate, Point X:" & pPt.x & ", Y:" & pPt.y)
Debug.Print("Using ITransform2D::Rotate, Point X:" & pComparePt.x & ", Y:" & pComparePt.y)
Debug.Print("Did X coordinates match? " & (pPt.x=pComparePt.x))
Debug.Print("Did Y coordinates match? " & (pPt.y=pComparePt.y))
End Sub