Function:ns2sisc

From S2PLOT

(Difference between revisions)
Jump to: navigation, search
Revision as of 22:11, 3 December 2007
S2plot admin (Talk | contribs)

← Previous diff
Revision as of 23:24, 3 December 2007
S2plot admin (Talk | contribs)

Next diff →
Line 1: Line 1:
-== ==+==ns2sisc==
- +Set the isosurface colour.
==Prototype== ==Prototype==
<code><pre> <code><pre>
- +void ns2sisc(int isid, float r, float g, float b);
</pre></code> </pre></code>
==Description== ==Description==
 +Set the RGB colour for an isosurface.
== See Also == == See Also ==
Line 21: Line 22:
==Code Example== ==Code Example==
<code><pre> <code><pre>
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <math.h>
 +#include "s2plot.h"
 +
 +/* Global variables */
 +int id1, id2; /* IDs for isosurface object */
 +
 +void cb(double *t, int *kc){
 + static int count = 0; /* Counter for refreshing */
 + int force = 1; /* Force redraw of surface */
 + float r, g, b; /* Isosurface colour */
 +
 + if (count == 12) { /* About once per half second */
 + count = 0; /* Reset counter */
 + r = drand48(); /* Random colours */
 + g = drand48();
 + b = drand48();
 + ns2sisc(id1, r, g, b); /* Set isosurface colour */
 + } else {
 + count++; /* Keep counting */
 + }
 + ns2dis(id1, force); /* Draw first isosurface */
 + ns2dis(id2, force); /* Draw second isosurface */
 +}
 +
 +int main(int argc, char *argv[])
 +{
 + int i, j, k; /* Loop variables */
 + float x, y, z; /* Dummy variables for grid values */
 + int nx, ny, nz; /* Number of cells in grid */
 + float ***grid; /* Grid data */
 + float tr[12]; /* Transformation matrix */
 + int resolution; /* Resolution of isosurface */
 + float level; /* Isosurface level to plot */
 + float alpha; /* Alpha channel */
 + char trans; /* Drawing mode for isosurface */
 +
 + nx = 30; /* Grid dimensions */
 + ny = 30;
 + nz = 30;
 + /* Create transpose matrix mapping data indices to world coords */
 + tr[0] = tr[4] = tr[8] = 0.0; /* Offsets */
 + tr[1] = tr[6] = tr[11] = 1.0; /* Increments */
 + tr[2] = tr[3] = tr[5] = tr[7] = tr[9] = tr[10] = 0.; /* Cross terms */
 +
 + s2opend("/?",argc, argv); /* Open the display */
 + s2swin(0, nx-1, 0, ny-1, 0, nz-1); /* Set the window coordinates */
 + s2box("BCDET",0,0,"BCDET",0,0,"BCDET",0,0); /* Draw coordinate box */
 +
 + /* allocate and generate the data grid */
 + grid = (float ***)malloc(nx * sizeof(float **));
 + for (i = 0; i < nx; i++) {
 + grid[i] = (float **)malloc(ny * sizeof(float *));
 + x = (float)(i) / (float)(nx - 1);
 + for (j = 0; j < ny; j++) {
 + grid[i][j] = (float *)malloc(nz * sizeof(float));
 + y = (float)(j) / (float)(ny - 1);
 + for (k = 0; k < nz; k++) {
 + z = (float)(k) / (float)(nz - 1);
 + grid[i][j][k] = x*x*x + y*y - z*z*z*z;
 + }
 + }
 + }
 +
 + level = 0.2; /* Set the isosurface level */
 + resolution = 1; /* Set the isosurface resolution */
 + alpha = 1.0; /* Set the alpha channel */
 + trans = 't'; /* Opaque isosurface */
 +
 +/* Create the first isosurface object */
 + id1 = ns2cis(grid, nx, ny, nz, 0, nx-1, 0, ny-1, 0, nz-1,
 + tr, level, resolution, trans, alpha, 1., 1., 0.);
 +
 + level = 0.8; /* Set the isosurface level */
 +
 +/* Create the second isosurface object */
 + id2 = ns2cis(grid, nx, ny, nz, 0, nx-1, 0, ny-1, 0, nz-1,
 + tr, level, resolution, trans, alpha, 1., 1., 0.);
 +
 + s2scb(&cb); /* Install a dynamic callback */
 + s2show(1); /* Open the s2plot window */
 +
 + return 1;
 +}
 +
