EPSG:900913を使用する方法

EPSG:900913 (半径6378137mの球のメルカトル)をGoogle Maps APIのGTileLayerで使おうと考えました。
これは id:yellow_73:20061102 とか id:yellow_73:20060830 とかに関連するかも知れません。
半径が6378137mとして、赤道での一周は 40075017m ぐらい。東西方向はこれでいいです。
南北方向はちょっとややこしくなるかなと思って、Google Mapsで画像の北限緯度を測ってみると…忘れた。けど、大体赤道から北限までの距離は、赤道の半周と似たような距離になりました。ていうか正方形になるように切ってるのかな。
いずれにしても、zoom=0の時の画像は、ピクセル単位では256px * 256pxで、メートル単位では 40075017m * 40075017m 。タイルの総ピクセル数はzoomによって256*(2**zoおm) と与えられるので、zoomに応じて px/m は出ますね。
あと問題なのは原点。タイルは左上隅(西北隅)を原点にしてます。地図としてみたら、西経180度と画像北限が原点と。900913の原点は0E,0N。オフセットをとってあげる必要があります。
ということで、tile,zoomから左上隅(西北隅)の位置を得るには、

x: (tile.x*256-総ピクセル数/2) * (px/m)
y: (総ピクセル数/2-tile.y*256) * (px/m)
px/m: 40075017/総ピクセル数
総ピクセル数:  256*(2**zomm)

tile.x*256をtile.x*256+256で東端の経度が出ますし、同じように南端の緯度も出ます。

これでやったら、投影計算を行う必要がなくなるので、速度は若干上がることが期待されます。