You move, scale, or rotate an object given a 4 by 4 transformation matrix using the TransformBy method.

The following table demonstrates the transformation matrix configuration, where R = Rotation and T = Translation:

Transformation matrix configuration

R00

R01

R02

T0

R10

R11

R12

T1

R20

R21

R22

T2

0

0

0

1

To transform an object, first initialize the transformation matrix. The following example shows a transformation matrix, assigned to the variable tMatrix, which will rotate an entity by 90 degrees about the point (0, 0, 0):

```tMatrix(0,0) = 0.0
```
```tMatrix(0,1) = -1.0
```
```tMatrix(0,2) = 0.0
```
```tMatrix(0,3) = 0.0
```
```tMatrix(1,0) = 1.0
```
```tMatrix(1,1) = 0.0
```
```tMatrix(1,2) = 0.0
```
```tMatrix(1,3) = 0.0
```
```tMatrix(2,0) = 0.0
```
```tMatrix(2,1) = 0.0
```
```tMatrix(2,2) = 1.0
```
```tMatrix(2,3) = 0.0
```
```tMatrix(3,0) = 0.0
```
```tMatrix(3,1) = 0.0
```
```tMatrix(3,2) = 0.0
```
```tMatrix(3,3) = 1.0
```

After the transformation matrix is complete, apply the matrix to the object using the TransformBy method. The following line of code demonstrates applying a matrix (tMatrix) to an object (anObj):

```anObj.TransformBy tMatrix
```

Rotate a line with a transformation matrix

This example creates a line and rotates it 90 degrees using a transformation matrix.

```Sub Ch4_TransformBy()
```
```	' Create a line
```
```	Dim lineObj As AcadLine
```
```	Dim startPt(0 To 2) As Double
```
```	Dim endPt(0 To 2) As Double
```
```	startPt(0) = 2
```
```	startPt(1) = 1
```
```	startPt(2) = 0
```
```	endPt(0) = 5
```
```	endPt(1) = 1
```
```	endPt(2) = 0
```
```	Set lineObj = ThisDrawing.ModelSpace. _
```
```				AddLine(startPt, endPt)
```
```	ZoomAll
```

```	' Initialize the transMat variable with a
```
```	' transformation matrix that will rotate
```
```	' an object by 90 degrees about the point(0,0,0)
```
```	Dim transMat(0 To 3, 0 To 3) As Double
```
```	transMat(0, 0) = 0#: transMat(0, 1) = -1#
```
```	transMat(0, 2) = 0#: transMat(0, 3) = 0#
```
```	transMat(1, 0) = 1#: transMat(1, 1) = 0#
```
```	transMat(1, 2) = 0#: transMat(1, 3) = 0#
```
```	transMat(2, 0) = 0#: transMat(2, 1) = 0#
```
```	transMat(2, 2) = 1#: transMat(2, 3) = 0#
```
```	transMat(3, 0) = 0#: transMat(3, 1) = 0#
```
```	transMat(3, 2) = 0#: transMat(3, 3) = 1#
```

```	' Transform the line using the defined transformation matrix
```
```	lineObj.TransformBy transMat
```
```	lineObj.Update
```
```End Sub
```

The following are more examples of transformation matrices:

Rotation Matrix: 90 degrees about point (0, 0, 0)

0.0

-1.0

0.0

0.0

1.0

0.0

0.0

0.0

0.0

0.0

1.0

0.0

0.0

0.0

0.0

1.0

Rotation Matrix: 45 degrees about point (5, 5, 0)

0.707107

-0.707107

0.0

5.0

0.707107

0.707107

0.0

-2.071068

0.0

0.0

1.0

0.0

0.0

0.0

0.0

1.0

Translation Matrix: move an entity by (10, 10, 0)

1.0

0.0

0.0

10.0

0.0

1.0

0.0

10.0

0.0

0.0

1.0

0.0

0.0

0.0

0.0

1.0

Scaling Matrix: scale by 10,10 at point (0, 0, 0)

10.0

0.0

0.0

0.0

0.0

10.0

0.0

0.0

0.0

0.0

10.0

0.0

0.0

0.0

0.0

1.0

Scaling Matrix: scale by 10,10 at point (2, 2, 0)

10.0

0.0

0.0

-18.0

0.0

10.0

0.0

-18.0

0.0

0.0

10.0

0.0

0.0

0.0

0.0

1.0