Function MakeQuatFromEuler:tquaternion(x:Double, y:Double, z:Double) Local roll:Double = DegreesToRadians(x) Local pitch:Double= DegreesToRadians(y) Local yaw:Double = DegreesToRadians(z) Local cyaw:Double, cpitch:Double, croll:Double, syaw:Double, spitch:Double, sroll:Double Local cyawcpitch:Double, syawspitch:Double, cyawspitch:Double, syawcpitch:Double cyaw = Cos(0.5 * yaw) cpitch = Cos(0.5 * pitch) croll = Cos(0.5 * roll) syaw = Sin(0.5 * yaw) spitch = Sin(0.5 * pitch) sroll = Sin(0.5 * roll) cyawcpitch = cyaw*cpitch syawspitch = syaw*spitch cyawspitch = cyaw*spitch syawcpitch = syaw*cpitch Local nf:Double = Double (cyawcpitch * croll + syawspitch * sroll) Local xf:Double = Double (cyawcpitch * sroll - syawspitch * croll) Local yf:Double = Double (cyawspitch * croll + syawcpitch * sroll) Local zf:Double = Double (syawcpitch * croll - cyawspitch * sroll) Return tquaternion.Create(nf,xf,yf,zf) End Function