/** * icpGetMat_from_S+ icpGetMat_from_Q * @param i_val */ public void setDeltaS(DeltaS i_val) { Q q2 = this.__q2; q2.setS(i_val); double cra, one_cra, sra; cra = Math.Cos(q2.q3); one_cra = 1.0 - cra; sra = Math.Sin(q2.q3); this.m00 = q2.q0 * q2.q0 * one_cra + cra; this.m01 = q2.q0 * q2.q1 * one_cra - q2.q2 * sra; this.m02 = q2.q0 * q2.q2 * one_cra + q2.q1 * sra; this.m03 = q2.q4; this.m10 = q2.q1 * q2.q0 * one_cra + q2.q2 * sra; this.m11 = q2.q1 * q2.q1 * one_cra + cra; this.m12 = q2.q1 * q2.q2 * one_cra - q2.q0 * sra; this.m13 = q2.q5; this.m20 = q2.q2 * q2.q0 * one_cra - q2.q1 * sra; this.m21 = q2.q2 * q2.q1 * one_cra + q2.q0 * sra; this.m22 = q2.q2 * q2.q2 * one_cra + cra; this.m23 = q2.q6; return; }
/** * icpGetQ_from_S関数です。 * @param i_val */ public void setS(DeltaS i_val) { double ra = i_val.s0 * i_val.s0 + i_val.s1 * i_val.s1 + i_val.s2 * i_val.s2; if (ra == 0.0) { this.q0 = 1.0; this.q1 = 0.0; this.q2 = 0.0; this.q3 = 0.0; } else { ra = Math.Sqrt(ra); this.q0 = i_val.s0 / ra; this.q1 = i_val.s1 / ra; this.q2 = i_val.s2 / ra; this.q3 = ra; } this.q4 = i_val.s3; this.q5 = i_val.s4; this.q6 = i_val.s5; return; }