I would like to know how to calculate perspective precedence in 3D space. (I'm not a mathematician, so I don't know if it's the correct term, but I will try to explain what I need).

I have an observer in space (px, py, pz).

I also have a Rubik’s Cube, with 27 "little cubes".

I have to calculate the sequence of the nearer cubes, from observer's perspective.

I tried to use the distance's formula to calculate this precedence between the 27 little cubes, but it doesn't help when I have some cubes rotated. I believe that there is something else to calculate, but I don't know what it is.

The problem is seen in picture below:

The image shows the moment I'm trying to rotate it and sort using the distance formula. But the cubes with gray faces are in wrong perspective precedence.

The distance formula I use is in http://www.flashandmath.com/flashcs4/zsort/sortpic.jpg

Thanks, and sorry if I wasn't so clear!