Provided by: libvolpack1-dev_1.0b3-9.1_amd64 bug

NAME

       vpScanlineNormals - compute surface normal vectors and gradient magnitudes for a scanline

SYNOPSIS

       #include <volpack.h>

       vpResult
       vpScanlineNormals(vpc, length, scalar_data, scalar_minus_y, scalar_plus_y, scalar_minus_z, scalar_plus_z,
               voxel_data, scalar_field, grad_field, norm_field)
           vpContext *vpc;
           int length;
           unsigned char *scalar_data;
           unsigned char *scalar_minus_y, *scalar_plus_y;
           unsigned char *scalar_minus_z, *scalar_plus_z;
           void *voxel_data;
           int scalar_field;
           int grad_field;
           int norm_field;

ARGUMENTS

       vpc    VolPack context from vpCreateContext.

       length Size of scalar_data array in bytes.

       scalar_data
              1D array of scalar samples.

       scalar_minus_y
              1D array of scalar samples adjacent to scalar_data in the -Y direction.

       scalar_plus_y
              1D array of scalar samples adjacent to scalar_data in the +Y direction.

       scalar_minus_z
              1D array of scalar samples adjacent to scalar_data in the -Z direction.

       scalar_plus_z
              1D array of scalar samples adjacent to scalar_data in the +Z direction.

       voxel_data
              1D array of voxels for storing results.

       scalar_field
              Voxel field number indicating the field in which to store the scalar samples.

       grad_field
              Voxel  field  number  indicating the field in which to store the gradient magnitudes of the scalar
              samples.

       norm_field
              Voxel field number indicating the field in which to store encoded surface normal vectors.

DESCRIPTION

       vpScanlineNormals is used to precompute values for  voxel  fields  used  in  classification  and  shading
       algorithms.   The  input  is a collection of 5 adjacent 1D arrays of scalar values; a separate routine is
       provided for processing a full 3D array of voxel data  (see  vpVolumeNormals(3)).   vpScanlineNormals  is
       useful  for  loading  large  volumes  into  memory  scanline-by-scanline  and  precomputing  voxel fields
       incrementally, instead of loading a complete copy of the 3D scalar array in addition to the voxel  array.
       In all other respects this routine is identical in function to vpVolumeNormals.

       The  1D  scalar  arrays  must  be  arrays of 8-bit values (other sizes are not currently supported).  The
       length parameter indicates both the size and the number  of  elements  in  each  of  the  scalar  arrays.
       vpScanlineNormals  performs  the  computation  described  in  vpVolumeNormals(3), but only for the single
       scanline specified by scalar_data.  The other four scanline arguments must be  the  immediately  adjacent
       scanlines and are used to compute the gradient.

       The results are stored in the voxel_data array which must have space for the same number of voxels as the
       length  of one scalar scanline.  The size of a voxel must be specified with vpSetVoxelSize before calling
       vpScanlineNormals, but  it  is  not  necessary  to  call  vpSetRawVoxels.   The  arguments  scalar_field,
       grad_field  and norm_field specify which voxel fields the computed quantities should be stored into.  The
       field  numbers  must  correspond  to  appropriately-sized  voxel   fields   previously   specified   with
       vpSetVoxelField.   Any  of  these  arguments  can  be  the  constant  VP_SKIP_FIELD,  in  which  case the
       corresponding quantity is not computed or copied.  The voxel fields for the scalar value and the gradient
       magnitude must be one-byte fields, and the field for the surface normal vector must be a two-byte  field.
       The  constants  VP_SCALAR_MAX, VP_GRAD_MAX and VP_NORM_MAX give the maximum value that might be stored in
       each field, respectively.  The value stored in the surface normal vector field  is  actually  an  encoded
       surface normal; see vpNormalIndex(3).

ERRORS

       The normal return value is VP_OK.  The following error return values are possible:

       VPERROR_BAD_VALUE
              One  or  more  of  the voxel fields specified is invalid, or the corresponding voxel field has the
              wrong size.

       VPERROR_BAD_VOXEL
              The voxel size or the voxel fields have not been specified or have been incorrectly specified.

SEE ALSO

       VolPack(3),   vpCreateContext(3),    vpNormalIndex(3),    vpVolumeNormals(3),    vpSetClassifierTable(3),
       vpSetLookupShader(3)

VolPack                                                                                     vpScanlineNormals(3)