object3d.ts 849 B

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author Alexander Rose <alexander.rose@weirdbyte.de>
  5. */
  6. import { Vec3, Mat4 } from '../mol-math/linear-algebra';
  7. export interface Object3D {
  8. readonly view: Mat4
  9. readonly position: Vec3
  10. readonly direction: Vec3
  11. readonly up: Vec3
  12. }
  13. export namespace Object3D {
  14. export function create(): Object3D {
  15. return {
  16. view: Mat4.identity(),
  17. position: Vec3.create(0, 0, 0),
  18. direction: Vec3.create(0, 0, -1),
  19. up: Vec3.create(0, 1, 0),
  20. };
  21. }
  22. const center = Vec3.zero();
  23. export function update(object3d: Object3D) {
  24. Vec3.add(center, object3d.position, object3d.direction);
  25. Mat4.lookAt(object3d.view, object3d.position, center, object3d.up);
  26. }
  27. }