The original Fortran implementation was adapted to HIGZ/PAW by Olivier Couet and Evgueni Tcherniaev.
This 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
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