*-*Legos and Surfaces package -* ========================== -* -* This package was originally written by Evgueni Tcherniaev -* from IHEP/Protvino. -* -* The original Fortran implementation was adapted to HIGZ/PAW -* by Olivier Couet and Evgueni Tcherniaev. -* -* This View class is a subset of the original system -* It has been converted to a C++ class by Rene Brun -* *
| virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const | 
| void | TObject::MakeZombie() | 
| enum TObject::EStatusBits { | kCanDelete | |
| kMustCleanup | ||
| kObjInCanvas | ||
| kIsReferenced | ||
| kHasUUID | ||
| kCannotPick | ||
| kNoContextMenu | ||
| kInvalidObject | ||
| }; | ||
| enum TObject::[unnamed] { | kIsOnHeap | |
| kNotDeleted | ||
| kZombie | ||
| kBitMask | ||
| kSingleKey | ||
| kOverwrite | ||
| kWriteDelete | ||
| }; | 
| Color_t | TAttFill::fFillColor | fill area color | 
| Style_t | TAttFill::fFillStyle | fill area style | 
| Color_t | TAttLine::fLineColor | line color | 
| Style_t | TAttLine::fLineStyle | line style | 
| Width_t | TAttLine::fLineWidth | line width | 
| Double_t | fAphi[183] | |
| Int_t | fColorBottom | |
| Int_t* | fColorDark | |
| Int_t | fColorLevel[258] | Color levels corresponding to functions | 
| Int_t* | fColorMain | |
| Int_t | fColorTop | |
| Double_t | fD[2000] | |
| Double_t | fDX | |
| Double_t | fDXrast | |
| Double_t | fDYrast | |
| G__p2memfunc | fDrawFace | pointer to face drawing function | 
| Double_t | fF8[8] | |
| Double_t | fFmax | IsoSurface maximum function value | 
| Double_t | fFmin | IsoSurface minimum function value | 
| Double_t | fFunLevel[257] | Function levels corresponding to colors | 
| Double_t | fG8[8][3] | |
| Int_t | fIc1 | Base colour for the 1st Iso Surface | 
| Int_t | fIc2 | Base colour for the 2nd Iso Surface | 
| Int_t | fIc3 | Base colour for the 3rd Iso Surface | 
| Int_t | fIfrast | |
| Int_t | fJmask[30] | |
| G__p2memfunc | fLegoFunction | pointer to lego function | 
| Int_t | fLevelLine[200] | |
| Int_t | fLoff | |
| Int_t | fMask[465] | |
| Int_t | fMesh | (=1 if mesh to draw, o otherwise) | 
| Int_t | fNStack | Number of histograms in the stack to be painted | 
| Int_t | fNT | |
| Int_t | fNcolor | Number of colours per Iso surface | 
| Int_t | fNlevel | Number of color levels | 
| Int_t | fNlines | |
| Int_t | fNqs | |
| Int_t | fNxrast | |
| Int_t | fNyrast | |
| Double_t | fP8[8][3] | |
| Double_t | fPlines[1200] | |
| Double_t | fQA | |
| Double_t | fQD | |
| Double_t | fQS | |
| Int_t* | fRaster | pointer to raster buffer | 
| Double_t | fRmax[3] | Upper limits of lego | 
| Double_t | fRmin[3] | Lower limits of lego | 
| G__p2memfunc | fSurfaceFunction | pointer to surface function | 
| Int_t | fSystem | Coordinate system | 
| Double_t | fT[200] | |
| Double_t | fU[2000] | |
| Double_t | fVls[12] | |
| Double_t | fX0 | |
| Double_t | fXrast | |
| Double_t | fYdl | |
| Double_t | fYls[4] | |
| Double_t | fYrast | |
| static TF3* | fgCurrentF3 | Pointer to the 3D function to be paint. | 
| static Int_t | fgF3Clipping | Clipping box is off (0) or on (1) | 
| static Double_t | fgF3XClip | Clipping plne along X | 
| static Double_t | fgF3YClip | Clipping plne along Y | 
| static Double_t | fgF3ZClip | Clipping plne along Y | 

