public void reflection(int index, int[] rgb, int level) {
		level++;
		if (level < 2) {
			if ((allSphere[index].getMat().mirrorColor[0] != 0)
					&& (allSphere[index].getMat().mirrorColor[1] != 0)
					&& (allSphere[index].getMat().mirrorColor[2] != 0)) {
				double dist = 2.0 * vec.dot(normal, w);
				ReflectedRay[0] = w[0] - (dist * normal[0]);
				ReflectedRay[1] = w[1] - (dist * normal[1]);
				ReflectedRay[2] = w[2] - (dist * normal[2]);

				double[] vv = { 0.0, 0.0, 0.0 };
				double[] ww = { 0.0, 0.0, 0.0 };
				vv[0] = nn[0] + (epsilon * w[0]);
				vv[1] = nn[1] + (epsilon * w[1]);
				vv[2] = nn[2] + (epsilon * w[2]);
				ww[0] = ReflectedRay[0];
				ww[1] = ReflectedRay[1];
				ww[2] = ReflectedRay[2];

				int[] refColor = { 0, 0, 0 };
				if (TraceMyRay(vv, ww, refColor, level)) {
					for (int i = 0; i < 3; i++) {
						rgb[i] = (int) (rgb[i]
								* (1.0 - allSphere[index].getMat().mirrorColor[i]) + refColor[i]
								* allSphere[index].getMat().mirrorColor[i]);
					}
				}
			}
		}
	}