CVR_MathTool.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. namespace ChivaXR.VR
  2. {
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. public class CVR_MathTool
  7. {
  8. /// <summary>
  9. /// 根据ToolAxis获取分量为Value的Vec3值
  10. /// </summary>
  11. /// <param name="axis"></param>
  12. /// <param name="value"></param>
  13. /// <returns></returns>
  14. public static Vector3 GetToolAxisVector3(ToolAxis axis, float value)
  15. {
  16. switch (axis)
  17. {
  18. case ToolAxis.x:
  19. return new Vector3(value, 0, 0);
  20. case ToolAxis.y:
  21. return new Vector3(0, value, 0);
  22. case ToolAxis.z:
  23. return new Vector3(0, 0, value);
  24. }
  25. return Vector3.zero;
  26. }
  27. /// <summary>
  28. /// 根据ToolAxis获取Vec3的分量值
  29. /// </summary>
  30. /// <param name="axis"></param>
  31. /// <param name="vec3"></param>
  32. /// <returns></returns>
  33. public static float GetToolAxisVec3Value(ToolAxis axis, Vector3 vec3)
  34. {
  35. switch (axis)
  36. {
  37. case ToolAxis.x:
  38. return vec3.x;
  39. case ToolAxis.y:
  40. return vec3.y;
  41. case ToolAxis.z:
  42. return vec3.z;
  43. }
  44. return 0;
  45. }
  46. /// <summary>
  47. /// Vec3消除ToolAxis分量值
  48. /// </summary>
  49. /// <param name="axis"></param>
  50. /// <param name="vec3"></param>
  51. /// <returns></returns>
  52. public static Vector3 Vec3RemoveToolAxisValue(ToolAxis axis, Vector3 vec3)
  53. {
  54. switch (axis)
  55. {
  56. case ToolAxis.x:
  57. return new Vector3(0, vec3.y, vec3.z);
  58. case ToolAxis.y:
  59. return new Vector3(vec3.x, 0, vec3.z);
  60. case ToolAxis.z:
  61. return new Vector3(vec3.x, vec3.y, 0);
  62. }
  63. return Vector3.zero;
  64. }
  65. /// <summary>
  66. /// 获取ToolAxis的Vector3
  67. /// </summary>
  68. /// <param name="axis"></param>
  69. /// <returns></returns>
  70. public static Vector3 GetToolAxisVec3(ToolAxis axis)
  71. {
  72. switch (axis)
  73. {
  74. case ToolAxis.x:
  75. return Vector3.right;
  76. case ToolAxis.y:
  77. return Vector3.up;
  78. case ToolAxis.z:
  79. return Vector3.forward;
  80. }
  81. return Vector3.zero;
  82. }
  83. /// <summary>
  84. /// 获取ToolAxis相对于Transform的Local -Vector3
  85. /// </summary>
  86. /// <param name="item"></param>
  87. /// <param name="axis"></param>
  88. /// <returns></returns>
  89. public static Vector3 GetToolAxisLocalVec3(Transform item, ToolAxis axis)
  90. {
  91. switch (axis)
  92. {
  93. case ToolAxis.x:
  94. return item.right;
  95. case ToolAxis.y:
  96. return item.up;
  97. case ToolAxis.z:
  98. return item.forward;
  99. }
  100. return Vector3.zero;
  101. }
  102. }
  103. }