add camera
This commit is contained in:
parent
2795ee3ada
commit
72f9691c67
31
src/camera.ts
Normal file
31
src/camera.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import {mat4, vec3, quat, mat3} from "gl-matrix";
|
||||||
|
|
||||||
|
export class Camera{
|
||||||
|
pos:vec3;
|
||||||
|
rot:quat;
|
||||||
|
constructor(pos:vec3,rot?:quat){
|
||||||
|
this.pos = pos;
|
||||||
|
if(rot == undefined){
|
||||||
|
const lookAt = mat4.lookAt(mat4.create(),this.pos,[0,0,0],[0,0,1])
|
||||||
|
const rotMat = mat3.fromMat4(mat3.create(),lookAt);
|
||||||
|
this.rot = quat.fromMat3(quat.create(), rotMat);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.rot = rot;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rotateRight(rad:number){
|
||||||
|
quat.rotateY(this.rot,this.rot,rad);
|
||||||
|
}
|
||||||
|
rotateUp(rad:number){
|
||||||
|
quat.rotateX(this.rot,this.rot,rad);
|
||||||
|
}
|
||||||
|
rotateClockwise(rad:number){
|
||||||
|
quat.rotateZ(this.rot,this.rot,rad);
|
||||||
|
}
|
||||||
|
getViewMat(){
|
||||||
|
const r = mat4.fromQuat(mat4.create(),this.rot);
|
||||||
|
mat4.translate(r,r,this.pos);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user