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; } }
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; } }
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); }
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); } }