Zの変換がうまくいってないのが原因ですね アフィン変換は回転拡大縮小平行移動が可能なので回転も行けます。 Zの取り扱いについてはZバッファを扱うには処理速度が不足(解像度100x100ですら画面の3分の1に重なりがあるだけで1ループ中に3000回の条件分岐が発生)しているのでZソートなどの方が無難です。