Normal default constructor*-*- *-* ======================== *-* rmin[3], rmax[3] are the limits of the lego object depending on *-* the selected coordinate system *
-*Draw back surfaces of surrounding box -* ===================================== -* -* Input ANG - angle between X and Y axis -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* *
*Set correspondance between function and color levels -* ==================================================== -* -* Input: NL - number of levels -* FL(NL) - function levels -* ICL(NL+1) - colors for levels -* -* Output: IREP - reply: 0 O.K. -* -1 error in parameters: -* illegal number of levels -* function levels must be in increasing order -* negative color index -* *
Define the grid levels drawn in the background of surface and lego plots. The grid levels are aligned on the Z axis' main tick marks.
Draw face - 1st variant*-*- -* ======================= -* -* Function: Draw face - 1st variant -* (2 colors: 1st for external surface, 2nd for internal) -* -* References: WCtoNDC -* -* Input: ICODES(*) - set of codes for the line (not used) -* ICODES(1) - IX -* ICODES(2) - IY -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* T(NP) - additional function defined on this face -* (not used in this routine) -* *
Draw face - 2nd option*-*-*-* -* ====================== -* -* Function: Draw face - 2nd option -* (fill in correspondance with function levels) -* -* References: WCtoNDC, FillPolygon -* -* Input: ICODES(*) - set of codes for the line (not used) -* ICODES(1) - IX -* ICODES(2) - IY -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* T(NP) - additional function defined on this face -* *
Draw face - 3rd option-*-*- -* ====================== -* -* Function: Draw face - 3rd option -* (draw face for stacked lego plot) -* -* References: WCtoNDC -* -* Input: ICODES(*) - set of codes for the line -* ICODES(1) - IX coordinate of the line cell -* ICODES(2) - IY coordinate of the line cell -* ICODES(3) - lego number -* ICODES(4) - side: 1-face,2-right,3-back,4-left, -* 5-bottom, 6-top -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* T(*) - additional function (not used here) -* -* *
*-*Draw face - 1st variant for "MOVING SCREEN" algorithm -* ===================================================== -* -* Function: Draw face - 1st variant for "MOVING SCREEN" algorithm -* (draw face with level lines) -* -* References: FindLevelLines, WCtoNDC, -* FindVisibleDraw, ModifyScreen -* -* Input: ICODES(*) - set of codes for the line (not used) -* ICODES(1) - IX -* ICODES(2) - IY -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* TT(NP) - additional function defined on this face -* (not used in this routine) -* *
*-*Draw face - 3rd variant for "MOVING SCREEN" algorithm -* ===================================================== -* -* Function: Draw face - 1st variant for "MOVING SCREEN" algorithm -* (draw level lines only) -* -* References: FindLevelLines, WCtoNDC, -* FindVisibleDraw, ModifyScreen -* -* Input: ICODES(*) - set of codes for the line (not used) -* ICODES(1) - IX -* ICODES(2) - IY -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* TT(NP) - additional function defined on this face -* (not used in this routine) -* *
-*Draw face - 2nd variant for "MOVING SCREEN" algorithm -* ===================================================== -* -* Function: Draw face - 2nd variant for "MOVING SCREEN" algorithm -* (draw face for stacked lego plot) -* -* References: FindLevelLines, WCtoNDC, -* FindVisibleDraw, ModifyScreen -* -* Input: ICODES(*) - set of codes for the line (not used) -* ICODES(1) - IX -* ICODES(2) - IY -* ICODES(3) - line code (N of lego) -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* TT(NP) - additional function defined on this face -* (not used in this routine) -* *
-*-*-*Draw face - 1st variant for "RASTER SCREEN" algorithm -* ===================================================== -* -* Function: Draw face - 1st variant for "RASTER SCREEN" algorithm -* (draw face with level lines) -* -* References: FindLevelLines, WCtoNDC, -* FindVisibleLine, FillPolygonBorder -* -* Input: ICODES(*) - set of codes for the line (not used) -* ICODES(1) - IX -* ICODES(2) - IY -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* TT(NP) - additional function defined on this face -* (not used in this routine) -* *
-*Draw face - 2nd variant for "RASTER SCREEN" algorithm -* ===================================================== -* -* Function: Draw face - 2nd variant for "RASTER SCREEN" algorithm -* (draw face for stacked lego plot) -* -* References: WCtoNDC, FindVisibleLine, FillPolygonBorder -* -* Input: ICODES(*) - set of codes for the line (not used) -* ICODES(1) - IX -* ICODES(2) - IY -* ICODES(3) - line code (N of lego) -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* TT(NP) - additional function defined on this face -* (not used in this routine) -* *
-*Fill polygon with function values at vertexes -* ============================================= -* -* Input: N - number of vertexes -* P(3,*) - polygon -* F(*) - function values at nodes -* -* Errors: - illegal number of vertexes in polygon -* - illegal call of FillPolygon: no levels -* *
-*Fill a polygon including border ("RASTER SCREEN")
-*          =================================================          
-*                                                                     
-*    Input: NN      - number of polygon nodes                         
-*           XY(2,*) - polygon nodes                                   
-*                                                                     
*
Find level lines for face*- -* ========================= -* -* Input: NP - number of nodes -* F(3,NP) - face -* T(NP) - additional function -* -* Error: number of points for line not equal 2 -* *
Find part of edge *-*- -* ================= -* -* Function: Find part of edge where function defined on this edge -* has value from FMIN to FMAX -* -* Input: P1(3) - 1st point -* P2(3) - 2nd point -* F1 - function value at 1st point -* F2 - function value at 2nd point -* FMIN - min value of layer -* FMAX - max value of layer -* -* Output: KPP - current number of point -* PP(3,*) - coordinates of new face -* *
Find visible parts of line (draw line)- -* ====================================== -* -* Input: R1(3) - 1-st point of the line -* R2(3) - 2-nd point of the line -* *
-*Find visible part of a line ("RASTER SCREEN")
-*            =============================================            
-*                                                                     
-*    Input: P1(2) - 1st point of the line                             
-*           P2(2) - 2nd point of the line                             
-*           NTMAX - max allowed number of visible segments            
-*                                                                     
-*    Output: NT     - number of visible segments of the line          
-*            T(2,*) - visible segments                                
-*                                                                     
*
*Draw forward faces of surrounding box & axes -* ============================================ -* -* Function: Draw forward faces of surrounding box & axes -* -* References: AxisVertex, Gaxis -* -* Input ANG - angle between X and Y axis -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* *
Find part of surface with luminosity in the corners *-* =================================================== - *-* This routine is used for Gouraud shading - *
-*Initialize "MOVING SCREEN" method
-*                  =================================                  
-*                                                                     
-*    Input: XMIN - left boundary                                      
-*           XMAX - right boundary                                     
-*                                                                     
*
Initialize hidden lines removal algorithm (RASTER SCREEN)*-*-*- -* ========================================================= -* -* Input: XMIN - Xmin in the normalized coordinate system -* YMIN - Ymin in the normalized coordinate system -* XMAX - Xmax in the normalized coordinate system -* YMAX - Ymax in the normalized coordinate system -* NX - number of pixels along X -* NY - number of pixels along Y -* *
*-*Service function for Legos *-* ========================== - *
-*Draw stack of lego-plots in cartesian coordinates -* ================================================= -* -* Input: ANG - angle between X ang Y -* NX - number of cells along X -* NY - number of cells along Y -* -* FUN(IX,IY,NV,XY,V,T) - external routine -* IX - X number of the cell -* IY - Y number of the cell -* NV - number of values for given cell -* XY(2,4)- coordinates of the cell corners -* V(NV) - cell values -* T(4,NV)- additional function (for example: temperature) -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this line -* ICODES(1) - IX -* ICODES(2) - IY -* ICODES(3) - IV -* ICODES(4) - side: 1-face,2-right,3-back,4-left, -* 5-bottom, 6-top -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes -* IFACE(NP) - face -* T(4) - additional function (here Z-coordinate) -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -*/*
 */
