public void Set(float x, float y, float z)
{
double angle;
angle = x * 0.5;
double sr = (float)Math.Sin(angle);
double cr = (float)Math.Cos(angle);
angle = y * 0.5;
double sp = (float)Math.Sin(angle);
double cp = (float)Math.Cos(angle);
angle = z * 0.5;
double sy = (float)Math.Sin(angle);
double cy = (float)Math.Cos(angle);
double cpcy = cp * cy;
double spcy = sp * cy;
double cpsy = cp * sy;
double spsy = sp * sy;
m_x = (float)(sr * cpcy - cr * spsy);
m_y = (float)(cr * spcy + sr * cpsy);
m_z = (float)(cr * cpsy - sr * spcy);
m_w = (float)(cr * cpcy + sr * spsy);
Normalize();
}