147 lines
3.2 KiB
Java
147 lines
3.2 KiB
Java
package dice3d.models.cuboids;
|
|
import java.awt.Color;
|
|
import java.awt.Graphics2D;
|
|
import java.util.ArrayList;
|
|
|
|
import dice3d.math.Vector;
|
|
import dice3d.models.Edge;
|
|
import dice3d.models.Vertex;
|
|
|
|
public class Cuboid {
|
|
|
|
public ArrayList<Vertex> vertices = new ArrayList<Vertex>();
|
|
public ArrayList<Edge> edges = new ArrayList<Edge>();
|
|
|
|
|
|
public boolean collided = false;
|
|
|
|
public Cuboid(double x, double y, double z, int length, int width, int height) {
|
|
|
|
Vector corner = new Vector(x, y, z);
|
|
|
|
Vertex a = new Vertex(corner.x, corner.y, corner.z);
|
|
Vertex b = new Vertex(corner.x + length, corner.y, corner.z);
|
|
Vertex c = new Vertex(corner.x + length, corner.y + height, corner.z);
|
|
Vertex d = new Vertex(corner.x, corner.y + height, corner.z);
|
|
|
|
Vertex e = new Vertex(corner.x, corner.y, corner.z + width);
|
|
Vertex f = new Vertex(corner.x + length, corner.y, corner.z + width);
|
|
Vertex g = new Vertex(corner.x + length, corner.y + height, corner.z + width);
|
|
Vertex h = new Vertex(corner.x, corner.y + height, corner.z + width);
|
|
|
|
a.id = "A";
|
|
b.id = "B";
|
|
c.id = "C";
|
|
d.id = "D";
|
|
e.id = "E";
|
|
f.id = "F";
|
|
g.id = "G";
|
|
h.id = "H";
|
|
|
|
vertices.add(a);
|
|
vertices.add(b);
|
|
vertices.add(c);
|
|
vertices.add(d);
|
|
|
|
vertices.add(e);
|
|
vertices.add(f);
|
|
vertices.add(g);
|
|
vertices.add(h);
|
|
|
|
Edge edge01 = new Edge(a, b);
|
|
Edge edge02 = new Edge(b, c);
|
|
Edge edge03 = new Edge(c, d);
|
|
Edge edge04 = new Edge(d, a);
|
|
|
|
Edge edge05 = new Edge(e, f);
|
|
Edge edge06 = new Edge(f, g);
|
|
Edge edge07 = new Edge(g, h);
|
|
Edge edge08 = new Edge(h, e);
|
|
|
|
Edge edge09 = new Edge(a, e);
|
|
Edge edge10 = new Edge(b, f);
|
|
Edge edge11 = new Edge(c, g);
|
|
Edge edge12 = new Edge(d, h);
|
|
|
|
Edge edge13 = new Edge(a, g);
|
|
Edge edge14 = new Edge(b, h);
|
|
Edge edge15 = new Edge(c, e);
|
|
Edge edge16 = new Edge(d, f);
|
|
|
|
Edge edge17 = new Edge(a, c);
|
|
Edge edge18 = new Edge(b, g);
|
|
Edge edge19 = new Edge(f, h);
|
|
Edge edge20 = new Edge(d, e);
|
|
Edge edge21 = new Edge(d, g);
|
|
Edge edge22 = new Edge(a, f);
|
|
|
|
edges.add(edge01);
|
|
edges.add(edge02);
|
|
edges.add(edge03);
|
|
edges.add(edge04);
|
|
edges.add(edge05);
|
|
edges.add(edge06);
|
|
edges.add(edge07);
|
|
edges.add(edge08);
|
|
edges.add(edge09);
|
|
edges.add(edge10);
|
|
edges.add(edge11);
|
|
edges.add(edge12);
|
|
|
|
edges.add(edge13);
|
|
edges.add(edge14);
|
|
edges.add(edge15);
|
|
edges.add(edge16);
|
|
|
|
edges.add(edge17);
|
|
edges.add(edge18);
|
|
edges.add(edge19);
|
|
edges.add(edge20);
|
|
edges.add(edge21);
|
|
edges.add(edge22);
|
|
|
|
}
|
|
|
|
public void update() {
|
|
for (Vertex v : vertices) {
|
|
v.update();
|
|
}
|
|
for (Edge e : edges) {
|
|
e.update();
|
|
}
|
|
|
|
}
|
|
|
|
public void reset() {
|
|
for (Vertex v : vertices) {
|
|
v.reset();
|
|
}
|
|
}
|
|
|
|
public void draw(Graphics2D g) {
|
|
// draw all edges, even inner ones
|
|
g.setColor(Color.GREEN);
|
|
|
|
if(collided) {
|
|
g.setColor(Color.RED);
|
|
}
|
|
for(Edge e: edges) {
|
|
e.draw(g);
|
|
}
|
|
|
|
g.setColor(Color.BLACK);
|
|
for (Vertex point : vertices) {
|
|
point.draw(g);
|
|
}
|
|
}
|
|
|
|
public boolean notMoving() {
|
|
return false;
|
|
}
|
|
|
|
public void updateCollision(Cuboid d) {
|
|
collided = false;
|
|
}
|
|
|
|
|
|
}
|