DGtal  1.0.beta
Public Types | Public Member Functions | Data Fields | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
DGtal::Board3DTo2D< Space, KSpace > Class Template Reference

#include <DGtal/base/Common.h>

Inheritance diagram for DGtal::Board3DTo2D< Space, KSpace >:
[legend]
Collaboration diagram for DGtal::Board3DTo2D< Space, KSpace >:
[legend]

Public Types

enum  CairoType {
  CairoPDF, CairoPNG, CairoPS, CairoEPS,
  CairoSVG
}
 
- Public Types inherited from DGtal::Display3D< Space, KSpace >
enum  StreamKey { addNewList, updateDisplay, shiftSurfelVisu }
 
typedef Display3D< Space, KSpaceSelf
 
typedef Space::RealPoint RealPoint
 
typedef Space::RealVector RealVector
 
typedef CanonicEmbedder< Space > Embedder
 
typedef CanonicCellEmbedder< KSpaceCellEmbedder
 
typedef CanonicSCellEmbedder< KSpaceSCellEmbedder
 
typedef int(* SelectCallbackFct) (void *viewer, DGtal::int32_t name, void *data)
 
typedef std::map< DGtal::int32_t, std::vector< QuadD3D > > QuadsMap
 
typedef std::map< DGtal::int32_t, std::vector< CubeD3D > > CubesMap
 
typedef std::map< std::string, std::string > ModeMapping
 
typedef std::map< std::string, CountedPtr< DrawableWithDisplay3D > > StyleMapping
 

Public Member Functions

 Board3DTo2D ()
 
 Board3DTo2D (KSpace KSEmb)
 
 ~Board3DTo2D ()
 
std::string className () const
 
void setCameraPosition (double x, double y, double z)
 
void setCameraDirection (double x, double y, double z)
 
void setCameraUpVector (double x, double y, double z)
 
void setNearFar (double _near, double _far)
 
void saveCairo (const char *filename, CairoType type, int bWidth, int bHeight)
 
Board3DTo2Doperator<< (const DGtal::Color &aColor)
 
template<typename TDrawableWithDisplay3D >
Board3DTo2Doperator<< (const TDrawableWithDisplay3D &object)
 
void selfDisplay (std::ostream &out) const
 
bool isValid () const
 
- Public Member Functions inherited from DGtal::Display3D< Space, KSpace >
 BOOST_CONCEPT_ASSERT ((concepts::CSpace< Space >))
 
virtual ~Display3D ()
 
 Display3D (const KSpace &KSEmb)
 
 Display3D ()
 
 Display3D (const Display3D &)=delete
 
 Display3D (Display3D &&)=delete
 
Display3Doperator= (const Display3D &)=delete
 
Display3Doperator= (Display3D &&)=delete
 
const Embedderembedder () const
 
const CellEmbeddercellEmbedder () const
 
const SCellEmbeddersCellEmbedder () const
 
const KSpacespace () const
 
virtual void setFillColor (DGtal::Color aColor)
 
virtual void setFillTransparency (unsigned char alpha)
 
virtual void setLineColor (DGtal::Color aColor)
 
virtual DGtal::Color getFillColor ()
 
virtual DGtal::Color getLineColor ()
 
virtual void setKSpace (const KSpace &aKSpace)
 
void setName3d (DGtal::int32_t name=-1)
 
DGtal::int32_t name3d () const
 
void setSelectCallback3D (SelectCallbackFct fct, void *data, DGtal::int32_t min_name, DGtal::int32_t max_name)
 
SelectCallbackFct getSelectCallback3D (DGtal::int32_t aName, void *&data) const
 
void addClippingPlane (double a, double b, double c, double d, bool drawPlane)
 
std::string getMode (const std::string &objectName) const
 
void createNewLineList (std::string s="")
 
void createNewBallList (std::string s="")
 
DGtal::int32_t createNewCubeList ()
 
bool deleteCubeList (const DGtal::int32_t name)
 
DGtal::int32_t createNewQuadList ()
 
bool deleteQuadList (const DGtal::int32_t name)
 
void createNewTriangleList (std::string s="")
 
void createNewPolygonList (std::string s="")
 
void addQuad (const RealPoint &p1, const RealPoint &p2, const RealPoint &p3, const RealPoint &p4)
 
void addQuadWithNormal (const RealPoint &p1, const RealPoint &p2, const RealPoint &p3, const RealPoint &p4, const RealPoint &n, const bool enableReorientation, const bool enableDoubleFace=false)
 
