Ilya Zakharevich on Sat, 14 Mar 1998 07:38:45 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Minor plotting improvements


This increases vertical resolution of plot() 3 times, horizontal
10% and makes the plotting area into a square one (66 x 66), so that linear 
functions are perfect on the display.

Enjoy,
Ilya

Here are the samples:

was:

? plot(x=-1,2,sin(x))

      1.000 |--------------------------------------------xxxxxxxxxxxx--|
            |                                        xxxx            xxx
            |                                    xxxx                  |
            |                                  xx                      |
            |                               xxx                        |
            |                             xx                           |
            |                           xx                             |
            |                         xx                               |
            |                       xx                                 |
            |                      x                                   |
            |                    xx                                    |
            -------------------xx---------------------------------------
            |                xx                                        |
            |              xx                                          |
            |            xx                                            |
            |          xx                                              |
            |        xx                                                |
            |      xx                                                  |
            |    xx                                                    |
            | xxx                                                      |
     -0.841 xx---------------------------------------------------------|
             -1.000                                                   2.000

?

Now:

? plot(x=-1,2,sin(x))

      1.000 |'''''''''''''''''''''''''''''''''''''''''''''''__xxx~~~~~~~xxx_'|
            |                                           _x~~                ~~
            |                                        _x~                     |
            |                                     _x~                        |
            |                                   _~                           |
            |                                 x~                             |
            |                               x~                               |
            |                             x~                                 |
            |                           x~                                   |
            |                         x~                                     |
            |                       _~                                       |
            ----------------------_~------------------------------------------
            |                   _~                                           |
            |                 _x                                             |
            |               _x                                               |
            |              x                                                 |
            |            x~                                                  |
            |         _x~                                                    |
            |       _x                                                       |
            |     _~                                                         |
            |  _x~                                                           |
     -0.841 _x~..............................................................|
             -1.000                                                   2.000
?

--- ../../src/graph/plotport.c~	Sat Feb  7 11:12:08 1998
+++ ../../src/graph/plotport.c	Sat Mar 14 01:27:06 1998
@@ -36,13 +36,17 @@ PARI_plot pari_plot, pari_psplot;
 /**                                                                **/
 /********************************************************************/
 
-#define ISCR 60
-#define JSCR 21
+#define ISCR 66
+#define JSCR 22
 #define BLANK ' '
 #define ZERO '-'
 #define YY '|'
-#define XX '-'
-#define FF 'x'
+#define XX_UPPER '\''
+#define XX_LOWER '.'
+#define FF1 '_'
+#define FF2 'x'
+#define FF3 '~'
+#define PICT(j) ((j) % 3 ? ((j) % 3 == 2 ? FF3 : FF2) : FF1)
 
 void
 plot(entree *ep, GEN a, GEN b, char *ch)
@@ -61,7 +65,8 @@ plot(entree *ep, GEN a, GEN b, char *ch)
   for (j=1; j<=JSCR; j++) scr[1][j]=scr[ISCR][j]=YY;
   for (i=2; i<ISCR; i++)
   {
-    scr[i][1]=scr[i][JSCR]=XX;
+    scr[i][1] = XX_LOWER;
+    scr[i][JSCR]=XX_UPPER;
     for (j=2; j<JSCR; j++) scr[i][j]=BLANK;
   }
   av2=avma; limite=(av2+bot)>>1;
@@ -81,12 +86,13 @@ plot(entree *ep, GEN a, GEN b, char *ch)
   }
   avma=av2; diff=gsub(ybig,ysml);
   if (gcmp0(diff)) { ybig=gaddsg(1,ybig); diff=gun; }
-  dyj=gdivsg(JSCR-1,diff); jz=1-gtolong(gmul(ysml,dyj));
+  dyj=gdivsg((JSCR-1)*3+2,diff); jz=1-gtolong(gmul(ysml,dyj))/3;
   av2=avma;
   for (i=1; i<=ISCR; i++)
   {
-    scr[i][jz]=ZERO; j=1+gtolong(gmul(gsub(y[i],ysml),dyj));
-    scr[i][j]=FF; avma=av2;
+    scr[i][jz]=ZERO; j=3+gtolong(gmul(gsub(y[i],ysml),dyj));
+    scr[i][j/3] = PICT(j); 
+    avma=av2;
   }
   p1=cgetr(4); gaffect(ybig,p1); pariputc('\n');
   pariputsf(" %10.3f ",rtodbl(p1));
@@ -104,7 +110,7 @@ plot(entree *ep, GEN a, GEN b, char *ch)
   pariputc('\n');
   p1=cgetr(4); p2=cgetr(4); gaffect(a,p1); gaffect(b,p2);
   pariputsf("%8s %10.3f %44s %10.3f\n"," ",rtodbl(p1)," ",rtodbl(p2));
-  pariputc('\n'); pop_val(ep); avma=av;
+  pop_val(ep); avma=av;
 }
 
 /********************************************************************/