コード例 #1
0
ファイル: SetItem.java プロジェクト: Arty-fishL/Alice
    public void prologue(double t) {
      m_subject = subject.getModelVisualizationValue();
      m_value = item.getModelValue();
      Model prev = m_subject.getItem();
      if (prev != null && prev != m_value) {
        prev.visualization.set(null);
      }
      if (m_value != null) {

        // todo?
        m_value.visualization.set(null);

        Matrix44 transformation0 = m_value.getTransformation(m_subject);
        Matrix44 transformation1 = new Matrix44(m_subject.getTransformationFor(m_value));
        m_quaternion0 = transformation0.getAxes().getQuaternion();
        m_quaternion1 = transformation1.getAxes().getQuaternion();
        double dx = transformation0.m30 - transformation1.m30;
        double dy = transformation0.m31 - transformation1.m31;
        double dz = transformation0.m32 - transformation1.m32;
        double distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
        double s = distance / 2;
        m_xHermite =
            new HermiteCubic(
                transformation0.m30,
                transformation1.m30,
                transformation0.m20 * s,
                transformation1.m20 * s);
        m_yHermite =
            new HermiteCubic(
                transformation0.m31,
                transformation1.m31,
                transformation0.m21 * s,
                transformation1.m21 * s);
        m_zHermite =
            new HermiteCubic(
                transformation0.m32,
                transformation1.m32,
                transformation0.m22 * s,
                transformation1.m22 * s);
      }
      super.prologue(t);
    }