*/
*
Draw stack of lego-plots in polar coordinates -* ============================================= -* -* Input: IORDR - order of variables (0 - R,PHI; 1 - PHI,R) -* NA - number of steps along 1st variable -* NB - number of steps along 2nd variable -* -* FUN(IA,IB,NV,AB,V,TT) - external routine -* IA - cell number for 1st variable -* IB - cell number for 2nd variable -* NV - number of values for given cell -* AB(2,4) - coordinates of the cell corners -* V(NV) - cell values -* TT(4,*) - additional function -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* ICODES(1) - IA -* ICODES(2) - IB -* ICODES(3) - IV -* ICODES(4) - side: 1-internal,2-right,3-external,4-left -* 5-bottom, 6-top -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -*/*
 */
*/
*
Draw stack of lego-plots in cylindrical coordinates -* =================================================== -* -* Input: IORDR - order of variables (0 - Z,PHI; 1 - PHI,Z) -* NA - number of steps along 1st variable -* NPHI - number of steps along 2nd variable -* -* FUN(IA,IB,NV,AB,V,TT) - external routine -* IA - cell number for 1st variable -* IB - cell number for 2nd variable -* NV - number of values for given cell -* AB(2,4) - coordinates of the cell corners -* V(NV) - cell values -* TT(4,*) - additional function -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* ICODES(1) - IA -* ICODES(2) - IB -* ICODES(3) - IV -* ICODES(4) - side: 1,2,3,4 - ordinary sides -* 5-bottom,6-top -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -*/*
 */
