File size: 748 Bytes
1b5e137
4e1da8c
5f32ba4
4e1da8c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3b7903d
 
4e1da8c
 
 
 
 
 
 
3b7903d
5f32ba4
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { Camera } from "./Camera";

class PerspectiveCamera extends Camera {
    fx: number;
    fy: number;

    near: number;
    far: number;

    constructor(fx: number = 1132, fy: number = 1132, near: number = 0.1, far: number = 100) {
        super();

        this.fx = fx;
        this.fy = fy;
        this.near = near;
        this.far = far;
    }

    updateProjectionMatrix(width: number, height: number): void {
        // prettier-ignore
        this.projectionMatrix.set(
            2 * this.fx / width, 0, 0, 0,
            0, -2 * this.fy / height, 0, 0,
            0, 0, this.far / (this.far - this.near), 1,
            0, 0, -this.near * this.far / (this.far - this.near), 0
        );
    }
}

export { PerspectiveCamera };