int main() { struct Point points[MAX_POINTS]; int numPoints = readPoints(points); //populate the array and get numPoints if(numPoints == 0) return 1; //exit failure struct Point hullPoints[MAX_POINTS]; //sizing is just to be safe struct Point pointOnHull = leftmostPoint(points, numPoints); int i = 0; struct Point endpoint; do { hullPoints[i] = pointOnHull; //use as next pivot endpoint = points[0]; //initial endpoint candidate for(int j = 1; j < numPoints; j++) { if(equal(endpoint,pointOnHull)|| (ccw(hullPoints[i], endpoint, points[j]) > 0)) { endpoint = points[j]; //found greater left turn, update endpoint } } i++; pointOnHull = endpoint; } while(!equal(endpoint,hullPoints[0])); //wrapped around to first hull point printf("Set of points:\n"); displayPoints(points, numPoints); printf("Convex hull:\n"); displayPoints(hullPoints,i); return 0; //success }
/** * Main function * * Takes user input and finds/prints the convex hull using * jarvis algorithm. * * @param argc the number of arguments * @param argv array of arguments * @returns int the error code; 0 if no error */ int main( int argc, const char* argv[] ) { struct Point points[MAX_POINTS]; int numPoints = readPoints( points ); struct Point results[numPoints]; int numResults = jarvis( points, numPoints, results ); printf("Convex hull:\n"); displayPoints( results, numResults ); }
int main(void) { struct Point jarvisPoints[MAX_POINTS]; int numberOfjarvisPoints=readPoints(jarvisPoints); if(numberOfjarvisPoints>0) { displayPoints(jarvisPoints,numberOfjarvisPoints); struct Point convexHullSet[numberOfjarvisPoints]; int numberOfConvexPoints=jarvis(jarvisPoints,convexHullSet,numberOfjarvisPoints); displayConvexPoints(convexHullSet,numberOfConvexPoints); } }
int main(void) { struct Point quickHullPoints[MAX_POINTS]; int numberOfquickHullPoints=readPoints(quickHullPoints); if(numberOfquickHullPoints>0) { displayPoints(quickHullPoints,numberOfquickHullPoints); struct Point convexHullSet[numberOfquickHullPoints]; int numberOfConvexPoints=quickHull(quickHullPoints,convexHullSet,numberOfquickHullPoints); displayConvexPoints(convexHullSet,numberOfConvexPoints); } }
void TriangleWindow::render() { glClear(GL_COLOR_BUFFER_BIT); GLfloat LightAmbient[] = { 0.6f, 0.6f, 0.6f, 1.0f }; GLfloat LightAmbientSummer[] = { 0.6f, 0.6f, 0.3f, 1.0f }; GLfloat LightDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; GLfloat LightDiffuseSummer[] = { 0.8f, 0.8f, 0.8f, 1.0f }; GLfloat LightPosition[] = { 0.4f, 0.4f, 0.4f, 1.0f }; glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); glLightfv(GL_LIGHT1, GL_POSITION, LightPosition); if(allSeasons[currentSeason] == "SUMMER") { glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbientSummer); glLightfv(GL_LIGHT1, GL_AMBIENT, LightDiffuseSummer); } glEnable( GL_LIGHTING ); glEnable(GL_LIGHT1); glEnable(GL_COLOR_MATERIAL); glLoadIdentity(); glScalef(c->ss,c->ss,c->ss); glRotatef(c->rotX,1.0f,0.0f,0.0f); if(c->anim == 0.0f) { glRotatef(c->rotY,0.0f,0.0f,1.0f); } else { glRotatef(c->anim,0.0f,0.0f,1.0f); if(master) c->anim +=0.05f; } switch(c->etat) { case 0: displayTrianglesTexture(); if(allSeasons[currentSeason] == "WINTER") for(int i = 0; i < nbTree; i++) drawModel(winterTree, 0.05, posTrees[i], QColor(255, 255, 255)); else if(allSeasons[currentSeason] == "SPRING") for(int i = 0; i < nbTree; i++) drawModel(springTree, 0.05, posTrees[i], QColor(0, 255, 0)); else if(allSeasons[currentSeason] == "SUMMER") for(int i = 0; i < nbTree; i++) drawModel(summerTree, 0.05, posTrees[i], QColor(0, 255, 0)); else if(allSeasons[currentSeason] == "AUTUMN") for(int i = 0; i < nbTree; i++) drawModel(autumnTree, 0.05, posTrees[i], QColor(0, 255, 0)); break; case 1: displayLines(); break; case 2: displayPoints(); break; case 3: displayTrianglesC(); break; case 4: displayTrianglesTexture(); break; case 5: displayTriangles(); displayLines(); break; default: displayPoints(); break; } drawParticules(); Point centre; centre.x = -0.6; centre.y = -0.4; centre.z = 0.6; glColor3f(1, 1, 0); if(allSeasons[currentSeason] == "SUMMER") facettisationSphere(0.1, 30, 30, centre); ++m_frame; }