private Color computeField(int x, int y) {
		Atom a;
		double intensity = 0.0;
		double xij, yij, rij;
		synchronized (getSynchronizedLock()) {
			for (Iterator it = iterator(); it.hasNext();) {
				a = (Atom) it.next();
				if (a.getCharge() > Particle.ZERO) {
					xij = x - a.rx;
					yij = y - a.ry;
					rij = Math.hypot(xij, yij);
					if (rij < 9)
						return new Color(255, 192, 192);
					intensity += a.getCharge() / rij;
				}
				else if (a.getCharge() < -Particle.ZERO) {
					xij = x - a.rx;
					yij = y - a.ry;
					rij = Math.hypot(xij, yij);
					if (rij < 9)
						return new Color(192, 192, 255);
					intensity += a.getCharge() / rij;
				}
			}
		}
		int color = Math.abs(intensity * 10000) < 255 ? (int) Math.abs(intensity * 10000) : 255;
		color = color < 192 ? 192 : color;
		if (intensity > 0)
			return new Color(color, 192, 192);
		return new Color(192, 192, color);
	}