Sutherland-Hodgman polygon clipping: Difference between revisions

Content added Content deleted
Line 512: Line 512:
{
{
// subject polygon
// subject polygon
point2D subjectPolygon[] = {
point2D subjectPolygon[] = {
{50,150}, {200,50}, {350,150},
{50,150}, {200,50}, {350,150},
{350,300},{250,300},{200,250},
{350,300},{250,300},{200,250},
Line 520: Line 520:


// clipping polygon
// clipping polygon
point2D clipPolygon[] = { {100,100}, {300,100}, {300,300}, {100,300} };
point2D clipPolygon[] = { {100,100}, {300,100}, {300,300}, {100,300} };
int clipPolygonSize = sizeof(clipPolygon) / sizeof(clipPolygon[0]);
int clipPolygonSize = sizeof(clipPolygon) / sizeof(clipPolygon[0]);


// define the new clipped polygon (empty)
// define the new clipped polygon (empty)
int newPolygonSize = 0;
int newPolygonSize = 0;
point2D newPolygon[N] = { 0 };
point2D newPolygon[N] = { 0 };


// apply clipping
// apply clipping
SutherlandHodgman(subjectPolygon, subjectPolygonSize, clipPolygon, clipPolygonSize, newPolygon, newPolygonSize);
SutherlandHodgman(subjectPolygon, subjectPolygonSize, clipPolygon, clipPolygonSize, newPolygon, newPolygonSize);


// print clipped polygon points
// print clipped polygon points
cout << "Clipped polygon points:" << endl;
cout << "Clipped polygon points:" << endl;
for(int i = 0; i < newPolygonSize; i++)
for(int i = 0; i < newPolygonSize; i++)
cout << "(" << newPolygon[i].x << ", " << newPolygon[i].y << ")" << endl;
cout << "(" << newPolygon[i].x << ", " << newPolygon[i].y << ")" << endl;


return 0;
return 0;
}
}
</lang>
</lang>