Guest User

Untitled

a guest
Jul 15th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. public class Vector3D
  2. {
  3. public float X;
  4. public float Y;
  5. public float Z;
  6.  
  7. public Vector3D(float x, float y, float z)
  8. {
  9. X = x;
  10. Y = y;
  11. Z = z;
  12. }
  13.  
  14. public Vector3D()
  15. {
  16. X = 0;
  17. Y = 0;
  18. Z = 0;
  19. }
  20.  
  21. public bool IsValid()
  22. {
  23. return ((X == 0) && (Y == 0) && (Z == 0)) ? false : true;
  24. }
  25.  
  26. public Vector3D Normalize()
  27. {
  28. double length = Math.Sqrt(X * X + Y * Y + Z * Z);
  29. var v = new Vector3D();
  30. v.X = (float)(X / length);
  31. v.Y = (float)(Y / length);
  32. v.Z = (float)(Z / length);
  33. return v;
  34. }
  35.  
  36. public override string ToString()
  37. {
  38. return string.Format("{0}|{1}|{2}", X, Y, Z);
  39. }
  40.  
  41. public static bool operator ==(Vector3D v1, Vector3D v2)
  42. {
  43. return v1.X == v2.X && v1.Y == v2.Y && v1.Z == v2.Z;
  44. }
  45.  
  46. public static bool operator !=(Vector3D v1, Vector3D v2)
  47. {
  48. return !(v1 == v2);
  49. }
  50.  
  51. public static Vector3D operator *(Vector3D v, float n)
  52. {
  53. return new Vector3D(v.X * n, v.Y * n, v.Z * n);
  54. }
  55.  
  56. public static float operator *(Vector3D v1, Vector3D v2)
  57. {
  58. float f;
  59. f = v1.X * v2.X + v1.Y * v2.Y + v1.Z * v2.Z;
  60. return f;
  61. }
  62.  
  63. public static Vector3D operator +(Vector3D v1, Vector3D v2)
  64. {
  65. return new Vector3D(v1.X + v2.X, v1.Y + v2.Y, v1.Z + v2.Z);
  66. }
  67.  
  68. public static Vector3D operator -(Vector3D v1, Vector3D v2)
  69. {
  70. var v3 = new Vector3D((v1.X - v2.X), (v1.Y - v2.Y), (v1.Z - v2.Z));
  71. return v3;
  72. }
  73.  
  74. public bool Equals(Vector3D obj)
  75. {
  76. if (ReferenceEquals(null, obj))
  77. {
  78. return false;
  79. }
  80. if (ReferenceEquals(this, obj))
  81. {
  82. return true;
  83. }
  84. return obj.X == X && obj.Y == Y && obj.Z == Z;
  85. }
  86.  
  87. public override bool Equals(object obj)
  88. {
  89. if (ReferenceEquals(null, obj))
  90. {
  91. return false;
  92. }
  93. if (ReferenceEquals(this, obj))
  94. {
  95. return true;
  96. }
  97. if (obj.GetType() != typeof(Vector3D))
  98. {
  99. return false;
  100. }
  101. return Equals((Vector3D)obj);
  102. }
  103.  
  104. public override int GetHashCode()
  105. {
  106. unchecked
  107. {
  108. int result = X.GetHashCode();
  109. result = (result * 397) ^ Y.GetHashCode();
  110. result = (result * 397) ^ Z.GetHashCode();
  111. return result;
  112. }
  113. }
  114. }
Add Comment
Please, Sign In to add comment