in Tools/Cam360/MainPage.xaml.cs [878:899]
public Quaternion CreateFromHeadingPitchRoll(double heading, double pitch, double roll)
{
Quaternion result;
double headingPart = DegreetoRadians(heading) * 0.5;
double sin1 = Math.Sin(headingPart);
double cos1 = Math.Cos(headingPart);
double pitchPart = DegreetoRadians(-pitch) * 0.5;
double sin2 = Math.Sin(pitchPart);
double cos2 = Math.Cos(pitchPart);
double rollPart = DegreetoRadians(roll) * 0.5;
double sin3 = Math.Sin(rollPart);
double cos3 = Math.Cos(rollPart);
result.W = (float)(cos1 * cos2 * cos3 - sin1 * sin2 * sin3);
result.X = (float)(cos1 * cos2 * sin3 + sin1 * sin2 * cos3);
result.Y = (float)(sin1 * cos2 * cos3 + cos1 * sin2 * sin3);
result.Z = (float)(cos1 * sin2 * cos3 - sin1 * cos2 * sin3);
return result;
}