void addQuadFromSurfelCenter (const RealPoint &baseQuadCenter, bool xSurfel, bool ySurfel, bool zSurfel)
 
void addQuadFromSurfelCenterWithNormal (const RealPoint &baseQuadCenter, bool xSurfel, bool ySurfel, bool zSurfel, const RealVector &aNormal, const bool enableReorientation, const bool sign, const bool enableDoubleFace=false)
 
void addTriangle (const RealPoint &p1, const RealPoint &p2, const RealPoint &p3)
 
void addPolygon (const std::vector< RealPoint > &vertices)
 
void addLine (const RealPoint &p1, const RealPoint &p2, const double width=0.03)
 
void addCube (const RealPoint &center, double width=1.0)
 
void addBall (const RealPoint &center, const double radius=0.5, const unsigned int resolution=30)
 
void addPrism (const RealPoint &baseQuadCenter, bool xSurfel, bool ySurfel, bool zSurfel, double sizeShiftFactor, double sizeFactor=1.0, bool isSigned=false, bool aSign=true)
 
void addBasicSurfel (const RealPoint &baseQuadCenter, bool xSurfel, bool ySurfel, bool zSurfel)
 
void addCone (const RealPoint &p1, const RealPoint &p2, double width=0.08)
 
void addCylinder (const RealPoint &p1, const RealPoint &p2, const double width=0.02)
 
void updateBoundingBox (const RealPoint &point)
 
void exportToMesh (Mesh< RealPoint > &aMesh) const
 
template<typename TDrawableWithDisplay3D >
Display3Doperator<< (const TDrawableWithDisplay3D &object)
 
void selfDisplay (std::ostream &out) const
 
bool isValid () const
 
void clear ()
 
RealPoint embed (const typename Space::Point &dp) const
 
RealPoint embedKS (const typename KSpace::SCell &cell) const
 
RealPoint embedKS (const DGtal::TransformedPrism &aTrans) const
 
RealPoint embedK (const typename KSpace::Cell &cell) const
 

Data Fields

DGtal::Color myDefaultColor
 
- Data Fields inherited from DGtal::Display3D< Space, KSpace >
ModeMapping myModes
 
StyleMapping myStyles
 
bool myBoundingPtEmptyTag
 
double myBoundingPtUp [3]
 
double myBoundingPtLow [3]
 

Protected Member Functions

virtual void init ()
 

Private Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CSpace< Space >))
 
void precompute_projection_matrix ()
 
void project (double x3d, double y3d, double z3d, double &x2d, double &y2d)
 

Static Private Member Functions

static void TransposeMt (double tmat[16], double mat[16])
 
static void MulMt (double v[4], double mat[16], double b[4])
 
static void LookAtMt (double mat[16], double eyex, double eyey, double eyez, double dirx, double diry, double dirz, double upx, double upy, double upz)
 

Private Attributes

int Viewport [4]
 
double matrix [16]
 
double camera_position [3]
 
double camera_direction [3]
 
double camera_upVector [3]
 
double ZNear
 
double ZFar
 

Additional Inherited Members

- Static Protected Member Functions inherited from DGtal::Display3D< Space, KSpace >
static void cross (double dst[3], double srcA[3], double srcB[3])
 
static void normalize (double vec[3])
 
- Protected Attributes inherited from DGtal::Display3D< Space, KSpace >
KSpace myKSpace
 
EmbeddermyEmbedder
 
CellEmbeddermyCellEmbedder
 
SCellEmbeddermySCellEmbedder
 
DGtal::Color myCurrentFillColor
 
DGtal::Color myCurrentLineColor
 
double myCurrentfShiftVisuPrisms
 
std::vector< std::vector< LineD3D > > myLineSetList
 
std::vector< std::vector< BallD3D > > myBallSetList
 
std::vector< ClippingPlaneD3DmyClippingPlaneList
 
std::vector< QuadD3DmyPrismList
 
QuadsMap myQuadsMap
 
std::vector< std::vector< TriangleD3D > > myTriangleSetList
 
std::vector< std::vector< PolygonD3D > > myPolygonSetList
 
CubesMap myCubesMap
 
std::vector< std::string > myCubeSetNameList
 
std::vector< std::string > myLineSetNameList
 
std::vector< std::string > myBallSetNameList
 
std::vector< std::string > myClippingPlaneNameList
 
std::vector< std::string > myPrismNameList
 
std::vector< std::string > myQuadSetNameList
 
std::vector< std::string > myTriangleSetNameList
 
std::vector< std::string > myPolygonSetNameList
 
DGtal::int32_t myName3d
 
std::set< SelectCallbackFctStoremySelectCallBackFcts
 
