31 #if defined(Viewer3D_RECURSES) 32 #error Recursive header files inclusion detected in Viewer3D.h 33 #else // defined(Viewer3D_RECURSES) 35 #define Viewer3D_RECURSES 37 #if !defined Viewer3D_h 43 #include "DGtal/base/Common.h" 52 #include <OpenGL/gl.h> 53 #include <OpenGL/glu.h> 60 #include <QApplication> 62 #include <QtGui/qapplication.h> 65 #include <QGLViewer/qglviewer.h> 69 #include "DGtal/kernel/SpaceND.h" 70 #include "DGtal/topology/KhalimskySpaceND.h" 71 #include "DGtal/base/CountedPtr.h" 72 #include "DGtal/io/Display3D.h" 73 #include "DGtal/math/BasicMathFunctions.h" 75 #include "DGtal/kernel/CSpace.h" 130 template <
typename Space = SpaceND<3>,
131 typename KSpace = KhalimskySpaceND<3> >
227 glEnable(GL_NORMALIZE);
364 template<
typename TDomain>
366 double xBottomLeft=0.0,
double yBottomLeft=0.0,
double zBottomLeft=0.0, std::string mode=
"BoundingBox")
370 myDirection=normalDir;
371 myDomainWidth = (aDomain.upperBound())[0]-(aDomain.lowerBound())[0]+1;
372 myDomainHeight = (aDomain.upperBound())[1]-(aDomain.lowerBound())[1]+1;
387 double xBottomLeft,
double yBottomLeft,
double zBottomLeft);
397 double yTranslation=0.0,
double zTranslation=0.0);
430 delete [] myTabImage;
438 point3(img.point3), point4(img.point4),
439 myDirection(img.myDirection), myImageWidth(img.myImageWidth),
440 myImageHeight(img.myImageHeight),
441 myTabImage(img.myTabImage),
442 myDrawDomain(img.myDrawDomain),
443 myIndexDomain(img.myIndexDomain),
481 template <
typename TImageType,
typename TFunctor>
485 double xBottomLeft=0.0,
double yBottomLeft=0.0,
double zBottomLeft=0.0,
491 myDirection=normalDir;
492 myImageWidth = (image.domain().upperBound())[0]-(image.domain().lowerBound())[0]+1;
493 myImageHeight = (image.domain().upperBound())[1]-(image.domain().lowerBound())[1]+1;
494 myTabImage =
new unsigned int [myImageWidth*myImageHeight];
495 updateImageOrientation(normalDir, xBottomLeft, yBottomLeft, zBottomLeft);
497 updateImageDataAndParam(image, aFunctor);
510 double xBottomLeft,
double yBottomLeft,
double zBottomLeft);
526 point1 = aPoint1; point2 = aPoint2; point3 = aPoint3; point4 = aPoint4;
546 template <
typename TImageType,
typename TFunctor>
548 double yTranslation=0.0,
double zTranslation=0.0)
552 assert ( (image.domain().upperBound())[0]-(image.domain().lowerBound())[0]+1== static_cast<int>(myImageWidth) &&
553 (image.domain().upperBound())[1]-(image.domain().lowerBound())[1]+1== static_cast<int>(myImageHeight));
555 point1[0] += xTranslation; point1[1] += yTranslation; point1[2] += zTranslation;
556 point2[0] += xTranslation; point2[1] +=yTranslation; point2[2] += zTranslation;
557 point3[0] += xTranslation; point3[1] += yTranslation; point3[2] += zTranslation;
558 point4[0] += xTranslation; point4[1] += yTranslation; point4[2] += zTranslation;
564 myTabImage[pos]= aFunctor(
image(*it));
572 std::string className()
const;
621 template <
typename TDrawableWithViewer3D>
693 template <
typename TImageType,
typename TFunctor>
695 void updateTextureImage(
unsigned int imageIndex,
const TImageType & image,
const TFunctor & aFunctor,
696 double xTranslation=0.0,
double yTranslation=0.0,
double zTranslation=0.0,
712 double xPosition,
double yPosition,
737 template<
typename TDomain>
751 double xPosition,
double yPosition,
762 double yTranslation,
double zTranslation);
770 std::vector<typename DGtal::Viewer3D< Space , KSpace >::LineD3D>
778 std::vector<typename DGtal::Viewer3D< Space , KSpace >::LineD3D>
790 template <
typename TContainer >
831 void updateList (
bool needToUpdateBoundingBox=
true );
891 double dist1= sqrt ( ( posCam.x-s1.
center[0] ) * ( posCam.x-s1.
center[0] ) + ( posCam.y-s1.
center[1] ) * ( posCam.y-s1.
center[1] ) + ( posCam.z-s1.
center[2] ) * ( posCam.z-s1.
center[2] ) );
892 double dist2= sqrt ( ( posCam.x-s2.
center[0] ) * ( posCam.x-s2.
center[0] ) + ( posCam.y-s2.
center[1] ) * ( posCam.y-s2.
center[1] ) + ( posCam.z-s2.
center[2] ) * ( posCam.z-s2.
center[2] ) );
909 double dist1= sqrt ( ( posCam.x-center1.x ) * ( posCam.x-center1.x ) + ( posCam.y-center1.y ) * ( posCam.y-center1.y ) + ( posCam.z-center1.z ) * ( posCam.z-center1.z ) );
910 double dist2= sqrt ( ( posCam.x-center2.x ) * ( posCam.x-center2.x ) + ( posCam.y-center2.y ) * ( posCam.y-center2.y ) + ( posCam.z-center2.z ) * ( posCam.z-center2.z ) );
929 double dist1= sqrt ( ( posCam.x-center1.x ) * ( posCam.x-center1.x ) + ( posCam.y-center1.y ) * ( posCam.y-center1.y ) + ( posCam.z-center1.z ) * ( posCam.z-center1.z ) );
930 double dist2= sqrt ( ( posCam.x-center2.x ) * ( posCam.x-center2.x ) + ( posCam.y-center2.y ) * ( posCam.y-center2.y ) + ( posCam.z-center2.z ) * ( posCam.z-center2.z ) );
944 double c1x=0.0, c1y=0.0, c1z=0.0;
945 double c2x=0.0, c2y=0.0, c2z=0.0;
946 for(
unsigned int i=0; i< q1.
vertices.size(); i++){
951 for(
unsigned int i=0; i< q2.
vertices.size(); i++){
957 qglviewer::Vec center1 ( c1x/(
double)q1.
vertices.size(),c1y/(double)q1.
vertices.size(), c1z/(double)q1.
vertices.size() );
958 qglviewer::Vec center2 ( c2x/(
double)q2.
vertices.size(),c2y/(double)q2.
vertices.size(), c2z/(double)q2.
vertices.size() );
960 double dist1= sqrt ( ( posCam.x-center1.x ) * ( posCam.x-center1.x ) + ( posCam.y-center1.y ) * ( posCam.y-center1.y ) + ( posCam.z-center1.z ) * ( posCam.z-center1.z ) );
961 double dist2= sqrt ( ( posCam.x-center2.x ) * ( posCam.x-center2.x ) + ( posCam.y-center2.y ) * ( posCam.y-center2.y ) + ( posCam.z-center2.z ) * ( posCam.z-center2.z ) );
1005 virtual QDomElement
domElement(
const QString& name, QDomDocument& document)
const;
1028 protected:
virtual void closeEvent ( QCloseEvent * e );
1058 double vectNormal[3];
1071 if(myTextureImageBufferGS!=0)
1072 delete [] myTextureImageBufferGS;
1076 if(myTextureImageBufferRGB!=0)
1077 delete [] myTextureImageBufferRGB;
1084 myBufferHeight(aGLImg.myBufferHeight),
1085 myTextureName(aGLImg.myTextureName),
1086 myMode(aGLImg.myMode),
1087 myTextureFitX(aGLImg.myTextureFitX),
1088 myTextureFitY(aGLImg.myTextureFitY)
1103 myTextureImageBufferGS =
new unsigned char [myBufferHeight*myBufferWidth];
1104 for(
unsigned int i=0; i<myBufferHeight*myBufferWidth;i++)
1110 myTextureImageBufferRGB =
new unsigned char [3*myBufferHeight*myBufferWidth];
1111 for(
unsigned int i=0; i<3*myBufferHeight*myBufferWidth;i+=3)
1124 point1[0]=aGSImage.
point1[0]; point1[1]=aGSImage.
point1[1]; point1[2]=aGSImage.
point1[2];
1125 point2[0]=aGSImage.
point2[0]; point2[1]=aGSImage.
point2[1]; point2[2]=aGSImage.
point2[2];
1126 point3[0]=aGSImage.
point3[0]; point3[1]=aGSImage.
point3[1]; point3[2]=aGSImage.
point3[2];
1127 point4[0]=aGSImage.
point4[0]; point4[1]=aGSImage.
point4[1]; point4[2]=aGSImage.
point4[2];
1134 if(myDirection==undefDirection){
1135 RealPoint v1 = point2-
point1;
1136 RealPoint v2 = point4-
point1;
1137 vectNormal[0] = v1[1]*v2[2] - v1[2]*v2[1];
1138 vectNormal[1] = v1[2]*v2[0] - v1[0]*v2[2];
1139 vectNormal[2] = v1[0]*v2[1] - v1[1]*v2[0];
1140 double norm = sqrt(vectNormal[0]*vectNormal[0]+vectNormal[1]*vectNormal[1]+vectNormal[2]*vectNormal[2]);
1141 vectNormal[0] /=norm; vectNormal[1] /=norm; vectNormal[2] /=norm;
1149 myTextureImageBufferGS =
new unsigned char [myBufferHeight*myBufferWidth];
1151 for (
unsigned int i=0; i<myBufferHeight; i++)
1153 for (
unsigned int j=0; j<myBufferWidth; j++)
1155 if(i<myImageHeight && j< myImageWidth)
1157 myTextureImageBufferGS[pos]= aGSImage.
myTabImage[i*myImageWidth+j];
1159 myTextureImageBufferGS[pos]=0;
1166 myTextureImageBufferRGB =
new unsigned char [3*myBufferHeight*myBufferWidth];
1168 for (
unsigned int i=0; i<myBufferHeight; i++)
1170 for (
unsigned int j=0; j<myBufferWidth; j++)
1172 if(i<myImageHeight && j< myImageWidth)
1175 myTextureImageBufferRGB[pos]= aCol.
red();
1176 myTextureImageBufferRGB[pos+1]= aCol.
green();
1177 myTextureImageBufferRGB[pos+2]= aCol.
blue();
1179 myTextureImageBufferRGB[pos]=0;
1180 myTextureImageBufferRGB[pos+1]=0;
1181 myTextureImageBufferRGB[pos+2]=0;
1188 myTextureFitX = 1.0-((myBufferWidth-myImageWidth)/(
double)myBufferWidth);
1189 myTextureFitY = 1.0-((myBufferHeight-myImageHeight)/(
double)myBufferHeight);
1200 typedef typename std::vector<typename Viewer3D<Space, KSpace>::CubeD3D>
VectorCubes;
1201 typedef typename std::vector<typename Viewer3D<Space, KSpace>::QuadD3D>
VectorQuad;
1202 typedef typename std::vector<typename Viewer3D<Space, KSpace>::LineD3D>
VectorLine;
1203 typedef typename std::vector<typename Viewer3D<Space, KSpace>::BallD3D>
VectorBall;
1204 typedef typename std::vector<typename Viewer3D<Space, KSpace>::TriangleD3D>
VectorTriangle;
1205 typedef typename std::vector<typename Viewer3D<Space, KSpace>::PolygonD3D>
VectorPolygon;
1209 typedef typename VectorCubes::iterator
ItCube;
1303 void glCreateListPolygons(
const std::vector<VectorPolygon> &aVectPolygon,
unsigned int idList);
1365 template<
typename TImageORDomain>
1369 double xB = (anImageOrDom.point1[0]+anImageOrDom.point2[0]+anImageOrDom.point3[0]+anImageOrDom.point4[0])/4.0;
1370 double yB = (anImageOrDom.point1[1]+anImageOrDom.point2[1]+anImageOrDom.point3[1]+anImageOrDom.point4[1])/4.0;
1371 double zB = (anImageOrDom.point1[2]+anImageOrDom.point2[2]+anImageOrDom.point3[2]+anImageOrDom.point4[2])/4.0;
1372 rotatePoint( anImageOrDom.point1[0], anImageOrDom.point1[1], anImageOrDom.point1[2], xB, yB, zB, angle, rotationDir);
1373 rotatePoint( anImageOrDom.point2[0], anImageOrDom.point2[1], anImageOrDom.point2[2], xB, yB, zB, angle, rotationDir);
1374 rotatePoint( anImageOrDom.point3[0], anImageOrDom.point3[1], anImageOrDom.point3[2], xB, yB, zB, angle, rotationDir);
1375 rotatePoint( anImageOrDom.point4[0], anImageOrDom.point4[1], anImageOrDom.point4[2], xB, yB, zB, angle, rotationDir);
1392 template <
typename TValues>
1394 void rotatePoint(TValues &x, TValues &y, TValues &z,
1395 double cx,
double cy,
double cz,
1498 template <
typename Space,
typename KSpace>
1506 operator<< ( std::ostream & out, const Viewer3D<Space, KSpace> & object );
1512 #include "DGtal/io/viewers/Viewer3D.ih" 1517 #endif // !defined Viewer3D_h 1519 #undef Viewer3D_RECURSES 1520 #endif // else defined(Viewer3D_RECURSES) unsigned int myNbBallSetList
virtual void postSelection(const QPoint &point)
postSelection
qglviewer::Vec myOrig
information linked to the navigation in the viewer
std::vector< typename Viewer3D< Space, KSpace >::TriangleD3D > VectorTriangle
bool myViewWire
objects have shadows which follow the camera if false
double ZNear
znear distance
void updateImageDataAndParam(const TImageType &image, const TFunctor &aFunctor, double xTranslation=0.0, double yTranslation=0.0, double zTranslation=0.0)
void glCreateListQuadD3D(const VectorQuad &aVectQuad, unsigned int idList)
const GLfloat myMetallicRenderSpec
void rotateLineD3D(typename DGtal::Display3D< Space, KSpace >::LineD3D &aLine, DGtal::PointVector< 3, int, TContainer > pt, double angleRotation, ImageDirection dirRotation)
GLfloat myMaterialShininessCoeff[1]
unsigned int myNbLineSetList
MyDigitalSurface::ConstIterator ConstIterator
GLfloat myLightPositionRefCamera[3]
const GLfloat myMetallicRenderDiff
void glCreateListBalls(const VectorBall &aVectBall, unsigned int idList)
~TextureImage()
the mode of representation of the image
std::vector< GLTextureImage > myVectTextureImage
list of the images textures in this viewer
static void rotatePoint(TValues &x, TValues &y, TValues &z, double cx, double cy, double cz, double rotationAngle, ImageDirection rotationDir)
void setCameraUpVector(double ax, double ay, double az)
void setUseGLPointForBalls(bool useOpenGLPt)
double myLightPhi
the light position (inclination)
Aim: SpaceND is a utility class that defines the fundamental structure of a Digital Space in ND...
virtual void show()
Overload QWidget method in order to add a call to updateList() method (to ensure that the lists are w...
virtual QString helpString() const
unsigned int myDomainWidth
the width of the image domain
ImageDirection myDirection
virtual void mousePressEvent(QMouseEvent *e)
Viewer3D< Space, KSpace >::ImageDirection myDirection
unsigned int myNbListe
number of lists in myListToAff
void updateEmbeddingTextureImage(unsigned int anImageIndex, typename Space::Point aPoint1, typename Space::Point aPoint2, typename Space::Point aPoint3, typename Space::Point aPoint4)
Image2DDomainD3D(TDomain aDomain, ImageDirection normalDir=zDirection, double xBottomLeft=0.0, double yBottomLeft=0.0, double zBottomLeft=0.0, std::string mode="BoundingBox")
void updateLightCoordsFromCamera()
void updateAn2DDomainOrientation(unsigned int imageIndex, double xPosition, double yPosition, double zPosition, ImageDirection newDirection)
bool myIsMovingLight
the reference mouse y-position used to determince the light position change (inclination) ...
unsigned int myBufferHeight
void glCreateListQuadMaps(const typename Display3D< Space, KSpace >::QuadsMap &aQuadMap, unsigned int idList)
int myRefMouseXPos
the angle rotation increment used for interactive light move
qglviewer::Vec myDirSelector
const GLfloat myPlasticRenderSpec
bool myAutoSaveState
flag to save automatically or not the Viewer3d state when closing the viewer
void setCameraDirection(double ax, double ay, double az)
std::vector< typename Viewer3D< Space, KSpace >::PolygonD3D > VectorPolygon
GLfloat myLightDiffuseCoeffs[4]
void glDrawGLBall(const typename Viewer3D< Space, KSpace >::BallD3D &aBall)
TextureImage(const TImageType &image, const TFunctor &aFunctor, ImageDirection normalDir=zDirection, double xBottomLeft=0.0, double yBottomLeft=0.0, double zBottomLeft=0.0, TextureMode aMode=GrayScaleMode)
virtual void mouseMoveEvent(QMouseEvent *e)
void rotateDomain(Image2DDomainD3D &anDom, double angle, ImageDirection rotationDir)
GLfloat myLightSpecularCoeffs[4]
unsigned int * myTabImage
the height of the image
void setGLLightSpecularCoefficients(const GLfloat lightSpecularCoeffs [4])
GLTextureImage(const typename Viewer3D< Space, KSpace >::TextureImage &aGSImage)
DGtal::SpaceND ::RealPoint RealPoint
RealPoint type.
QPoint myPosSelector
a point selected with postSelection
ImageDirection myDirection
the direction of the domain (x, y or z axe)
Display::SelectCallbackFct SelectCallbackFct
std::vector< typename Viewer3D< Space, KSpace >::BallD3D > VectorBall
bool myIsBackgroundDefault
true if the background is default
const GLfloat myDefaultRenderDiff
BOOST_CONCEPT_ASSERT((concepts::CSpace< Space >))
std::map< DGtal::int32_t, std::vector< QuadD3D > > QuadsMap
The type that maps identifier name -> vector of QuadD3D.
unsigned int myIndexDomain
true if the draw have a domain
std::vector< RealPoint > vertices
void updateImage3DEmbedding(RealPoint aPoint1, RealPoint aPoint2, RealPoint aPoint3, RealPoint aPoint4)
const GLfloat myLambertRenderSpec
Aim: Defines a unary functor, which associates arguments to results.
virtual void paintGL()
Overload of the QGLViewer method in order to change the order of display (to fix the QGLViewer axis d...
double camera_position[3]
camera position
unsigned int myLineSetIndex
the index of the line of the domain in the lineSetList of the viewer
unsigned int myBufferWidth
void updateTextureImage(unsigned int imageIndex, const TImageType &image, const TFunctor &aFunctor, double xTranslation=0.0, double yTranslation=0.0, double zTranslation=0.0, double rotationAngle=0.0, ImageDirection rotationDir=zDirection)
void glCreateListQuadMapsWired(const typename Display3D< Space, KSpace >::QuadsMap &aQuadMap, unsigned int idList)
Viewer3D< Space, KSpace >::TextureMode myMode
void selfDisplay(std::ostream &out) const
void sortPolygonFromCamera()
void setGLLightDiffuseCoefficients(const GLfloat lightDiffuseCoeffs [4])
DGtal::Color myDefaultColor
the default color of the viewer
bool myLightPositionFixToCamera
void glCreateListPolygonsWired(const std::vector< VectorPolygon > &aVectPolygon, unsigned int idList)
std::vector< typename DGtal::Viewer3D< Space, KSpace >::LineD3D > compute2DDomainLineRepresentation(Image2DDomainD3D &anImageDomain, double delta)
void addImage2DDomainD3D(const TDomain &anImageDomain, std::string mode, const DGtal::Color &aColor=DGtal::Color::Red)
Aim: This concept represents a digital domain, i.e. a non mutable subset of points of the given digit...
std::vector< typename Viewer3D< Space, KSpace >::TextureImage > VectorTextureImage
void setGLMaterialShininessCoefficient(const GLfloat matShininessCoeff)
unsigned int myImageHeight
RenderingMode myRenderingMode
void updateDomainOrientation(ImageDirection normalDir, double xBottomLeft, double yBottomLeft, double zBottomLeft)
bool myUseGLPointsForBalls
RealPoint center
The center coordinate of the cube.
void addTextureImage(const TextureImage &image)
virtual unsigned int getCurrentGLImageNumber()
std::map< DGtal::int32_t, std::vector< CubeD3D > > CubesMap
The type that maps identifier name -> vector of CubeD3D.
void setGLLightAmbientCoefficients(const GLfloat lightAmbientCoeffs [4])
void updateRenderingCoefficients(const RenderingMode aRenderMode, bool displayState=true)
int mySelectedElementId
used to displayed selected elements
void setNearFar(double _near, double _far)
Aim: Defines the concept describing a digital space, ie a cartesian product of integer lines...
void sortTriangleFromCamera()
double myLightR
the light position (azimuth)
GLuint myCubeSetListWiredId
static void rotateImageVertex(TImageORDomain &anImageOrDom, double angle, ImageDirection rotationDir)
GLuint myPolygonSetListId
void updateRelativeCameraFromLightPosition()
unsigned char * myTextureImageBufferGS
std::vector< typename Viewer3D< Space, KSpace >::CubeD3D > VectorCubes
SelectCallbackFct getSelectCallback3D(DGtal::int32_t aName, void *&data) const
GLuint myTriangleSetListWiredId
qglviewer::Vec mySelectedPoint
const GLfloat myLambertRenderDiff
void updateList(bool needToUpdateBoundingBox=true)
int myRefMouseYPos
the reference mouse x-position used to determince the light position change (azimuth) ...
DGtal::Color color
The image domain color.
std::vector< TextureImage > myGSImageList
flag to display the ligth source when it is moved by the user
void glCreateListCubesMaps(const typename Display3D< Space, KSpace >::CubesMap &aCubeMap, unsigned int idList)
DGtal::Color myDefaultBackgroundColor
the default background color of the viewer
GLuint myPolygonSetListWiredId
DGtal is the top-level namespace which contains all DGtal functions and types.
int(* SelectCallbackFct)(void *viewer, DGtal::int32_t name, void *data)
Select callback function type.
unsigned int myNbPrismSetList
unsigned int myImageWidth
direction of the image (x, y or z axe)
void glCreateListPolygons(const std::vector< VectorPolygon > &aVectPolygon, unsigned int idList)
void setGLDoubleRenderingMode(bool doubleSidedRendering)
Display::RealPoint RealPoint
void updateOrientationTextureImage(unsigned int imageIndex, double xPosition, double yPosition, double zPosition, ImageDirection newDirection)
std::vector< typename Viewer3D< Space, KSpace >::LineD3D > VectorLine
void glUpdateLightRenderingMode() const
RealPoint point1
The image domain coordinates.
virtual unsigned int getCurrentDomainNumber()
std::vector< Image2DDomainD3D > myImageDomainList
Used to store all the domains.
unsigned int myImageWidth
Display3D< Space, KSpace > Display
GLfloat myLightAmbientCoeffs[4]
void translateDomain(double xTranslation=0.0, double yTranslation=0.0, double zTranslation=0.0)
unsigned char * myTextureImageBufferRGB
virtual void closeEvent(QCloseEvent *e)
Overload the QWidget method to customize the viewer state auto saving. Now it save the viewer state i...
GLfloat myLightPosition[4]
the light position (distance)
GLTextureImage(const GLTextureImage &aGLImg)
virtual void keyPressEvent(QKeyEvent *e)
double camera_upVector[3]
camera up-vector
void glCreateListTrianglesWired(const std::vector< VectorTriangle > &aVectTriangle, unsigned int idList)
std::string myMode
the mode of representation of the image domain
T roundToUpperPowerOfTwo(const T &n)
double myGLLineMinWidth
to improve the display of gl points
const GLfloat myPlasticRenderDiff
void glCreateListTriangles(const std::vector< VectorTriangle > &aVectTriangle, unsigned int idList)
void setCameraPosition(double ax, double ay, double az)
Structure representing an RGB triple with alpha component.
void sortQuadFromCamera()
ImageDirection
the 3 possible axes for the image direction
RealPoint point1
coordinates
virtual void initFromDOMElement(const QDomElement &element)
Overload of the QGLViewer method which restores the viewer state from a QDomDocument element...
GLfloat myMaterialSpecularCoeffs[4]
TextureImage(const TextureImage &img)
Copy constructor (needed due to myTabImage)
void green(const unsigned char aGreenValue)
Viewer3D< Space, KSpace > & operator<<(const DGtal::Color &aColor)
unsigned int myImageHeight
the width of the image
VectorCubes::iterator ItCube
TextureMode
the modes of representation of an image
Viewer3D(const KSpace &KSEmb)
unsigned int myDomainHeight
the height of the image domain
virtual void mouseReleaseEvent(QMouseEvent *e)
void red(const unsigned char aRedValue)
Aim: Defines the concept describing a read-only image, which is a refinement of CPointFunctor.
void sortSurfelFromCamera()
virtual QDomElement domElement(const QString &name, QDomDocument &document) const
Overload of the QGLViewer method which returns an XML QDomElement representing the QGLViewer state...
TextureMode myMode
index of the image domain if exist
void setGLScale(float sx, float sy, float sz)
bool myDrawDomain
for each pixel of the image, color or height ?
double myLigthRotationStep
bool myIsDoubleFaceRendering
true if is double face rendering
const GLfloat myDefaultRenderSpec
GLfloat myLightPositionRefCameraDefault[3]
unsigned char mySelectionColorShift
void glCreateListLines(const VectorLine &aVectLine, unsigned int idList)
Aim: This semi abstract class defines the stream mechanism to display 3d primitive (like BallVector...
std::vector< typename Viewer3D< Space, KSpace >::QuadD3D > VectorQuad
void translateAn2DDomain(unsigned int domainIndex, double xTranslation, double yTranslation, double zTranslation)
float myMeshDefaultLineWidth
double camera_direction[3]
camera direction
virtual void drawWithNames()
drawWithNames
void glUpdateTextureImages(const VectorTextureImage &aVectImage)
GLuint myTriangleSetListId
lists of the list to draw
void blue(const unsigned char aBlueValue)