コード例 #1
0
        internal void TNUpdateTextValues(SimPe.Geometry.Quaternion q, bool quat, bool axis, bool euler)
        {
            //set Angles
            try
            {
                this.tb_tn_a.Tag = true;
                if (quat)
                {
                    this.tb_tn_rx.Text = q.X.ToString("N6");
                    this.tb_tn_ry.Text = q.Y.ToString("N6");
                    this.tb_tn_rz.Text = q.Z.ToString("N6");
                    this.tb_tn_rw.Text = q.W.ToString("N6");
                }

                if (axis)
                {
                    this.tb_tn_ax.Text = q.Axis.X.ToString("N6");
                    this.tb_tn_ay.Text = q.Axis.Y.ToString("N6");
                    this.tb_tn_az.Text = q.Axis.Z.ToString("N6");
                    this.tb_tn_a.Text  = SimPe.Geometry.Quaternion.RadToDeg(q.Angle).ToString("N6");
                }

                if (euler)
                {
                    SimPe.Geometry.Vector3f ea = q.GetEulerAngles();
                    this.tb_tn_ey.Text = SimPe.Geometry.Quaternion.RadToDeg(ea.Y).ToString("N6");
                    this.tb_tn_ep.Text = SimPe.Geometry.Quaternion.RadToDeg(ea.X).ToString("N6");
                    this.tb_tn_er.Text = SimPe.Geometry.Quaternion.RadToDeg(ea.Z).ToString("N6");
                }
            }
            finally
            {
                this.tb_tn_a.Tag = null;
            }
        }
コード例 #2
0
        private void TNChangedEulerQuaternion(object sender, System.EventArgs e)
        {
            if (this.tb_tn_a.Tag != null)
            {
                return;
            }
            if (Tag == null)
            {
                return;
            }
            try
            {
                SimPe.Plugin.TransformNode tn = (SimPe.Plugin.TransformNode)Tag;
                SimPe.Geometry.Quaternion  q  = SimPe.Geometry.Quaternion.FromEulerAngles(
                    SimPe.Geometry.Quaternion.DegToRad(Convert.ToSingle(tb_tn_ey.Text)),
                    SimPe.Geometry.Quaternion.DegToRad(Convert.ToSingle(tb_tn_ep.Text)),
                    SimPe.Geometry.Quaternion.DegToRad(Convert.ToSingle(tb_tn_er.Text))
                    );
                tn.Rotation = q;

                TNUpdateTextValues(q, true, true, false);
            }
            catch {}
            finally
            {
                this.tb_tn_a.Tag = null;
            }
        }
コード例 #3
0
        public SimPe.Geometry.Quaternion InverseTransformRotation(SimPe.Geometry.Quaternion q)
        {
            SimPe.Geometry.Vector3f r = q.Axis;
            r = this.InverseTransform(r);
            q = SimPe.Geometry.Quaternion.FromAxisAngle(r, q.Angle);

            return(q);
        }
コード例 #4
0
        private void TNChangeSettings(object sender, System.EventArgs e)
        {
            if (this.tb_tn_a.Tag != null)
            {
                return;
            }
            if (Tag == null)
            {
                return;
            }
            try
            {
                SimPe.Plugin.TransformNode tn = (SimPe.Plugin.TransformNode)Tag;

                tn.Version        = Convert.ToUInt32(tb_tn_ver.Text, 16);
                tn.JointReference = Convert.ToInt32(tb_tn_ukn.Text, 16);

                tn.TransformX = Convert.ToSingle(tb_tn_tx.Text);
                tn.TransformY = Convert.ToSingle(tb_tn_ty.Text);
                tn.TransformZ = Convert.ToSingle(tb_tn_tz.Text);

                tn.RotationX = Convert.ToSingle(tb_tn_rx.Text);
                tn.RotationY = Convert.ToSingle(tb_tn_ry.Text);
                tn.RotationZ = Convert.ToSingle(tb_tn_rz.Text);
                tn.RotationW = Convert.ToSingle(tb_tn_rw.Text);


                //set Angles


                SimPe.Geometry.Quaternion q = tn.Rotation;
                TNUpdateTextValues(q, false, true, true);

                tn.Changed = true;
            }
            catch (Exception)
            {
                //Helper.ExceptionMessage("", ex);
            }
        }