bool myBoundingPtChangedTag = false
 

Detailed Description

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
class DGtal::Board3DTo2D< Space, KSpace >

Class for PDF, PNG, PS, EPS, SVG export drawings with Cairo with 3D->2D projection.

Description of class 'Board3DTo2D'

Examples:
geometry/curves/exampleArithDSS3d.cpp, io/boards/dgtalBoard3DTo2D-1-points.cpp, io/boards/dgtalBoard3DTo2D-2-sets.cpp, io/boards/dgtalBoard3DTo2D-2bis-sets.cpp, io/boards/dgtalBoard3DTo2D-3-objects.cpp, io/boards/dgtalBoard3DTo2D-4-modes.cpp, io/boards/dgtalBoard3DTo2D-5-custom.cpp, io/boards/dgtalBoard3DTo2D-6.cpp, and io/boards/dgtalBoard3DTo2D-KSCell.cpp.

Definition at line 145 of file Common.h.

Member Enumeration Documentation

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
enum DGtal::Board3DTo2D::CairoType

Cairo type for save files.

Enumerator
CairoPDF 
CairoPNG 
CairoPS 
CairoEPS 
CairoSVG 

Definition at line 80 of file Board3DTo2D.h.

Constructor & Destructor Documentation

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
DGtal::Board3DTo2D< Space, KSpace >::Board3DTo2D ( )

Constructor.

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
DGtal::Board3DTo2D< Space, KSpace >::Board3DTo2D ( KSpace  KSEmb)
inline

Constructor with a khalimsky space

Parameters
KSEmbthe Khalimsky space

Definition at line 91 of file Board3DTo2D.h.

92  : Display3D<Space,KSpace>( KSEmb )
93  {
94  init();
95  }
virtual void init()
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
DGtal::Board3DTo2D< Space, KSpace >::~Board3DTo2D ( )
inline

Definition at line 98 of file Board3DTo2D.h.

98 {}

Member Function Documentation

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
DGtal::Board3DTo2D< Space, KSpace >::BOOST_CONCEPT_ASSERT ( (concepts::CSpace< Space >)  )
private
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
std::string DGtal::Board3DTo2D< Space, KSpace >::className ( ) const
inline
Returns
the style name used for drawing this object.

Definition at line 104 of file Board3DTo2D.h.

105  {
106  return "Board3DTo2D";
107  }
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
virtual void DGtal::Board3DTo2D< Space, KSpace >::init ( )
protectedvirtual

init function (should be in Constructor).

Referenced by DGtal::Board3DTo2D< S, KS >::Board3DTo2D().

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
bool DGtal::Board3DTo2D< Space, KSpace >::isValid ( ) const

Checks the validity/consistency of the object.

Returns
'true' if the object is valid, 'false' otherwise.
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
static void DGtal::Board3DTo2D< Space, KSpace >::LookAtMt ( double  mat[16],
double  eyex,
double  eyey,
double  eyez,
double  dirx,
double  diry,
double  dirz,
double  upx,
double  upy,
double  upz 
)
staticprivate

Compute 4x4 LookAt matrix.

Parameters
matdestination matrix.
eyexx position of eye.
eyeyy position of eye.
eyezz position of eye.
dirxx direction of eye.
diryy direction of eye.
dirzz director of eye.
upxx coordinate of up-vector.
upyy coordinate of up-vector.
upzz coordinate of up-vector.
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
static void DGtal::Board3DTo2D< Space, KSpace >::MulMt ( double  v[4],
double  mat[16],
double  b[4] 
)
staticprivate

Multiply a 3d vector by a 4x4 matrix.

Parameters
vdestination vector.
matsource matrix.
bsource vector.
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
Board3DTo2D& DGtal::Board3DTo2D< Space, KSpace >::operator<< ( const DGtal::Color aColor)

Set the default color for future drawing.

Parameters
aColora DGtal::Color (allow to set a trasnparency value).
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
template<typename TDrawableWithDisplay3D >
Board3DTo2D& DGtal::Board3DTo2D< Space, KSpace >::operator<< ( const TDrawableWithDisplay3D &  object)

Draws the drawable [object] in this board. It should satisfy the concept CDrawableWithDisplay3D, which requires for instance a method setStyle( Board3DTo2D & ).

Parameters
objectany drawable object.
Returns
a reference on 'this'.
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::precompute_projection_matrix ( )
private

Precompute 4x4 projection matrix for 3D->2D projection.

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::project ( double  x3d,
double  y3d,
double  z3d,
double &  x2d,
double &  y2d 
)
private

