void OpenGLTools::drawWiredCamera() { drawWiredBox(Vector3dd(-5.0,-5.0,-15.0), Vector3dd(5.0,5.0,-5.0)); glBegin(GL_LINES); int CIRCLE_STEPS = 16; for (int i = 0; i < CIRCLE_STEPS; i++) { double angle1 = (i / (double)CIRCLE_STEPS * 2.0 * M_PI); double angle2 = (((i + 1) % CIRCLE_STEPS) / (double)CIRCLE_STEPS * 2.0 * M_PI); double sa1 = sin(angle1); double ca1 = cos(angle1); double sa2 = sin(angle2); double ca2 = cos(angle2); double r1 = 2.5; double r2 = 4.5; glVertex3d(r1 * sa1, r1 * ca1 ,-5.0); glVertex3d(r1 * sa2, r1 * ca2 ,-5.0); glVertex3d(r2 * sa1, r2 * ca1 ,-0.0); glVertex3d(r2 * sa2, r2 * ca2 ,-0.0); glVertex3d(r1 * sa1, r1 * ca1 ,-5.0); glVertex3d(r2 * sa1, r2 * ca1 ,-0.0); } glEnd(); }
ConvexPolyhedron::ConvexPolyhedron(const AxisAlignedBox3d &box) { faces.push_back(Plane3d::FromNormalAndPoint(Vector3dd( 0, 0, 1), box.low())); faces.push_back(Plane3d::FromNormalAndPoint(Vector3dd( 0, 1, 0), box.low())); faces.push_back(Plane3d::FromNormalAndPoint(Vector3dd( 1, 0, 0), box.low())); faces.push_back(Plane3d::FromNormalAndPoint(Vector3dd( 0, 0, -1), box.high())); faces.push_back(Plane3d::FromNormalAndPoint(Vector3dd( 0, -1, 0), box.high())); faces.push_back(Plane3d::FromNormalAndPoint(Vector3dd(-1, 0, 0), box.high())); }