public static bool HasChangedBy(this QuaternionData data, QuaternionData comparison, double rotationThreshold)
 {
     return((Mathf.Abs(data.x - comparison.x) > rotationThreshold) ||
            (Mathf.Abs(data.y - comparison.y) > rotationThreshold) ||
            (Mathf.Abs(data.z - comparison.z) > rotationThreshold) ||
            (Mathf.Abs(data.w - comparison.w) > rotationThreshold));
 }
Пример #2
0
 public void SaveAll()
 {
     health   = player.Health;
     stamina  = player.Stamina.Value;
     position = new Vector3Data(player.transform.position);
     rotation = new QuaternionData(player.transform.rotation);
 }
Пример #3
0
        private void OrientationSensor_ReadingChanged(object sender, OrientationSensorChangedEventArgs e)
        {
            OrientationSensorData reading = e.Reading;
            QuaternionData        data    = Orientation;

            data.Value     = reading.Orientation;
            data.TimeStamp = DateTime.UtcNow;
            data.SendNotification();
        }
Пример #4
0
            public unsafe OrientationDataPacket(UInt32 velocity, QuaternionData rotation) : this()
            {
                Velocity = velocity;
                Rotation = rotation;

                fixed(OrientationDataPacket *pointer = &this)
                {
                    Packet.GenerateHeader((Packet.Header *)pointer, (UInt16)Marshal.SizeOf(this), (byte)CustomPackets.Type.OrientationData);
                }
            }
Пример #5
0
    public RigidbodyData(Rigidbody body)
    {
        this.position = new Vector3Data(body.transform.position);
        this.rotation = new QuaternionData(body.transform.rotation);

        this.sleeping = body.IsSleeping();
        if (!sleeping)
        {
            this.velocity        = new Vector3Data(body.velocity);
            this.angularVelocity = new Vector3Data(body.angularVelocity);
        }
    }
Пример #6
0
    public static QuaternionData Serialize(this Quaternion q)
    {
        QuaternionData quaternionData = new QuaternionData
        {
            x = q.x,
            y = q.y,
            z = q.z,
            w = q.w
        };

        return(quaternionData);
    }
Пример #7
0
        /// <summary>
        /// xIMUserial CalInertialAndMagneticDataReceived event to update algorithm in AHRS mode.
        /// </summary>
        static void xIMUserial_CalInertialAndMagneticDataReceived_updateAHRS(object sender, x_IMU_API.CalInertialAndMagneticData e)
        {
            AHRS.Update(Deg2Rad(e.Gyroscope[0]), Deg2Rad(e.Gyroscope[1]), Deg2Rad(e.Gyroscope[2]), e.Accelerometer[0],
                        e.Accelerometer[1], e.Accelerometer[2], e.Magnetometer[0], e.Magnetometer[1], e.Magnetometer[2]);

            var quaternion     = new[] { AHRS.Quaternion[0], -AHRS.Quaternion[1], -AHRS.Quaternion[2], 0 };
            var quaternionData = new QuaternionData(quaternion);

            var conjugate      = quaternionData.ConvertToConjugate();
            var rotationMatrix = conjugate.ConvertToRotationMatrix();

            _form3DcuboidB.RotationMatrix = rotationMatrix;

            _stopWatch.Stop();
            _stopWatch.Reset();
        }
Пример #8
0
            public void ReadFromFile(MemoryStream stream, bool isBigEndian)
            {
                Unk0         = stream.ReadUInt32(isBigEndian);
                NumRotations = stream.ReadUInt32(isBigEndian);
                RotationData = new QuaternionData[NumRotations];

                for (int i = 0; i < NumRotations; i++)
                {
                    QuaternionData RotationInfo = new QuaternionData();
                    RotationInfo.KeyFrameStart = stream.ReadUInt32(isBigEndian);
                    RotationInfo.KeyFrameEnd   = stream.ReadUInt32(isBigEndian);
                    RotationInfo.Unk0          = stream.ReadUInt16(isBigEndian);
                    RotationInfo.KeyType       = stream.ReadUInt16(isBigEndian);
                    RotationInfo.Unk01         = stream.ReadByte8();
                    RotationInfo.Rotation      = QuaternionExtensions.ReadFromFile(stream, isBigEndian);
                    RotationInfo.Unk03         = stream.ReadSingle(isBigEndian);
                    RotationData[i]            = RotationInfo;
                }
            }
Пример #9
0
 /// <summary>
 /// constructor
 /// </summary>
 public OrientationSensorService(IotNode parent) : base("OrientationSensor", parent)
 {
     Orientation = QuaternionData.CreateZeroData(nameof(Orientation));
 }
Пример #10
0
 public static Quaternion Deserialize(this QuaternionData quaternionData)
 {
     return(new Quaternion(quaternionData.x, quaternionData.y, quaternionData.z, quaternionData.w));
 }
 public Quaternion Lerp(QuaternionData other, float factor)
 {
     return(Quaternion.Slerp(this.Regenerate(), other.Regenerate(), factor));
 }
Пример #12
0
 public TransformData(Vector3Data pos, QuaternionData rot, Vector3Data scale)
 {
     this.position = pos;
     this.rotation = rot;
     this.scale    = scale;
 }
Пример #13
0
 public TransformData(Vector3 pos, Quaternion rot, Vector3 scale)
 {
     this.position = new Vector3Data(pos);
     this.rotation = new QuaternionData(rot);
     this.scale    = new Vector3Data(scale);
 }
Пример #14
0
 public static Quaternion ToQuaternion(this QuaternionData quaternion)
 {
     return(new Quaternion(quaternion.x, quaternion.y, quaternion.z, quaternion.w));
 }