public void ShouldConvertQuaternionAndPointToMatrixTransform3D() { var point = new Point3D(Random.Next(1000), Random.Next(1000), Random.Next(1000)); var quaternion = new Quaternion(Random.Next(1000), Random.Next(1000), Random.Next(1000), Random.Next(1000)); quaternion.Normalize(); var expected = new Transform3DGroup { Children = new Transform3DCollection { new TranslateTransform3D(point.X, point.Y, point.Z), new RotateTransform3D(new QuaternionRotation3D(quaternion), point) } }.Value; var test = Converter.Convert( new object[] { point.Convert(), quaternion.Convert() }, typeof(MatrixTransform3D)) as MatrixTransform3D; Assert.IsNotNull(test); GeometryAssert.AreEqual(expected, test.Value); }