byte getFace(ExtendedViewer viewer, int x, int y) {
		byte i = 0;
		for (byte j = FRONT; j <= LEFT; j++) {
			if (intersectFace(viewer, j, x, y)) {
				iOn[i++] = j;
			}
		}
		if (i == 0) {
			return -1;
		}
		byte face = -1;
		if (i == 2) {
			if (reusedP3f1 == null) {
				reusedP3f1 = new Point3f();
				reusedP3f2 = new Point3f();
			}
			reusedP3f1.set(getFaceCenter(iOn[0]));
			reusedP3f2.set(getFaceCenter(iOn[1]));
			if (reusedP3i1 == null) {
				reusedP3i1 = new Point3i();
				reusedP3i2 = new Point3i();
			}
			viewer.transformPoint(reusedP3f1, reusedP3i1);
			viewer.transformPoint(reusedP3f2, reusedP3i2);
			if (reusedP3i1.z < reusedP3i2.z) {
				face = iOn[0];
				zDepth = reusedP3i1.z;
			}
			else {
				face = iOn[1];
				zDepth = reusedP3i2.z;
			}
		}
		else {
			face = iOn[0];
			System.err.println("only one face index is found: " + face);
		}
		return face;
	}