The radiosity method is a partial solution to the global illumination problem, aimed at solving interreflections between diffuse surfaces within a closed environment. The method does not address the problems with diffuse-specular, specular-diffuse or specular-specular interreflections. The original graphics of the spectral space rendering from Cornell University using a true radiosity algorithm is here.
Overview of the radiosity method
A central concept of the radiosity method is patches, which are rectangular areas that emit and receive radiosity
from other patches, thus simulating light interaction.
The environment's geometry is divided into patches. Patches, which are not light sources, initially have zero intensity,
while patches that are light-sources is set to an initial amount of energy, depending on the intensity of the light-source.
The goal is to calculate the amount of radiation each patch receives from the environment, as this is an estimate of the diffuse light intensity. This is done iteratively, by calculating radiosity at all patches until the maximal energy amount radiated is under a certain threshold. Termination is assured by the fact, that an amount of the received radiated energy is absorbed at each interaction.
The radiative interaction between patches has to take several things into account: distance, angle and the areas of the patches, and furthermore any intervening patches also effect the solution. These problems are adressed by Form Factors. Form Factors describes the fraction of radiation that leaves a patch and arrives at any other patch.
The radiosity method produces a view-independent solution, as the calculated radiosity intensities are only affected by geometry and the positions of light sources.
A screenshot from the implementation, notice the color bleeding on the boxes.

Patches are rectangular areas, which are assumed to have the same radiosity over all their area. Also, patchs are assumed to be a perfectly diffuse Lambertian surfaces (Lambertian = perfectly flat), so no subsurface scattering of the light takes place (perfect diffuse = reflects incomming radiosity equal in all directions).
The patches are constructed based on the scene's geometry. The accuracy of the solution is largely influcenced by the granularity of the patches, more patches yield a better solution, but also increases the calculation time. Solutions for adaptive subdivision of patches exists. These algorithms subdivide patches into smaller patches in areas where the radiosity changes drastically, for example in shadow boundaries. This gives a comparably better solution with less performance impact, compared to just settting the granularity of the whole scene higher.
In the examplehere triangles were used as patches, despite their definition as rectangular:

The radiosity of a patch is the total amount of energy leaving the patch, which is equal to the sum of received radiation and the radiation emitted.
The Form Factor Fij of two areas (patches) Ai and Aj is the fraction of radiation leaving Ai that reaches Aj:
Additional detail on form factors is here.
A double integral is rather difficult to calculate analytically for generic geometry, and therefore another approach to solving the above equation is nescessary. A solution is to use a hemicube.
Usage of the hemicube in Form Factor determination
The hemicube Form Factor is an efficient but approximative solution to Form Factor determination. The justification of the hemicube is easiest seen from the below picture

The hemicube is placed centered on the patch, oriented so that the top of the hemicube is orthogonal to the patch's normal vector, see below.




Implementation note: An easy way to test the calculated Form Factors is, that the sum of all the Form Factors at a given patch must equal one:
To recap, the radiosity Bi of a patch Pi is the sum of emitted radiosity and the radiosity received from other patches:
A solution of the matrix has to be done for each wavelength - in the case of RGB this means for red, green and blue values. The solution is reached by solving the matrix iteratively until the maximal radiation interchanged by two patches is below a certain threshold. Since Ρ is less than one (which means that the patch absorbs some of the radiation), the total amount of radiation is decreased each iteration, ensuring termination of the iteration.
Radiosity vs. Ray Tracing