Advertisement
Guest User

Untitled

a guest
Jul 20th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.94 KB | None | 0 0
  1. package net.minecraft.util;
  2.  
  3. public class Vec3 {
  4. /** X coordinate of Vec3D */
  5. public final double xCoord;
  6.  
  7. /** Y coordinate of Vec3D */
  8. public final double yCoord;
  9.  
  10. /** Z coordinate of Vec3D */
  11. public final double zCoord;
  12. private static final String __OBFID = "CL_00000612";
  13.  
  14. public Vec3(double x, double y, double z) {
  15. if (x == -0.0D) {
  16. x = 0.0D;
  17. }
  18.  
  19. if (y == -0.0D) {
  20. y = 0.0D;
  21. }
  22.  
  23. if (z == -0.0D) {
  24. z = 0.0D;
  25. }
  26.  
  27. this.xCoord = x;
  28. this.yCoord = y;
  29. this.zCoord = z;
  30. }
  31.  
  32. public Vec3(final Vec3i vector) {
  33. this(vector.getX(), vector.getY(), vector.getZ());
  34. }
  35.  
  36. /**
  37. * Returns a new vector with the result of the specified vector minus this.
  38. */
  39. public Vec3 subtractReverse(Vec3 vec) {
  40. return new Vec3(vec.xCoord - this.xCoord, vec.yCoord - this.yCoord, vec.zCoord - this.zCoord);
  41. }
  42.  
  43. public Vec3 scale(final double p_186678_1_) {
  44. return new Vec3(this.xCoord * p_186678_1_, this.yCoord * p_186678_1_, this.zCoord * p_186678_1_);
  45. }
  46.  
  47. /**
  48. * Normalizes the vector to a length of 1 (except if it is the zero vector)
  49. */
  50. public Vec3 normalize() {
  51. double var1 = MathHelper
  52. .sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord);
  53. return var1 < 1.0E-4D ? new Vec3(0.0D, 0.0D, 0.0D)
  54. : new Vec3(this.xCoord / var1, this.yCoord / var1, this.zCoord / var1);
  55. }
  56.  
  57. public double dotProduct(Vec3 vec) {
  58. return this.xCoord * vec.xCoord + this.yCoord * vec.yCoord + this.zCoord * vec.zCoord;
  59. }
  60.  
  61. /**
  62. * Returns a new vector with the result of this vector x the specified
  63. * vector.
  64. */
  65. public Vec3 crossProduct(Vec3 vec) {
  66. return new Vec3(this.yCoord * vec.zCoord - this.zCoord * vec.yCoord,
  67. this.zCoord * vec.xCoord - this.xCoord * vec.zCoord,
  68. this.xCoord * vec.yCoord - this.yCoord * vec.xCoord);
  69. }
  70.  
  71. public Vec3 subtract(Vec3 p_178788_1_) {
  72. return this.subtract(p_178788_1_.xCoord, p_178788_1_.yCoord, p_178788_1_.zCoord);
  73. }
  74.  
  75. public Vec3 subtract(double p_178786_1_, double p_178786_3_, double p_178786_5_) {
  76. return this.addVector(-p_178786_1_, -p_178786_3_, -p_178786_5_);
  77. }
  78.  
  79. public Vec3 add(Vec3 p_178787_1_) {
  80. return this.addVector(p_178787_1_.xCoord, p_178787_1_.yCoord, p_178787_1_.zCoord);
  81. }
  82.  
  83. /**
  84. * Adds the specified x,y,z vector components to this vector and returns the
  85. * resulting vector. Does not change this vector.
  86. */
  87. public Vec3 addVector(double x, double y, double z) {
  88. return new Vec3(this.xCoord + x, this.yCoord + y, this.zCoord + z);
  89. }
  90.  
  91. /**
  92. * Euclidean distance between this and the specified vector, returned as
  93. * double.
  94. */
  95. public double distanceTo(Vec3 vec) {
  96. double var2 = vec.xCoord - this.xCoord;
  97. double var4 = vec.yCoord - this.yCoord;
  98. double var6 = vec.zCoord - this.zCoord;
  99. return MathHelper.sqrt_double(var2 * var2 + var4 * var4 + var6 * var6);
  100. }
  101.  
  102. /**
  103. * The square of the Euclidean distance between this and the specified
  104. * vector.
  105. */
  106. public double squareDistanceTo(Vec3 vec) {
  107. double var2 = vec.xCoord - this.xCoord;
  108. double var4 = vec.yCoord - this.yCoord;
  109. double var6 = vec.zCoord - this.zCoord;
  110. return var2 * var2 + var4 * var4 + var6 * var6;
  111. }
  112.  
  113. /**
  114. * Returns the length of the vector.
  115. */
  116. public double lengthVector() {
  117. return MathHelper
  118. .sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord);
  119. }
  120.  
  121. /**
  122. * Returns a new vector with x value equal to the second parameter, along
  123. * the line between this vector and the passed in vector, or null if not
  124. * possible.
  125. */
  126. public Vec3 getIntermediateWithXValue(Vec3 vec, double x) {
  127. double var4 = vec.xCoord - this.xCoord;
  128. double var6 = vec.yCoord - this.yCoord;
  129. double var8 = vec.zCoord - this.zCoord;
  130.  
  131. if (var4 * var4 < 1.0000000116860974E-7D) {
  132. return null;
  133. } else {
  134. double var10 = (x - this.xCoord) / var4;
  135. return var10 >= 0.0D && var10 <= 1.0D
  136. ? new Vec3(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10)
  137. : null;
  138. }
  139. }
  140.  
  141. /**
  142. * Returns a new vector with y value equal to the second parameter, along
  143. * the line between this vector and the passed in vector, or null if not
  144. * possible.
  145. */
  146. public Vec3 getIntermediateWithYValue(Vec3 vec, double y) {
  147. double var4 = vec.xCoord - this.xCoord;
  148. double var6 = vec.yCoord - this.yCoord;
  149. double var8 = vec.zCoord - this.zCoord;
  150.  
  151. if (var6 * var6 < 1.0000000116860974E-7D) {
  152. return null;
  153. } else {
  154. double var10 = (y - this.yCoord) / var6;
  155. return var10 >= 0.0D && var10 <= 1.0D
  156. ? new Vec3(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10)
  157. : null;
  158. }
  159. }
  160.  
  161. /**
  162. * Returns a new vector with z value equal to the second parameter, along
  163. * the line between this vector and the passed in vector, or null if not
  164. * possible.
  165. */
  166. public Vec3 getIntermediateWithZValue(Vec3 vec, double z) {
  167. double var4 = vec.xCoord - this.xCoord;
  168. double var6 = vec.yCoord - this.yCoord;
  169. double var8 = vec.zCoord - this.zCoord;
  170.  
  171. if (var8 * var8 < 1.0000000116860974E-7D) {
  172. return null;
  173. } else {
  174. double var10 = (z - this.zCoord) / var8;
  175. return var10 >= 0.0D && var10 <= 1.0D
  176. ? new Vec3(this.xCoord + var4 * var10, this.yCoord + var6 * var10, this.zCoord + var8 * var10)
  177. : null;
  178. }
  179. }
  180.  
  181. @Override
  182. public String toString() {
  183. return "(" + this.xCoord + ", " + this.yCoord + ", " + this.zCoord + ")";
  184. }
  185.  
  186. public Vec3 rotatePitch(float p_178789_1_) {
  187. float var2 = MathHelper.cos(p_178789_1_);
  188. float var3 = MathHelper.sin(p_178789_1_);
  189. double var4 = this.xCoord;
  190. double var6 = this.yCoord * var2 + this.zCoord * var3;
  191. double var8 = this.zCoord * var2 - this.yCoord * var3;
  192. return new Vec3(var4, var6, var8);
  193. }
  194.  
  195. public Vec3 rotateYaw(float p_178785_1_) {
  196. float var2 = MathHelper.cos(p_178785_1_);
  197. float var3 = MathHelper.sin(p_178785_1_);
  198. double var4 = this.xCoord * var2 + this.zCoord * var3;
  199. double var6 = this.yCoord;
  200. double var8 = this.zCoord * var2 - this.xCoord * var3;
  201. return new Vec3(var4, var6, var8);
  202. }
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement