@@ -2,45 +2,45 @@ package sc.api.plugins
2
2
3
3
import kotlin.math.abs
4
4
import kotlin.math.sqrt
5
- import kotlin.random.Random
6
5
7
6
interface IVector {
8
7
val dx: Int
9
8
val dy: Int
9
+
10
+ /* * Verändert die Länge des Vektors um den gegebenen Faktor, ohne seine Richtung zu ändern. */
11
+ operator fun times (scalar : Int ): Vector =
12
+ Vector (scalar * dx, scalar * dy)
13
+
14
+ /* * Konvertiert den Vektor zu entsprechenden [Coordinates]. */
15
+ operator fun unaryPlus (): Coordinates = Coordinates (dx, dy)
10
16
}
11
17
12
18
/* *
13
19
* Die Strecke zwischen zwei [Coordinates].
14
20
* @property dx die Differenz in x-Richtung
15
21
* @property dy die Differenz in y-Richtung
16
22
*/
17
- data class Vector (override val dx : Int , override val dy : Int ): IVector, Comparable<IVector > {
23
+ data class Vector (override val dx : Int , override val dy : Int ): IVector, Comparable<Vector > {
18
24
19
25
/* * Die Fläche des Rechtecks, dessen Diagonale der Vector ist. */
20
26
val area: Int
21
27
get() = abs(dx * dy)
22
28
29
+ /* * Länge des Vektors auf einem rechteckigen Spielfeld. */
23
30
val length: Double
24
31
get() = sqrt(comparableLength.toDouble())
25
32
26
- /* * Verändert die Länge des Vektors um den gegebenen Faktor, ohne seine Richtung zu ändern. */
27
- operator fun times (scalar : Int ): Vector =
28
- Vector (scalar * dx, scalar * dy)
29
-
33
+ /* * Ob dieser Vektor auf einem doubled Hex Feld eine gerade Linie beschreibt. */
30
34
val straightHex: Boolean
31
35
get() = abs(dx) == abs(dy) || (dx % 2 == 0 && dy == 0 )
32
36
33
- private val IVector . comparableLength: Int
37
+ private val comparableLength: Int
34
38
get() = dx * dx + dy * dy
35
39
36
40
/* *
37
41
* Vergleicht die Länge dieses Vektors mit einem anderen.
38
- * @return groesser Null , wenn dieser laenger ist
42
+ * @return groesser als 0 , wenn dieser Vektor laenger ist
39
43
*/
40
- override operator fun compareTo (other : IVector ): Int =
41
- comparableLength - other.comparableLength
42
-
43
- /* * Konvertiert den Vektor zu entsprechenden [Coordinates]. */
44
- operator fun unaryPlus (): Coordinates = Coordinates (dx, dy)
45
-
44
+ override operator fun compareTo (other : Vector ): Int =
45
+ comparableLength - other.comparableLength
46
46
}
0 commit comments