int main(int argc,char *argv[]) { struct Rplot *rplot=NULL; float wdt=400,hgt=400; unsigned int bgcol=0xffffffff; unsigned int fgcol=0xff000000; int i,j,k; int type; float pnt[2]; float *ptr; poly=PolygonMake(sizeof(float)*2,PolygonXYbbox); PolygonAddPolygon(poly,1); pnt[0]=0.1; pnt[1]=0.1; PolygonAdd(poly,pnt,0); pnt[0]=0.9; pnt[1]=0.1; PolygonAdd(poly,pnt,0); pnt[0]=0.9; pnt[1]=0.9; PolygonAdd(poly,pnt,0); pnt[0]=0.1; pnt[1]=0.9; PolygonAdd(poly,pnt,0); PolygonAddPolygon(poly,2); pnt[0]=0.2; pnt[1]=0.2; PolygonAdd(poly,pnt,0); pnt[0]=0.8; pnt[1]=0.2; PolygonAdd(poly,pnt,0); pnt[0]=0.5; pnt[1]=0.4; PolygonAdd(poly,pnt,0); pnt[0]=0.5; pnt[1]=0.6; PolygonAdd(poly,pnt,1); pnt[0]=0.8; pnt[1]=0.8; PolygonAdd(poly,pnt,0); pnt[0]=0.2; pnt[1]=0.8; PolygonAdd(poly,pnt,0); rplot=RplotMake(); RplotSetText(rplot,stream,stdout); RplotMakePlot(rplot,"MapPlotPolygon",wdt,hgt,24); RplotRectangle(rplot,NULL,0,0,wdt,hgt, 1,bgcol,0x0f,0,NULL); for (i=0;i<poly->polnum;i++) { type=PolygonReadType(poly,i); if (type==1) fgcol=RplotColor(255,0,0,255); if (type==2) fgcol=RplotColor(0,255,0,255); k=0; for (j=0;j<poly->num[i];j++) { if (PolygonReadOp(poly,i,j) !=0) { if (k !=0) RplotPolygon(rplot,NULL,0,0,k,fx,fy,t, 0,fgcol,0x0f,2,NULL); k=0; } ptr=(float *) PolygonRead(poly,i,j); fx[k]=ptr[0]*wdt; fy[k]=ptr[1]*hgt; t[k]=0; k++; } if (k !=0) RplotPolygon(rplot,NULL,0,0,k,fx,fy,t, 0,fgcol,0x0f,2,NULL); } RplotEndPlot(rplot); return 0; }
struct PolygonData *SZATerminator(int yr,int mo,int dy,int hr,int mt,int sc, int flg,int mode,float step, float zenith) { double cval[1]={102}; struct PolygonData **ctr; struct PolygonData *trm=NULL; if (zenith !=0) cval[0]=zenith; if (flg==0) { struct PolygonData *ptr=NULL; float pp[2],lon; float *p,*o; int n; int asc=0; int dsc=0; int num; ctr=SZAContour(yr,mo,dy,hr,mt,sc,0,mode,step,1,cval); ptr=ctr[0]; num=ptr->num[0]; trm=PolygonMake(sizeof(float)*2,NULL); PolygonAddPolygon(trm,1); p=PolygonRead(ptr,0,0); PolygonAdd(trm,p); PolygonAddPolygon(trm,2); for (n=1;n<num;n++) { o=PolygonRead(ptr,0,n-1); p=PolygonRead(ptr,0,n); PolygonAdd(trm,p); if ((o[0]<0) && (p[0]>0)) asc=n; if ((o[0]>0) && (p[0]<0)) dsc=n; } trm=PolygonMake(sizeof(float)*2,NULL); n=asc; PolygonAddPolygon(trm,2); p=PolygonRead(ptr,0,n); lon=SZARound(p[1]); if (lon>=180) lon-=360; while (n !=dsc) { p=PolygonRead(ptr,0,n); PolygonAdd(trm,p); n++; if (n>=num) n=0; } pp[0]=0; pp[1]=p[1]; PolygonAdd(trm,pp); pp[1]=SZARound(p[1]); do { PolygonAdd(trm,pp); pp[1]--; if (pp[1]<-180) pp[1]+=360; } while (pp[1] != lon); p=PolygonRead(ptr,0,n); lon=SZARound(p[1]); if (lon>=180) lon-=180; PolygonAddPolygon(trm,2); while (n !=asc) { p=PolygonRead(ptr,0,n); PolygonAdd(trm,p); n++; if (n>=num) n=0; } pp[0]=0; pp[1]=p[1]; PolygonAdd(trm,pp); pp[1]=SZARound(p[1]); do { PolygonAdd(trm,pp); pp[1]++; if (pp[1]>=180) pp[1]-=360; } while (pp[1] != lon); ContourFree(1,ctr); } else { int num,n=0; float *p; struct PolygonData *ptr=NULL; ctr=SZAContour(yr,mo,dy,hr,mt,sc,flg,mode,step,1,cval); ptr=ctr[0]; num=ptr->num[0]; trm=PolygonMake(sizeof(float)*2,NULL); PolygonAddPolygon(trm,1); for (n=0;n<num;n++) { p=PolygonRead(ptr,0,n); PolygonAdd(trm,p); } PolygonAddPolygon(trm,2); for (n=0;n<num;n++) { p=PolygonRead(ptr,0,n); PolygonAdd(trm,p); } ContourFree(1,ctr); } return trm; }
int main(int argc,char *argv[]) { struct Rplot *rplot=NULL; float wdt=400,hgt=400; unsigned int bgcol=0xffffffff; unsigned int fgcol=0xff000000; int i,j; float x; float pnt[2]; float *ptr; poly=PolygonMake(sizeof(float)*2,PolygonXYbbox); for (x=0.4;x>0.1;x-=0.1) { PolygonAddPolygon(poly,1); pnt[0]=0.5-x; pnt[1]=0.5-x; PolygonAdd(poly,pnt,0); pnt[0]=0.5-x; pnt[1]=0.5+x; PolygonAdd(poly,pnt,0); pnt[0]=0.5+x; pnt[1]=0.5+x; PolygonAdd(poly,pnt,0); pnt[0]=0.5+x; pnt[1]=0.5-x; PolygonAdd(poly,pnt,0); } copy=PolygonCopy(poly); PolygonFree(poly); rplot=RplotMake(); RplotSetText(rplot,stream,stdout); RplotMakeDocument(rplot,"PolygonCopy","1",wdt,hgt,24); RplotMakePlot(rplot,"PolygonCopy",wdt,hgt,24); RplotRectangle(rplot,NULL,0,0,wdt,hgt, 1,bgcol,0x0f,0,NULL); for (i=0;i<copy->polnum;i++) { fgcol=RplotColor(239-i*16,239-i*16,239-i*16,255); for (j=0;j<copy->num[i];j++) { ptr=(float *) PolygonRead(copy,i,j); fx[j]=ptr[0]*wdt; fy[j]=ptr[1]*hgt; t[j]=0; } RplotPolygon(rplot,NULL,0,0,copy->num[i],fx,fy,t, 1,fgcol,0x0f,0,NULL); } RplotEndPlot(rplot); RplotEndDocument(rplot); return 0; }
int main(int argc,char *argv[]) { struct Rplot *rplot=NULL; float wdt=400,hgt=400; unsigned int bgcol=0xffffffff; unsigned int fgcol=0xff000000; int i,j; int type; float pnt[2]; float *ptr; float arg[1]; poly=PolygonMake(sizeof(float)*2,PolygonXYbbox); PolygonAddPolygon(poly,1); pnt[0]=0.1; pnt[1]=0.1; PolygonAdd(poly,pnt,0); pnt[0]=0.9; pnt[1]=0.1; PolygonAdd(poly,pnt,0); pnt[0]=0.9; pnt[1]=0.9; PolygonAdd(poly,pnt,0); pnt[0]=0.1; pnt[1]=0.9; PolygonAdd(poly,pnt,0); PolygonAddPolygon(poly,2); pnt[0]=0.2; pnt[1]=0.5; PolygonAdd(poly,pnt,0); pnt[0]=0.5; pnt[1]=0.2; PolygonAdd(poly,pnt,0); pnt[0]=0.8; pnt[1]=0.5; PolygonAdd(poly,pnt,0); pnt[0]=0.5; pnt[1]=0.8; PolygonAdd(poly,pnt,0); arg[0]=30.0; npoly=PolygonTransform(poly,sizeof(float)*2,PolygonXYbbox,rotate,arg); rplot=RplotMake(); RplotSetText(rplot,stream,stdout); RplotMakeDocument(rplot,"PolygonTransform","1",wdt,hgt,24); RplotMakePlot(rplot,"PolygonTransform",wdt,hgt,24); RplotRectangle(rplot,NULL,0,0,wdt,hgt, 1,bgcol,0x0f,0,NULL); for (i=0;i<npoly->polnum;i++) { type=PolygonReadType(npoly,i); if (type==1) fgcol=RplotColor(255,0,0,255); if (type==2) fgcol=RplotColor(0,255,0,255); for (j=0;j<npoly->num[i];j++) { ptr=(float *) PolygonRead(npoly,i,j); fx[j]=ptr[0]*wdt; fy[j]=ptr[1]*hgt; t[j]=0; } RplotPolygon(rplot,NULL,0,0,npoly->num[i],fx,fy,t, 1,fgcol,0x0f,0,NULL); } RplotEndPlot(rplot); RplotEndDocument(rplot); return 0; }