This is an HTML5 version of my earlier Java creation, Frax.
Having calculated the landscape, the colours of each square are calculated according to some simple rules:
Despite appearing to be 3D, the entire grid is actually rendered in 2D. There is no perspective, so it's more of a rotating isometric drawing.
The grid is drawn from the back, forwards. This eliminates the need to calculate hidden line removal. Hidden lines are simply overwritten.