Changeset 384


Ignore:
Timestamp:
Mar 28, 2006 8:20:11 PM (18 years ago)
Author:
mmc
Message:

Added some code to compute the gradient of the function in load_volume_file().
This can be used to shade the volume with respect to a light source.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/vizservers/nanovis/nanovis.cpp

    r383 r384  
    472472
    473473            float *data = new float[4*nx*ny*nz];
     474            float *grad = new float[4*nx*ny*nz];
    474475
    475476            double vmin = field.valueMin();
     
    488489                        double xval = x0 + ix*dmin;
    489490                        double v = field.value(xval,yval,zval);
    490                         data[ngen++] = (isnan(v)) ? -1.0 : (v - vmin)/dv;
     491
     492                        // scale all values [0-1], -1 => out of bounds
     493                        v = (isnan(v)) ? -1.0 : (v - vmin)/dv;
     494
     495                        // gradient in x-direction
     496                        double curval = (v < 0) ? 0.0 : v;
     497                        double oldval = ((ngen/4) % nx == 0) ? 0.0 : data[ngen-4];
     498                        oldval = (oldval < 0) ? 0.0 : oldval;
     499                        grad[ngen] = (curval-oldval)/dmin;
     500                        data[ngen++] = v;
     501
     502                        // gradient in y-direction
     503                        oldval = (ngen-1-4*nx >= 0) ? data[ngen-1-4*nx] : 0.0;
     504                        oldval = (oldval < 0) ? 0.0 : oldval;
     505                        grad[ngen] = (curval-oldval)/dmin;
    491506                        data[ngen++] = 0.0;
     507
     508                        // gradient in z-direction
     509                        oldval = (ngen-2-4*nx*ny >= 0) ? data[ngen-2-4*nx*ny] : 0.0;
     510                        oldval = (oldval < 0) ? 0.0 : oldval;
     511                        grad[ngen] = (curval-oldval)/dmin;
    492512                        data[ngen++] = 0.0;
     513
     514                        // unused
     515                        grad[ngen] = 0.0;
    493516                        data[ngen++] = 0.0;
    494517                    }
     
    497520            load_volume(index, nx, ny, nz, 4, data);
    498521            delete [] data;
     522            delete [] grad;
    499523
    500524        } else {
     
    888912   }
    889913
    890    //init_vector_field();       //3d vector field
    891914   //load_volume_file(0, "./data/A-apbs-2-out-potential-PE0.dx");
    892915   //load_volume_file(0, "./data/nw-AB-Vg=0.000-Vd=1.000-potential.dx");
Note: See TracChangeset for help on using the changeset viewer.