</pre></code> </pre></code>
[[S2PLOT:Function List | Back]] to S2PLOT function list. [[S2PLOT:Function List | Back]] to S2PLOT function list.
__NOTOC__ __NOTOC__
__NOEDITSECTION__ __NOEDITSECTION__

Revision as of 23:24, 3 December 2007

ns2sisc

Set the isosurface colour.

Prototype

void ns2sisc(int isid, float r, float g, float b);

Description

Set the RGB colour for an isosurface.

See Also

ns2cisCreate an isosurface object.
ns2ciscCreate an isosurface object with a colour function.
ns2dis Draw an isosurface object
ns2sisl Change the level of isosurface
ns2sisaSet the alpha channel for an isosurface.

Code Example

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "s2plot.h"

/* Global variables */
int id1, id2;                           /* IDs for isosurface object */

void cb(double *t, int *kc){
   static int count = 0;                /* Counter for refreshing */
   int force = 1;                       /* Force redraw of surface */
   float r, g, b;                       /* Isosurface colour */

   if (count == 12) {                   /* About once per half second */
      count = 0;                        /* Reset counter */
      r = drand48();                    /* Random colours */
      g = drand48();
      b = drand48();
      ns2sisc(id1, r, g, b);            /* Set isosurface colour */
   } else {
      count++;                          /* Keep counting */
   }
   ns2dis(id1, force);                  /* Draw first isosurface */
   ns2dis(id2, force);                  /* Draw second isosurface */
}

int main(int argc, char *argv[])
{
   int i, j, k;                         /* Loop variables */
   float x, y, z;                       /* Dummy variables for grid values */
   int nx, ny, nz;                      /* Number of cells in grid */
   float ***grid;                       /* Grid data */
   float tr[12];                        /* Transformation matrix */
   int resolution;                      /* Resolution of isosurface */
   float level;                         /* Isosurface level to plot */
   float alpha;                         /* Alpha channel */
   char trans;                          /* Drawing mode for isosurface */

   nx = 30;                             /* Grid dimensions */
   ny = 30;
   nz = 30;
  /* Create transpose matrix mapping data indices to world coords */
   tr[0] = tr[4] = tr[8] = 0.0;                           /* Offsets */
   tr[1] = tr[6] = tr[11] = 1.0;                          /* Increments */
   tr[2] = tr[3] = tr[5] = tr[7] = tr[9] = tr[10] = 0.;   /* Cross terms */

   s2opend("/?",argc, argv);                    /* Open the display */
   s2swin(0, nx-1, 0, ny-1, 0, nz-1);           /* Set the window coordinates */
   s2box("BCDET",0,0,"BCDET",0,0,"BCDET",0,0);  /* Draw coordinate box */

   /* allocate and generate the data grid */
   grid = (float ***)malloc(nx * sizeof(float **));
   for (i = 0; i < nx; i++) {
      grid[i] = (float **)malloc(ny * sizeof(float *));
      x = (float)(i) / (float)(nx - 1);
      for (j = 0; j < ny; j++) {
         grid[i][j] = (float *)malloc(nz * sizeof(float));
         y = (float)(j) / (float)(ny - 1);
         for (k = 0; k < nz; k++) {
            z = (float)(k) / (float)(nz - 1);
            grid[i][j][k] = x*x*x + y*y - z*z*z*z;
         }
      }
   }

   level      = 0.2;                    /* Set the isosurface level */
   resolution = 1;                      /* Set the isosurface resolution */
   alpha      = 1.0;                    /* Set the alpha channel */
   trans      = 't';                    /* Opaque isosurface */

/* Create the first isosurface object */
   id1 = ns2cis(grid, nx, ny, nz, 0, nx-1, 0, ny-1, 0, nz-1,
                   tr, level, resolution, trans, alpha, 1., 1., 0.);

   level      = 0.8;                    /* Set the isosurface level */

/* Create the second isosurface object */
   id2 = ns2cis(grid, nx, ny, nz, 0, nx-1, 0, ny-1, 0, nz-1,
                   tr, level, resolution, trans, alpha, 1., 1., 0.);

   s2scb(&cb);                          /* Install a dynamic callback */
   s2show(1);                           /* Open the s2plot window */

   return 1;
}

Back to S2PLOT function list.


Personal tools