/* See aagraph.h */ /* Last edited on 2016-12-26 17:48:23 by stolfilocal */ #include #include #include #include #include #include #include #include #include void aagraph_plot_paralelograms( PSStream *ps, AAP f (AAP x), Interval xd, Interval yd, int n ) { Interval xv, yvlo, yvhi; int xi; AAP xf, yf; double xp[4], yp[4]; AATerm eps[1]; double gray = 0.75; pswr_comment(ps, "Plot of AA graph"); for (xi=0; xinterms == 1), "aagraph_plot_paralelograms: xf->nterms != 1"); eps[0].id = ((AATermP)(xf + 1))->id; yf = f(xf); eps[0].coef = -One; yvlo = aa_range(aa_fix_eps(yf, 1, eps)); eps[0].coef = One; yvhi = aa_range(aa_fix_eps(yf, 1, eps)); if (ia_is_full(&yvlo) || ia_is_full(&yvhi)) { yvlo = (Interval){xd.lo, xd.hi}; yvhi = yvlo; } ROUND_NEAR; xp[0] = xv.lo; yp[0] = yvlo.lo; xp[1] = xv.hi; yp[1] = yvhi.lo; xp[2] = xv.hi; yp[2] = yvhi.hi; xp[3] = xv.lo; yp[3] = yvlo.hi; pswr_set_fill_color(ps, gray,gray,gray); pswr_polygon(ps, TRUE, xp, yp, 4, TRUE, TRUE, TRUE); aa_flush(frame); } fprintf(stderr, "\n"); } void aagraph_plot_boxes( PSStream *ps, AAP f (AAP x), Interval xd, Interval yd, int n ) { Interval xv, yv; int xi; AAP xf, yf; double gray = 0.75; pswr_comment(ps, "Plot of AA range graph"); for (xi=0; xinterms); AATermCount yn = (y->nterms); AATermCount nvmax = 2*(xn+yn); double xv[nvmax], yv[nvmax]; AATermCount nv; pswr_comment(ps, "AA joint range"); aa_2d_range(x, y, &nv, xv, yv); if (nv == 0) { pswr_dot(ps, (double)(x->center), (double)(y->center), 0.5, FALSE, TRUE); } else { pswr_set_fill_color(ps, R,G,B); pswr_polygon(ps, TRUE, xv, yv, (int)nv, TRUE, TRUE, TRUE); } fprintf(stderr, "\n"); }