/** Draws circular particle using a display list. */ public void display(GL gl) { if (PARTICLE_DISPLAY_LIST < 0) { // MAKE DISPLAY LIST: int displayListIndex = gl.glGenLists(1); gl.glNewList(displayListIndex, GL.GL_COMPILE); drawParticle(gl, new Point3d(), radius); // /particle at origin gl.glEndList(); System.out.println("MADE LIST " + displayListIndex + " : " + gl.glIsList(displayListIndex)); PARTICLE_DISPLAY_LIST = displayListIndex; } // / COLOR: DEFAULT WHITE; GREEN IF HIGHLIGHTED; ADD RED IF PINNED Color3f c = new Color3f(1, 1, 1); // default: white if (pin) { c.x = 1f; // add red c.y *= 0.2f; c.z = 0; } if (highlight) { c.y = 1; c.z = 0; } if (GooParticle.class.isInstance(this)) { c.x = 0; c.y = 0; // now its blue } gl.glColor3f(c.x, c.y, c.z); // / DRAW ORIGIN-CIRCLE TRANSLATED TO "p": gl.glPushMatrix(); gl.glTranslated(x.x, x.y, x.z); gl.glCallList(PARTICLE_DISPLAY_LIST); gl.glPopMatrix(); }
/** Creates a cube at 0,0 in the viewport. */ void createCube() { GL.glNewList(cubeListIndexBase, GL.GL_COMPILE); GL.glBegin(GL.GL_QUADS); // front GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(-0.5f, -0.5f, 0.5f); // bottom left GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(0.5f, -0.5f, 0.5f); // bottom right GL.glColor3f(1.0f, 1.0f, 0.0f); GL.glVertex3f(0.5f, 0.5f, 0.5f); // top right GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(-0.5f, 0.5f, 0.5f); // top left // back GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(-0.5f, -0.5f, -0.5f); // bottom left GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(0.5f, -0.5f, -0.5f); // bottom right GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(0.5f, 0.5f, -0.5f); // top right GL.glColor3f(1.0f, 1.0f, 0.0f); GL.glVertex3f(-0.5f, 0.5f, -0.5f); // top left // left GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(-0.5f, -0.5f, -0.5f); // bottom left GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(-0.5f, -0.5f, 0.5f); // bottom right GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(-0.5f, 0.5f, 0.5f); // top right GL.glColor3f(1.0f, 1.0f, 0.0f); GL.glVertex3f(-0.5f, 0.5f, -0.5f); // top left // right GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(0.5f, -0.5f, 0.5f); // bottom left GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(0.5f, -0.5f, -0.5f); // bottom right GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(0.5f, 0.5f, -0.5f); // top right GL.glColor3f(1.0f, 1.0f, 0.0f); GL.glVertex3f(0.5f, 0.5f, 0.5f); // top left // top GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(0.5f, 0.5f, -0.5f); GL.glColor3f(1.0f, 1.0f, 0.0f); GL.glVertex3f(-0.5f, 0.5f, -0.5f); GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(-0.5f, 0.5f, 0.5f); GL.glColor3f(1.0f, 1.0f, 0.0f); GL.glVertex3f(0.5f, 0.5f, 0.5f); // bottom GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(0.5f, -0.5f, 0.5f); GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(-0.5f, -0.5f, 0.5f); GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(-0.5f, -0.5f, -0.5f); GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(0.5f, -0.5f, -0.5f); GL.glEnd(); GL.glEndList(); }