Creating Hue Plots in Pari-GP
#2
Hi James,

 I don't know at the moment, whether in Sheldon's "fatou.gp" there is also that picture_out routine for creating coloured images for complex coordinates. I remember a similar routine provided by tet-forum member Mike. It takes a matrix of complex values and writes a *.ppm file (some basic graphic-file-format) with rgb-values. File should be findable in appendices of tetration forum.     This is a version from 2010, don't know whether there are updates in the forum available.

Kind regards-

Gottfried

PHP Code:
/* =============================================================================  
** Color graphing system - mike3 - 20.11.10 04:07
** Hi.
** I thought I'd post the code I use to generate the color graphs from Pari/GP.
** Here it is.
**
** Note: the output is in .PPM format. 
** You'll need something else to convert that to .PNG. (I use GIMP.)
** 
** Also, I might warn you: it takes a LONG time to graph a complex function
** with a significantly complicated calculation procedure, as it must be
** evaluated at every pixel of the graph.
** 
** (updated 12/16/2010 -- program was not all good: 
**   * spurious "func" parameter in MakeGraph and "safetyarg" was missing.)
** ------------------------------------------------------------------------------------------ 
**  
** ============================================================================= */

/* =============================== Code: ==================================================== */
/* Complex function magnitude/phase plotter. */

/* To use:
*     1. Define function to graph as func(z).
*     2. Load this program.
*     3. Execute MakeGraph(width, height, x0, y0, x1, y1, filename) with the parameters given as follows:
*        width, height = width/height of image in pixels
*        x0, y0, x1, y1 = rectangle of complex plane to graph: x0 + y0i in upper-left corner to x1 + y1i in lower-right corner
*        filename = name of file to save as.
* Output is in .PPM format.
*/


/* Color conversion (HSB to RGB). */

HSB2RGB(hsb) = {
 
      local(H=hsb[1]);
 
      local(S=hsb[2]);
 
      local(B=hsb[3]);
 
      local(HH);
 
      local(F);
 
      local(P);
 
      local(Q);
 
      local(T);

 
      HH = floor(6*H)%6;
 
      F = (6*H) - floor(6*H);
 
      P = B*(1 - S);
 
      Q = B*(1 - (F*S));
 
      T = B*(1 - (1-F)*S);
 
      if(B > 1.0, B = 1.0);
 
      if(B < 0.0, B = 0.0);
 
      if(P > 1.0, P = 1.0);
 
      if(P < 0.0, P = 0.0);
 
      if(Q > 1.0, Q = 1.0);
 
      if(Q < 0.0, Q = 0.0);
 
      if(T > 1.0, T = 1.0);
 
      if(T < 0.0, T = 0.0);

 
      if(HH == 0, return([B, T, P]));
 
      if(HH == 1, return([Q, B, P]));
 
      if(HH == 2, return([P, B, T]));
 
      if(HH == 3, return([P, Q, B]));
 
      if(HH == 4, return([T, P, B]));
 
      if(HH == 5, return([B, P, Q]));
 
      }

/* Safe argument. */
safetyarg(z) = if(z == 0, 0, arg(z));

/* Make graph. */
MakeGraph(width, height, x0, y0, x1, y1, filename) = {
 
      xstep = (x1 - x0)/width;
 
      ystep = (y1 - y0)/height;
 
      write(filename, "P3");
 
      write(filename, "# ", filename);
 
      write(filename, width, " ", height);
 
      write(filename, "255");

 
      for(y=0, height-1,
 
          for(x=0, width-1,
 
                 xx = x0+(xstep*x);
 
                 yy = y0+(ystep*y);
 
              z = xx+yy*I;
 
              funcvalue = func(z);
 
              mag = abs(funcvalue);
 
              phase = safetyarg(funcvalue);
 
              H = phase/(2*Pi);
 
              S = 1/(1 + 0.3*log(mag + 1));
 
              B = 1 - 1/(1.1 + 5*log(mag + 1));
 
              RGB = HSB2RGB([H, S, B]);
 
                 Red = floor(RGB[1]*255.0);
 
                 Green = floor(RGB[2]*255.0);
 
                 Blue = floor(RGB[3]*255.0);
 
              write1(filename, Red, " ", Green, " ", Blue, "  ");
 
             );
 
          write(filename, "");
 
      );
 
   } 
Gottfried Helms, Kassel
Reply


Messages In This Thread
Creating Hue Plots in Pari-GP - by JmsNxn - 05/12/2021, 04:31 AM
RE: Creating Hue Plots in Pari-GP - by Gottfried - 05/12/2021, 01:11 PM
RE: Creating Hue Plots in Pari-GP - by JmsNxn - 05/13/2021, 01:48 AM
RE: Creating Hue Plots in Pari-GP - by JmsNxn - 09/25/2021, 01:20 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  PARI/GP code to approximate Kneser tetration(base e) without using schroder/abel RaeesHarris 1 1,074 07/28/2026, 05:36 AM
Last Post: RaeesHarris
  Brjuno number in Pari-GP Ember Edison 1 5,804 10/24/2021, 03:32 AM
Last Post: Ember Edison
  PARI/gp Xorter 14 52,687 07/09/2018, 08:54 AM
Last Post: Xorter
  Pari-TTY - update Gottfried 0 7,098 10/13/2007, 04:02 PM
Last Post: Gottfried



Users browsing this thread: 1 Guest(s)