/** * Compute the vertex positions for the four voxels in the current slice to be bilinearly * interpolated. * * @param i0 the current permuted indices of the upper left voxel in the 2x2 block of voxels in * the slice * @param i1 DOCUMENT ME! * @param i2 DOCUMENT ME! */ protected final void computePositions(int i0, int i1, int i2) { switch (m_iPermute) { case 0: m_kP00.x = i0 - (0.5f * m_aiBound[0]); m_kP00.y = i1 - (0.5f * m_aiBound[1]); m_kP00.z = i2 - (0.5f * m_aiBound[2]); m_kP10.x = m_kP00.x + 1.0f; m_kP10.y = m_kP00.y; m_kP10.z = m_kP00.z; m_kP01.x = m_kP00.x; m_kP01.y = m_kP00.y + 1.0f; m_kP01.z = m_kP00.z; m_kP11.x = m_kP10.x; m_kP11.y = m_kP01.y; m_kP11.z = m_kP00.z; break; case 1: m_kP00.y = i0 - (0.5f * m_aiBound[1]); m_kP00.z = i1 - (0.5f * m_aiBound[2]); m_kP00.x = i2 - (0.5f * m_aiBound[0]); m_kP10.y = m_kP00.y + 1.0f; m_kP10.z = m_kP00.z; m_kP10.x = m_kP00.x; m_kP01.y = m_kP00.y; m_kP01.z = m_kP00.z + 1.0f; m_kP01.x = m_kP00.x; m_kP11.y = m_kP10.y; m_kP11.z = m_kP01.z; m_kP11.x = m_kP00.x; break; case 2: m_kP00.z = i0 - (0.5f * m_aiBound[2]); m_kP00.x = i1 - (0.5f * m_aiBound[0]); m_kP00.y = i2 - (0.5f * m_aiBound[1]); m_kP10.z = m_kP00.z + 1.0f; m_kP10.x = m_kP00.x; m_kP10.y = m_kP00.y; m_kP01.z = m_kP00.z; m_kP01.x = m_kP00.x + 1.0f; m_kP01.y = m_kP00.y; m_kP11.z = m_kP10.z; m_kP11.x = m_kP01.x; m_kP11.y = m_kP00.y; break; } }