*-*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