コード例 #1
0
ファイル: jarvis.c プロジェクト: Abhalphiest/hullAlgorithms
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
}
コード例 #2
0
ファイル: jarvis.c プロジェクト: frenchie4111/School
/**
 * 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 );
}
コード例 #3
0
ファイル: jarvis.c プロジェクト: MathematicianVogt/RIT
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);
}	

}
コード例 #4
0
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);
   }
   
   
   
}
コード例 #5
0
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;
}