public GtkGL.TransformationMatrix ToTransMatrix()
{
double[] transMatrix = new double[16];
transMatrix[4 * 0 + 0] = 1.0 - 2.0f * (y * y + z * z);
transMatrix[4 * 0 + 1] = 2.0 * (x * y - z * w);
transMatrix[4 * 0 + 2] = 2.0 * (z * x + y * w);
transMatrix[4 * 1 + 0] = 2.0 * (x * y + z * w);
transMatrix[4 * 1 + 1]= 1.0 - 2.0f * (z * z + x * x);
transMatrix[4 * 1 + 2] = 2.0 * (y * z - x * w);
transMatrix[4 * 2 + 0] = 2.0 * (z * x - y * w);
transMatrix[4 * 2 + 1] = 2.0 * (y * z + x * w);
transMatrix[4 * 2 + 2] = 1.0 - 2.0f * (y * y + x * x);
transMatrix[3] = transMatrix[7] = transMatrix[11] =
transMatrix[12] = transMatrix[13] = transMatrix[14] = 0.0;
transMatrix[15] = 1.0;
return new GtkGL.TransformationMatrix(transMatrix);
}