/*************************************************************************** * * * TESTPOLY.C * * * * Copyright (C) 1995 GALACTICOMM, Inc. Freeware source code. * * * * Please feel free to use this source code for any purpose, commercial * * or otherwise, as long as you don't restrict anyone else's use of * * this source code. Please give credit where credit is due. * * * * Test program for INPOLY.C, point-in-polygon algorithm. * * * * 7/14/95 - Bob Stein * * * ***************************************************************************/ #include "graphics.h" #include "inpoly.h" #define NPOINTS 40 #define CRADIUS 0 unsigned int plgn[NPOINTS][2]; int main(void) { int gdriver=DETECT,gmode,errorcode; int maxx,maxy; int pnt,other; int ix,iy; initgraph(&gdriver,&gmode,""); if ((errorcode=graphresult()) != grOk) { printf("error=%d\n",errorcode); getch(); return 1; } maxx=getmaxx(); maxy=getmaxy(); do { cleardevice(); for (pnt=0 ; pnt < NPOINTS ; pnt++) { plgn[pnt][0]=rand()%maxx; plgn[pnt][1]=rand()%maxy; } other=NPOINTS-1; for (pnt=0 ; pnt < NPOINTS ; pnt++) { line(plgn[pnt][0],plgn[pnt][1],plgn[other][0],plgn[other][1]); other=pnt; } while (!kbhit()) { ix=rand()%maxx; iy=rand()%maxy; putpixel(ix,iy,inpoly(plgn,NPOINTS,ix,iy) ? LIGHTRED : CYAN); setcolor(WHITE); } } while (getch() != 0x1B); closegraph(); return 0; }