コード例 #1
0
ファイル: SCNMatrix4.cs プロジェクト: tondat/xamarin-macios
        /// <summary>
        /// Build a rotation matrix from a quaternion
        /// </summary>
        /// <param name="q">the quaternion</param>
        /// <returns>A rotation matrix</returns>
        public static SCNMatrix4 Rotate(Quaternion q)
        {
            SCNMatrix4 result;
            Vector3    axis;
            float      angle;

            q.ToAxisAngle(out axis, out angle);
            CreateFromAxisAngle(axis, angle, out result);
            return(result);
        }
コード例 #2
0
        public virtual Quaternion [] GetQuaternionValues()
        {
            var count    = ElementCount * TimeSampleCount;
            var timesArr = new Quaternion [(int)count];
            int typeSize = Marshal.SizeOf(typeof(Quaternion));

            unsafe {
                fixed(Quaternion *arrptr = timesArr)
                MDLMemoryHelper.FetchValues(typeSize, (IntPtr)arrptr, count, _GetFloatQuaternionArray);
            }

            return(timesArr);
        }
コード例 #3
0
        public virtual Quaternion [] GetQuaternionValues(double time)
        {
            var count    = ElementCount;
            var timesArr = new Quaternion [(int)count];

            unsafe {
                int typeSize = sizeof(Quaternion);

                fixed(Quaternion *arrptr = timesArr)
                MDLMemoryHelper.FetchValues(typeSize, (IntPtr)arrptr, count, time, _GetFloatQuaternionArray);
            }

            return(timesArr);
        }
コード例 #4
0
        public virtual Quaternion [] GetQuaternionValues(nuint maxCount)
        {
            var timesArr = new Quaternion [(int)maxCount];

            unsafe {
                int typeSize = sizeof(Quaternion);
                fixed(Quaternion *arrptr = timesArr)
                {
                    var rv = MDLMemoryHelper.FetchValues(typeSize, (IntPtr)arrptr, maxCount, _GetFloatQuaternionArray);

                    Array.Resize(ref timesArr, (int)rv);
                }
            }

            return(timesArr);
        }
コード例 #5
0
 public SCNQuaternion(Quaternion openTkQuaternion) : this(new SCNVector3(openTkQuaternion.XYZ), openTkQuaternion.W)
 {
 }