*/
*
*-*-*Draw stack of lego-plots spheric coordinates -* ============================================ -* -* Input: IPSDR - pseudo-rapidity flag -* IORDR - order of variables (0 - THETA,PHI; 1 - PHI,THETA) -* NA - number of steps along 1st variable -* NB - number of steps along 2nd variable -* -* FUN(IA,IB,NV,AB,V,TT) - external routine -* IA - cell number for 1st variable -* IB - cell number for 2nd variable -* NV - number of values for given cell -* AB(2,4) - coordinates of the cell corners -* V(NV) - cell values -* TT(4,*) - additional function -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* ICODES(1) - IA -* ICODES(2) - IB -* ICODES(3) - IV -* ICODES(4) - side: 1,2,3,4 - ordinary sides -* 5-bottom,6-top -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -* *
Set light source-*-*-*- -* ================ -* -* Input: NL - source number: -1 off all light sources -* 0 set diffused light -* YL - intensity of the light source -* XSCR \ -* YSCR - direction of the light (in respect of the screen) -* ZSCR / -* -* Output: IREP - reply : 0 - O.K. -* -1 - error in light sources definition: -* negative intensity -* source number greater than max -* light source is placed at origin -* *
-*-*Find surface luminosity at given point -* ====================================== -* -* -- -* Lightness model formula: Y = YD*QA + > YLi*(QD*cosNi+QS*cosRi) -* -- -* -* B1 = VN(3)*VL(2) - VN(2)*VL(3) -* B2 = VN(1)*VL(3) - VN(3)*VL(1) -* B3 = VN(2)*VL(1) - VN(1)*VL(2) -* B4 = VN(1)*VL(1) + VN(2)*VL(2) + VN(3)*VL(3) -* VR(1) = VN(3)*B2 - VN(2)*B3 + VN(1)*B4 -* VR(2) =-VN(3)*B1 + VN(1)*B3 + VN(2)*B4 -* VR(3) = VN(2)*B1 - VN(1)*B2 + VN(3)*B4 -* S = SQRT(VR(1)*VR(1)+VR(2)*VR(2)+VR(3)*VR(3)) -* VR(1) = VR(1)/S -* VR(2) = VR(2)/S -* VR(3) = VR(3)/S -* COSR = VR(1)*0. + VR(2)*0. + VR(3)*1. -* -* References: WCtoNDC -* -* Input: ANORM(3) - surface normal at given point -* -* Output: FLUM - luminosity -* *
Modify SCREEN*-*-*- -* ============= -* -* Input: R1(3) - 1-st point of the line -* R2(3) - 2-nd point of the line -* *
-*-*-*-*-*Store pointer to current algorithm to draw faces -* ================================================ -* *
Store pointer to current lego function -* ====================================== -* *
-*Store pointer to current surface function -* ========================================= -* *
 static function
 Set the implicit function clipping box "on" and define the clipping box.
 xclip, yclip and zclip is a point within the function range. All the
 function value having x<=xclip and y<=yclip and z>=zclip are clipped.
