シンプルな 3D フレームワークを構築していますが、射影行列をベクトルに適用するときに問題が発生しました。
これは、私のパースペクティブプロジェクトを計算するために使用しているコードです:
var t = near * Math.tan(fov * Math.PI / 180);
var n = far - near;
// width height near far
this.setValues( near / (t * aspect), 0, 0, 0,
0, near / t, 0, 0,
0, 0, -(far + near) / n, -(2 * far * near) / n,
0, 0, -1, 1 );
そして、次のように投影をベクトルに適用します。
var w = 1 / ( x * e[3] ) + ( y * e[7] ) + ( z * e[11] ) + e[15];
this.x = (x * e[0] + y * e[4] + z * e[8] + e[12]) * w;
this.y = (x * e[1] + y * e[5] + z * e[9] + e[13]) * w;
this.z = (x * e[2] + y * e[6] + z * e[10] + e[14]) * w;
問題は、ベクトルが常に [ X: NaN Y: NaN Z: -Infinity ] になることです。
なぜ数値を返さないのか理解できませんか? これは、計算された射影行列が以下のように見えるものです。
-----------------
| 0.5570236439499305, 0, 0, 0 |
| 0, 1.0000000000000002, 0, 0 |
| 0, 0, -1.0618556701030928, -61.855670103092784 |
| 0, 0, -1, 1 |
-----------------