コード例 #1
0
            /**
             * 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;
            }
コード例 #2
0
            /**
             * 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;
            }