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 vertices = new ArrayList(); public ArrayList edges = new ArrayList(); 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; } }