public void RotateAroundLookPosition(Vector3 radians)
{
var matrix = Matrix3.LookAt((LookAtPosition - Position), (UpPosition - Position));
var matrixTranspose = matrix.Transpose();
matrix = matrix.RotateAroundAxisX(radians.X);
matrix = matrix.RotateAroundAxisY(radians.Y);
matrix = matrix.RotateAroundAxisZ(radians.Z);
Position -= LookAtPosition;
Position = Position.Transform(matrixTranspose);
Position = Position.Transform(matrix);
Position += LookAtPosition;
UpPosition -= LookAtPosition;
UpPosition = UpPosition.Transform(matrixTranspose);
UpPosition = UpPosition.Transform(matrix);
UpPosition += LookAtPosition;
}