# Matrix3D RotateAtPrepend : Matrix3D « Windows Presentation Foundation « C# / CSharp Tutorial

```<Window x:Class="WpfApplication1.Matrix3DTransforms"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Matrix3D Transformations" Height="450" Width="300">
<StackPanel>
<TextBlock Margin="10,10,5,5" Text="Original Matrix:" />
<TextBlock Name="tbOriginal" Margin="20,0,5,5" />
<TextBlock Margin="10,0,5,5" Text="Scale:" />
<TextBlock Name="tbResult" Margin="20,0,5,5" />

</StackPanel>
</Window>
//File:Window.xaml.cs

using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Media3D;

namespace WpfApplication1
{
public partial class Matrix3DTransforms : Window
{
public Matrix3DTransforms()
{
InitializeComponent();
Matrix3D M = new Matrix3D(1, 2, 3, 4,
2, 1, 0, 0,
0, 0, 1, 0,
1, 2, 3, 1);

tbOriginal.Text = "(" + M.ToString() + ")";

//Translation:
M.RotateAtPrepend(new Quaternion(new Vector3D(1, 2, 3), 45),new Point3D(10, 20, 30));
tbResult.Text = "(" + M.ToString() + ")";
}
}
}
```
 24.160.Matrix3D 24.160.1. Matrix3D scale transformation 24.160.2. Matrix3D ScalePrepend 24.160.3. Matrix3D Translation 24.160.4. Matrix3D TranslatePrepend 24.160.5. Matrix3D Rotate 24.160.6. Matrix3D RotateAt 24.160.7. Matrix3D RotateAtPrepend 24.160.8. Object Transforms in WPF