Vec3Util.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Vec2, Vec3 } from "cc";
  2. export class Vec3Util {
  3. //获得两个三维向量的差
  4. static sub(pos1: Vec3, pos2: Vec3) {
  5. let out = new Vec3();
  6. Vec3.subtract(out, pos1, pos2);
  7. return out;
  8. }
  9. //三维向量乘以常量
  10. static mul(pos: Vec3, scalar: number) {
  11. let out = new Vec3();
  12. Vec3.multiplyScalar(out, pos, scalar);
  13. return out;
  14. }
  15. //三维向量除常量
  16. static div(pos: Vec3, scalar: number) {
  17. let out = new Vec3();
  18. out.x = pos.x / scalar;
  19. out.y = pos.y / scalar;
  20. out.z = pos.z / scalar;
  21. return out;
  22. }
  23. //两个三维向量是否相等
  24. static equals(pos1: Vec3, pos2: Vec3) {
  25. return (pos1.x == pos2.x && pos1.y == pos2.y && pos1.z == pos2.z) ? true : false;
  26. }
  27. //获得pos1到pos2的方向
  28. static direction(pos1: Vec3, pos2: Vec3) {
  29. let out = new Vec3();
  30. Vec3.subtract(out, pos2, pos1)
  31. return out.normalize();
  32. }
  33. //获得pos1到pos2的距离
  34. static distance(pos1: Vec3, pos2: Vec3) {
  35. let temp1 = pos1.clone(), temp2 = pos2.clone();
  36. temp1.z = temp2.z = 0;
  37. return Vec3.distance(temp1, temp2);
  38. }
  39. }