public float distance(final float xp, final float yp, final float zp) {
    final float
      xd = (xp < xpos) ? (xpos - xp) : ((xp > xmax) ? (xp - xmax) : 0),
      yd = (yp < ypos) ? (ypos - yp) : ((yp > ymax) ? (yp - ymax) : 0),
      zd = (zp < zpos) ? (zpos - zp) : ((zp > zmax) ? (zp - zmax) : 0) ;
    return (float) Math.sqrt((xd * xd) + (yd * yd) + (zd * zd)) ;
  }