예제 #1
0
  /**
   * 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;
    }
  }