-*-*-*Decode side visibilities and order along R for sector -* ===================================================== -* -* Input: VAL - encoded value -* -* Output: IV1 ... IV6 - visibility of the sides -* IR - increment along R -* *
-*-*-*Encode side visibilities and order along R for sector -* ===================================================== -* -* Input: IOPT - options: 1 - from BACK to FRONT 'BF' -* 2 - from FRONT to BACK 'FB' -* PHI1 - 1st phi of sector -* PHI2 - 2nd phi of sector -* -* Output: VAL - encoded value -* *
Set Spectrum-*-*-*-*-*- -* ============= -* -* Input: NL - number of levels -* FMIN - MIN function value -* FMAX - MAX function value -* IC - initial color index (for 1st level) -* IDC - color index increment -* -* Output: IREP - reply: 0 O.K. -* -1 error in parameters -* F_max less than F_min -* illegal number of levels -* initial color index is negative -* color index increment must be positive -* *
-*-*Draw surface in cartesian coordinate system -* =========================================== -* -* Input: ANG - angle between X ang Y -* NX - number of steps along X -* NY - number of steps along Y -* -* FUN(IX,IY,F,T) - external routine -* IX - X number of the cell -* IY - Y number of the cell -* F(3,4) - face which corresponds to the cell -* T(4) - additional function (for example: temperature) -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* ICODES(1) - IX -* ICODES(2) - IY -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -* *
-*-*Service function for Surfaces *-* ============================= - *
-*-*-*Draw surface in polar coordinates -* ================================= -* -* Input: IORDR - order of variables (0 - R,PHI, 1 - PHI,R) -* NA - number of steps along 1st variable -* NB - number of steps along 2nd variable -* -* FUN(IA,IB,F,T) - external routine -* IA - cell number for 1st variable -* IB - cell number for 2nd variable -* F(3,4) - face which corresponds to the cell -* F(1,*) - A -* F(2,*) - B -* F(3,*) - Z -* T(4) - additional function (for example: temperature) -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* ICODES(1) - IA -* ICODES(2) - IB -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -* *
Draw surface in cylindrical coordinates -* ======================================= -* -* Input: IORDR - order of variables (0 - Z,PHI, 1 - PHI,Z) -* NA - number of steps along 1st variable -* NB - number of steps along 2nd variable -* -* FUN(IA,IB,F,T) - external routine -* IA - cell number for 1st variable -* IB - cell number for 2nd variable -* F(3,4) - face which corresponds to the cell -* F(1,*) - A -* F(2,*) - B -* F(3,*) - R -* T(4) - additional function (for example: temperature) -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* ICODES(1) - IA -* ICODES(2) - IB -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -*/*
 */
*/
*
-*-*Draw surface in spheric coordinates -* =================================== -* -* Input: IPSDR - pseudo-rapidity flag -* IORDR - order of variables (0 - THETA,PHI; 1 - PHI,THETA) -* NA - number of steps along 1st variable -* NB - number of steps along 2nd variable -* -* FUN(IA,IB,F,T) - external routine -* IA - cell number for 1st variable -* IB - cell number for 2nd variable -* F(3,4) - face which corresponds to the cell -* F(1,*) - A -* F(2,*) - B -* F(3,*) - R -* T(4) - additional function (for example: temperature) -* -* DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing -* ICODES(*) - set of codes for this face -* ICODES(1) - IA -* ICODES(2) - IB -* XYZ(3,*) - coordinates of nodes -* NP - number of nodes in face -* IFACE(NP) - face -* T(NP) - additional function -* -* CHOPT - options: 'BF' - from BACK to FRONT -* 'FB' - from FRONT to BACK -* *
-*Set surface property coefficients -* ================================= -* -* Input: QQA - diffusion coefficient for diffused light [0.,1.] -* QQD - diffusion coefficient for direct light [0.,1.] -* QQS - diffusion coefficient for reflected light [0.,1.] -* NNCS - power coefficient for reflected light (.GE.1) -* -* -- -* Lightness model formula: Y = YD*QA + > YLi*(QD*cosNi+QS*cosRi) -* -- -* -* Output: IREP - reply : 0 - O.K. -* -1 - error in cooefficients -* *
Draw implicit function FUN(X,Y,Z) = 0 in cartesian coordinates using hidden surface removal algorithm "Painter". Input: FUN - external routine FUN(X,Y,Z) RMIN(3) - min scope coordinates RMAX(3) - max scope coordinates NX - number of steps along X NY - number of steps along Y NZ - number of steps along Z DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing ICODES(*) - set of codes for this face ICODES(1) - 1 ICODES(2) - 1 ICODES(3) - 1 NP - number of nodes in face IFACE(NP) - face T(NP) - additional function (lightness) CHOPT - options: 'BF' - from BACK to FRONT 'FB' - from FRONT to BACK
 Topological decider for "Marching Cubes" algorithm Find set of triangles
 aproximating the isosurface F(x,y,z)=Fiso inside the cube
 (improved version)
 Input: FISO   - function value for isosurface
        P(3,8) - cube vertexes
        F(8)   - function values at the vertexes
        G(3,8) - function gradients at the vertexes
 Output: NNOD       - number of nodes     (maximum 13)
         NTRIA      - number of triangles (maximum 12)
         XYZ(3,*)   - nodes
         GRAD(3,*)  - node normales       (not normalized)
         ITRIA(3,*) - triangles