Project a 3d point (3D->2D).

Parameters
x3dx position of the 3d point.
y3dy position of the 3d point.
z3dz position of the 3d point.
x2dx destination projection position of the 2d point.
y2dy destination projection position of the 2d point.
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::saveCairo ( const char *  filename,
CairoType  type,
int  bWidth,
int  bHeight 
)

Save a Cairo image.

Parameters
filenamefilename of the image to save.
typetype of the image to save (CairoPDF, CairoPNG, CairoPS, CairoEPS, CairoSVG).
bWidthwidth of the image to save.
bHeightheight of the image to save.
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::selfDisplay ( std::ostream &  out) const

Writes/Displays the object on an output stream.

Parameters
outthe output stream where the object is written.
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::setCameraDirection ( double  x,
double  y,
double  z 
)
inline

Set camera direction.

Parameters
xx direction.
yy direction.
zz direction.

Definition at line 124 of file Board3DTo2D.h.

125  { camera_direction[0] = x; camera_direction[1] = y; camera_direction[2] = z; }
double camera_direction[3]
camera direction
Definition: Board3DTo2D.h:264
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::setCameraPosition ( double  x,
double  y,
double  z 
)
inline

Set camera position.

Parameters
xx position.
yy position.
zz position.

Definition at line 115 of file Board3DTo2D.h.

116  { camera_position[0] = x; camera_position[1] = y; camera_position[2] = z; }
double camera_position[3]
camera position
Definition: Board3DTo2D.h:263
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::setCameraUpVector ( double  x,
double  y,
double  z 
)
inline

Set camera up-vector.

Parameters
xx coordinate of up-vector.
yy coordinate of up-vector.
zz coordinate of up-vector.

Definition at line 133 of file Board3DTo2D.h.

134  { camera_upVector[0] = x; camera_upVector[1] = y; camera_upVector[2] = z; }
double camera_upVector[3]
camera up-vector
Definition: Board3DTo2D.h:265
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
void DGtal::Board3DTo2D< Space, KSpace >::setNearFar ( double  _near,
double  _far 
)
inline

Set near and far distance, too near or too far end up not visible.

Parameters
_nearnear distance.
_farfar distance.

Definition at line 141 of file Board3DTo2D.h.

141 { ZNear = _near; ZFar = _far; }
double ZFar
zfar distance
Definition: Board3DTo2D.h:268
double ZNear
znear distance
Definition: Board3DTo2D.h:267
template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
static void DGtal::Board3DTo2D< Space, KSpace >::TransposeMt ( double  tmat[16],
double  mat[16] 
)
staticprivate

Transpose a 4x4 matrix.

Parameters
tmatdestination matrix.
matsource matrix.

Field Documentation

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
double DGtal::Board3DTo2D< Space, KSpace >::camera_direction[3]
private

camera direction

Definition at line 264 of file Board3DTo2D.h.

Referenced by DGtal::Board3DTo2D< S, KS >::setCameraDirection().

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
double DGtal::Board3DTo2D< Space, KSpace >::camera_position[3]
private

camera position

Definition at line 263 of file Board3DTo2D.h.

Referenced by DGtal::Board3DTo2D< S, KS >::setCameraPosition().

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
double DGtal::Board3DTo2D< Space, KSpace >::camera_upVector[3]
private

camera up-vector

Definition at line 265 of file Board3DTo2D.h.

Referenced by DGtal::Board3DTo2D< S, KS >::setCameraUpVector().

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
double DGtal::Board3DTo2D< Space, KSpace >::matrix[16]
private

projection matrix

Definition at line 261 of file Board3DTo2D.h.

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
DGtal::Color DGtal::Board3DTo2D< Space, KSpace >::myDefaultColor

default color

The associated map type for storing possible modes used for displaying for digital objects. The associated map type for storing the default styles of digital objects.

Definition at line 167 of file Board3DTo2D.h.

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
int DGtal::Board3DTo2D< Space, KSpace >::Viewport[4]
private

2D viewport

Definition at line 260 of file Board3DTo2D.h.

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
double DGtal::Board3DTo2D< Space, KSpace >::ZFar
private

zfar distance

Definition at line 268 of file Board3DTo2D.h.

Referenced by DGtal::Board3DTo2D< S, KS >::setNearFar().

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
double DGtal::Board3DTo2D< Space, KSpace >::ZNear
private

znear distance

Definition at line 267 of file Board3DTo2D.h.

Referenced by DGtal::Board3DTo2D< S, KS >::setNearFar().


The documentation for this class was generated from the following files: