DGtal  1.3.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

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

#include <DGtal/base/Common.h>

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

Public Types

enum  CairoType {
  CairoPDF, CairoPNG, CairoPS, CairoEPS,
  CairoSVG
}
 

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
 

Data Fields

DGtal::Color myDefaultColor
 default color More...
 

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]
 2D viewport More...
 
double matrix [16]
 projection matrix More...
 
double camera_position [3]
 camera position More...
 
double camera_direction [3]
 camera direction More...
 
double camera_upVector [3]
 camera up-vector More...
 
double ZNear
 znear distance More...
 
double ZFar
 zfar distance More...
 

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 162 of file Common.h.

Member Enumeration Documentation

◆ CairoType

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 82 of file Board3DTo2D.h.

Constructor & Destructor Documentation

◆ Board3DTo2D() [1/2]

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

Constructor.

◆ Board3DTo2D() [2/2]

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 93 of file Board3DTo2D.h.

94  : Display3D<Space,KSpace>( KSEmb )
95  {
96  init();
97  }

◆ ~Board3DTo2D()

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

Definition at line 100 of file Board3DTo2D.h.

100 {}

Member Function Documentation

◆ BOOST_CONCEPT_ASSERT()

template<typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
DGtal::Board3DTo2D< Space, KSpace >::BOOST_CONCEPT_ASSERT ( (concepts::CSpace< Space >)  )
private

◆ className()

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 106 of file Board3DTo2D.h.

107  {
108  return "Board3DTo2D";
109  }

◆ init()

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().

◆ isValid()

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.

◆ LookAtMt()

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.

◆ MulMt()

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.

◆ operator<<() [1/2]

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).

◆ operator<<() [2/2]

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'.

◆ precompute_projection_matrix()

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.

◆ project()

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.

◆ saveCairo()

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.

Referenced by main().

◆ selfDisplay()

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.

◆ setCameraDirection()

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 126 of file Board3DTo2D.h.

127  { camera_direction[0] = x; camera_direction[1] = y; camera_direction[2] = z; }

◆ setCameraPosition()

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 117 of file Board3DTo2D.h.

118  { camera_position[0] = x; camera_position[1] = y; camera_position[2] = z; }

◆ setCameraUpVector()

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 135 of file Board3DTo2D.h.

136  { camera_upVector[0] = x; camera_upVector[1] = y; camera_upVector[2] = z; }

◆ setNearFar()

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 143 of file Board3DTo2D.h.

143 { ZNear = _near; ZFar = _far; }

◆ TransposeMt()

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

◆ camera_direction

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

camera direction

Definition at line 266 of file Board3DTo2D.h.

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

◆ camera_position

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

camera position

Definition at line 265 of file Board3DTo2D.h.

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

◆ camera_upVector

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

camera up-vector

Definition at line 267 of file Board3DTo2D.h.

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

◆ matrix

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

projection matrix

Definition at line 263 of file Board3DTo2D.h.

◆ myDefaultColor

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.

Definition at line 169 of file Board3DTo2D.h.

◆ Viewport

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

2D viewport

Definition at line 262 of file Board3DTo2D.h.

◆ ZFar

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

zfar distance

Definition at line 270 of file Board3DTo2D.h.

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

◆ ZNear

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

znear distance

Definition at line 269 of file Board3DTo2D.h.

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


The documentation for this class was generated from the following files:
DGtal::Board3DTo2D::camera_upVector
double camera_upVector[3]
camera up-vector
Definition: Board3DTo2D.h:267
DGtal::Board3DTo2D::ZNear
double ZNear
znear distance
Definition: Board3DTo2D.h:269
DGtal::Board3DTo2D::CairoPS
@ CairoPS
Definition: Board3DTo2D.h:82
DGtal::Board3DTo2D::camera_position
double camera_position[3]
camera position
Definition: Board3DTo2D.h:265
DGtal::Board3DTo2D::CairoEPS
@ CairoEPS
Definition: Board3DTo2D.h:82
DGtal::Board3DTo2D::camera_direction
double camera_direction[3]
camera direction
Definition: Board3DTo2D.h:266
DGtal::Board3DTo2D::CairoPNG
@ CairoPNG
Definition: Board3DTo2D.h:82
DGtal::Board3DTo2D::init
virtual void init()
DGtal::Board3DTo2D::ZFar
double ZFar
zfar distance
Definition: Board3DTo2D.h:270
DGtal::Board3DTo2D::CairoSVG
@ CairoSVG
Definition: Board3DTo2D.h:82
DGtal::Board3DTo2D::CairoPDF
@ CairoPDF
Definition: Board3DTo2D.h:82