/******************************************** * * * TESTPOLY.C * * (http://www.gcomm.com/develop/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 "stdlib.h" #include "stdio.h" #include "conio.h" #include "graphics.h" #include "inpoly.h" #define NPOINTS 40 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;