|
3 | 3 | /** |
4 | 4 | * Implements relativity theory formulae. |
5 | 5 | * Provides simple static methods to calculate length contraction and time dilation |
6 | | - * in the laboratory frame with respect to the object's own frame, and velocity |
| 6 | + * in the laboratory frame with respect to the object's own frame, and velocity |
7 | 7 | * with respect to the moving frame. |
8 | 8 | * |
9 | | - * @see |
| 9 | + * @see |
10 | 10 | * <a href="https://en.wikipedia.org/wiki/List_of_relativistic_equations">Wikipedia</a> |
11 | 11 | */ |
12 | 12 | public final class Relativity { |
13 | 13 |
|
14 | 14 | /* Speed of light in m s^-1 */ |
15 | 15 | public static final double SPEED_OF_LIGHT = 299792458.0; |
16 | | - |
| 16 | + |
17 | 17 | /** |
18 | 18 | * Private constructor to prevent instantiation of this utility class. |
19 | 19 | */ |
20 | 20 | private Relativity() { |
21 | 21 | } |
22 | | - |
| 22 | + |
23 | 23 | /** |
24 | | - * Calculates the gamma parameter that is of paramount importance in relativity |
| 24 | + * Calculates the gamma parameter that is of paramount importance in relativity |
25 | 25 | * theory. It is a dimensionless parameter that is equal to 1 for zero velocity |
26 | 26 | * but tends to infinity when velocity approaches the speed of light. |
27 | 27 | * |
28 | 28 | * @param v The velocity (m/s). |
29 | 29 | * @return The value of gamma parameter. |
30 | 30 | */ |
31 | 31 | public static double gamma(double v) { |
32 | | - if (Math.abs(v) >= SPEED_OF_LIGHT) |
| 32 | + if (Math.abs(v) >= SPEED_OF_LIGHT) { |
33 | 33 | throw new IllegalArgumentException("Speed must be lower than the speed of light"); |
34 | | - return 1.0/Math.sqrt(1-v*v/(SPEED_OF_LIGHT*SPEED_OF_LIGHT)); |
| 34 | + } |
| 35 | + return 1.0 / Math.sqrt(1 - v * v / (SPEED_OF_LIGHT * SPEED_OF_LIGHT)); |
35 | 36 | } |
36 | 37 |
|
37 | 38 | /** |
38 | 39 | * Calculates the length of an object in the moving frame. |
39 | | - * |
| 40 | + * |
40 | 41 | * @param length The length of an object in its own frame (m). |
41 | 42 | * @param v The velocity of the object (m/s). |
42 | 43 | * @return The length of an object in the laboratory frame (m). |
43 | | - */ |
44 | | - public static double lengthContraction (double length, double v) { |
45 | | - if (length < 0) |
| 44 | + */ |
| 45 | + public static double lengthContraction(double length, double v) { |
| 46 | + if (length < 0) { |
46 | 47 | throw new IllegalArgumentException("Length must be non-negative"); |
| 48 | + } |
47 | 49 | return length/gamma(v); |
48 | 50 | } |
49 | 51 |
|
50 | 52 | /** |
51 | 53 | * Calculates the time that has passed in the moving frame. |
52 | | - * |
| 54 | + * |
53 | 55 | * @param length The time that has passed in the object's own frame (s). |
54 | 56 | * @param v The velocity of the object (m/s). |
55 | 57 | * @return The time that has passed in the laboratory frame (s). |
56 | | - */ |
57 | | - public static double timeDilation (double time, double v) { |
58 | | - if (time < 0) |
| 58 | + */ |
| 59 | + public static double timeDilation(double time, double v) { |
| 60 | + if (time < 0) { |
59 | 61 | throw new IllegalArgumentException("Time must be non-negative"); |
| 62 | + } |
60 | 63 | return time*gamma(v); |
61 | 64 | } |
62 | 65 |
|
63 | 66 | /** |
64 | 67 | * Calculates the velocity with respect to the moving frame. |
65 | | - * |
| 68 | + * |
66 | 69 | * @param v1 The velocity of the object with respect to laboratory frame (m/s). |
67 | 70 | * @param v The velocity of the moving frame (m/s). |
68 | 71 | * @return The velocity with respect to the moving frame (m/s). |
69 | | - */ |
70 | | - public static double velocityAddition (double v1, double v) { |
71 | | - if (Math.abs(v1) > SPEED_OF_LIGHT) |
| 72 | + */ |
| 73 | + public static double velocityAddition(double v1, double v) { |
| 74 | + if (Math.abs(v1) > SPEED_OF_LIGHT) { |
72 | 75 | throw new IllegalArgumentException("Speed must not exceed the speed of light"); |
73 | | - if (Math.abs(v) >= SPEED_OF_LIGHT) |
| 76 | + } |
| 77 | + if (Math.abs(v) >= SPEED_OF_LIGHT) { |
74 | 78 | throw new IllegalArgumentException("Frame speed must be lower than the speed of light"); |
| 79 | + } |
75 | 80 | return (v1 - v)/(1 - v1*v/(SPEED_OF_LIGHT*SPEED_OF_LIGHT)); |
76 | 81 | } |
77 | 82 | } |
|
0 commit comments