Ilya Zakharevich on Wed, 29 Sep 1999 19:53:54 -0400 (EDT)


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

Low precision of ploth() with low resolution


ploth() plots are 1/2-pixel off.  It is not easy to see with high
resolution plots, but with lower resolution you do

  plotterm(dumb)
  ploth(X=-2,2,sin(X))

and you see

    1.000 +----------------------------------------------------****************
          |                                 :               ****              |
          |                                 :            ****                 |
          |                                 :          ***                    |
          |                                 :        ***                      |
          |                                 :       **                        |
          |                                 :     **                          |
          |                                 :   ***                           |
          |                                 :  **                             |
          |                                 :***                              |
          |                                 **                                |
          |...............................**:.................................|
          |                             *** :                                 |
          |                            **   :                                 |
          |                          ***    :                                 |
          |                         **      :                                 |
          |                       **        :                                 |
          |                     ***         :                                 |
          |                   ***           :                                 |
          |                ****             :                                 |
          |             ****                :                                 |
   -1.000 ***************                   :                                 |
          +------*------------------------------------------------------------+
           -2.000                                                        2.000


(As you can see, the picture is biased to the left and up.)

The following patch fixes this.

Enjoy,
Ilya

--- ./src/graph/plotport.c~	Thu Sep 16 09:50:20 1999
+++ ./src/graph/plotport.c	Wed Sep 29 19:40:02 1999
@@ -277,7 +277,7 @@ rectscale(long ne, GEN x1, GEN x2, GEN y
  * }
  */
 
-#define DTOL(t) ((long)(t))
+#define DTOL(t) ((long)((t)+0.5))
 
 static void
 rectmove0(long ne, double x, double y, long relative)