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