Consideration of trivial cases: 1,2,5,8,9,11,14 Input: K1,...,K6 - edges intersected with isosurface Output: the same as for IHMCUB
Consider case No 3 Input: see common HCMCUB Output: the same as for IHMCUB
Consider case No 4 Input: see common HCMCUB Output: the same as for IHMCUB
Consider case No 6 Input: see common HCMCUB Output: the same as for IHMCUB
Consider case No 7 Input: see common HCMCUB Output: the same as for IHMCUB
Consider case No 10 Input: see common HCMCUB Output: the same as for IHMCUB
Consider case No 12 Input: see common HCMCUB Output: the same as for IHMCUB
Consider case No 13 Input: see common HCMCUB Output: the same as for IHMCUB
 Set triangles (if parameter IALL=1, all edges will be visible)
 Input: NTRIA   - number of triangles
        IT(3,*) - triangles
 Output: ITRIA(3,*) - triangles
 Find middle point of a polygon
 Input: NNOD      - number of nodes in the polygon
        XYZ(3,*)  - node coordinates
        GRAD(3,*) - node normales
        IT(3,*)   - division of the polygons into triangles
 Output: PXYZ(3)  - middle point coordinates
         PGRAD(3) - middle point normale
 Check for surface penetration ("bottle neck")
 Input: A00,A10,A11,A01 - vertex values for 1st face
        B00,B10,B11,B01 - vertex values for opposite face
 Output: IREP - 1,2 - there is surface penetration
                0   - there is not surface penetration
 Find nodes and normales
 Input: NNOD  - number of nodes
        IE(*) - edges which have section node
 Output: XYZ(3,*)  - nodes
         GRAD(3,*) - node normales (not normalized)
 Z-depth algorithm for set of triangles
 Input: XYZ(3,*)   - nodes
        NFACE      - number of triangular faces
        IFACE(3,*) - faces (triangles)
 Arrays: DFACE(6,*) - array for min-max scopes
         ABCD(4,*)  - array for face plane equations
 Output: IORDER(*) - face order
 Test edge against face (triangle)
 Input: DEL      - precision
        XYZ(3,*) - nodes
        I1       - 1-st node of edge
        I2       - 2-nd node of edge
        IFACE(3) - triangular face
        ABCD(4)  - face plane
 Output: IREP:-1 - edge under face
               0 - no decision
              +1 - edge before face
Draw set of isosurfaces for a scalar function defined on a grid. Input: NS - number of isosurfaces S(*) - isosurface values NX - number of slices along X NY - number of slices along Y NZ - number of slices along Z X(*) - slices along X Y(*) - slices along Y Z(*) - slices along Z F(NX,NY,NZ) - function values <- Not used, current histo used instead DRFACE(ICODES,XYZ,NP,IFACE,T) - routine for face drawing ICODES(1) - isosurface number ICODES(2) - isosurface number ICODES(3) - isosurface number NP - number of nodes in face IFACE(NP) - face T(NP) - additional function (lightness) CHOPT - options: 'BF' - from BACK to FRONT 'FB' - from FRONT to BACK
Draw the faces for the Gouraud Shaded Iso surfaces