forked from JonasHans/Jenga
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BlockCoords.java
68 lines (55 loc) · 1.64 KB
/
BlockCoords.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/**
* The blockcoords class which calculates the block coordinates.
* @author Thomas Meijers, Jonas van Oenen, Nina läuger, Alessandra van Ree
* @version June 2014
*/
public class BlockCoords {
// Dimensions
static private double BLOCK_LENGTH = 75;
static private double BLOCK_WIDTH = 25;
static private double BLOCK_HEIGHT = 15;
// Coordinates of a block
public double bX, bY;
public double eX, eY;
public double z;
/**
* This initializes the block coordinates.
* @param t tower
* @param b block
*/
public BlockCoords(Tower t, Block b) {
int boardX = t.x;
int boardY = t.y;
int boardZ = t.z;
int theta = t.theta;
int row = b.getRow();
int col = 2 - b.getColumn();
char direction = b.getDirection();
z = row * BLOCK_HEIGHT + 0.5 * BLOCK_HEIGHT + boardZ;
// X and Y dependant on direction of block
if (direction == 'Y') {
bX = col * BLOCK_WIDTH + 0.5 * BLOCK_WIDTH;
eX = bX;
bY = 0;
eY = BLOCK_LENGTH;
} else {
bX = 0;
eX = BLOCK_LENGTH;
bY = col * BLOCK_WIDTH + 0.5 * BLOCK_WIDTH;
eY = bY;
}
// Rotation is not possible at this time, the tower coordinates are given
bX += boardX; // + Math.cos(theta) * bX - Math.sin(theta) * bY;
bY += boardY; // + Math.sin(theta) * bX + Math.cos(theta) * bY;
eX += boardX; // + Math.cos(theta) * eX - Math.sin(theta) * eY;
eY += boardY; // + Math.sin(theta) * eX + Math.cos(theta) * eY;
}
/**
* Creates a comprehensible string of a block coordinates object for print purposes
*/
public String toString() {
String print = "";
print += "Begin: " + bX + " " + bY + " End: " + eX + " " + eY + " Z: " + z;
return print;
}
}