44 return dynamic_cast<NonTVertex *
>(_pViewVertex);
49 return dynamic_cast<TVertex *
>(_pViewVertex);
60 return _Shape->material();
66 return _Shape->
getId();
79 return (_FEdges[0])->qi();
87 return (_FEdges[0])->occluders_begin();
95 return (_FEdges[0])->occluders_end();
103 return (_FEdges[0])->occluders_empty();
111 return (_FEdges[0])->occluders_size();
119 return (_FEdges[0])->occludee();
127 return (_FEdges[0])->occluded_shape();
135 return (_FEdges[0])->occludee_empty();
143 return (_FEdges[0])->z_discontinuity();
156 FEdge *result =
nullptr;
161 vector<FEdge *>::const_iterator fe = _FEdges.begin(), feend = _FEdges.end();
162 for (; fe != feend; ++fe) {
163 if ((((*fe)->vertexA() ==
this) && ((*fe)->vertexB() == iVertexB)) ||
164 (((*fe)->vertexB() ==
this) && ((*fe)->vertexA() == iVertexB)))
175 if (
this == brother) {
179 for (fe =
fedges.begin(), feend =
fedges.end(); fe != feend; ++fe) {
180 if ((((*fe)->vertexA() == brother) && ((*fe)->vertexB() == iVertexB)) ||
181 (((*fe)->vertexB() == brother) && ((*fe)->vertexA() == iVertexB)))
194 if (iVertexB == brother) {
197 for (fe = _FEdges.begin(), feend = _FEdges.end(); fe != feend; ++fe) {
198 if ((((*fe)->vertexA() ==
this) && ((*fe)->vertexB() == brother)) ||
199 (((*fe)->vertexB() ==
this) && ((*fe)->vertexA() == brother)))
224float FEdge::viewedge_length()
const
233 if (aShape ==
nullptr) {
292 Vec3r bbox_size_vec(box.getMax() - box.getMin());
293 real bboxsize = bbox_size_vec.
norm();
302 z_discontinuity_functor<SVertex> _functor;
303 Evaluate<SVertex, z_discontinuity_functor<SVertex>>(&_functor, iCombination,
result);
308 real res = disc_vec.
norm() / bboxsize;
315float FEdge::local_average_depth(
int iCombination)
const
318 local_average_depth_functor<SVertex> functor;
319 Evaluate(&functor, iCombination, result);
324float FEdge::local_depth_variance(
int iCombination)
const
328 local_depth_variance_functor<SVertex> functor;
330 Evaluate(&functor, iCombination, result);
335real FEdge::local_average_density(
float sigma,
int iCombination)
const
339 density_functor<SVertex> functor(sigma);
341 Evaluate(&functor, iCombination, result);
346Vec3r FEdge::normal(
int &oException )
356 return (Na + Nb) / 2.0;
359Vec3r FEdge::curvature2d_as_vector(
int iCombination)
const
362 curvature2d_as_vector_functor<SVertex> _functor;
363 Evaluate<Vec3r, curvature2d_as_vector_functor<SVertex>>(&_functor, iCombination,
result);
367real FEdge::curvature2d_as_angle(
int iCombination)
const
370 curvature2d_as_angle_functor<SVertex> _functor;
371 Evaluate<real, curvature2d_as_angle_functor<SVertex>>(&_functor, iCombination,
result);
Classes to define a silhouette structure.
Classes to define a View Map (ViewVertex, ViewEdge, etc.)
static int raiseException(exception_type exception=UNDEFINED)
const FrsMaterial & aFrsMaterial() const
const FrsMaterial & bFrsMaterial() const
const FrsMaterial & frs_material() const
bool occluders_empty() const
int occluders_size() const
occluder_container::const_iterator occluders_end() const
occluder_container::const_iterator occluders_begin() const
const SShape * occluded_shape() const
int viewedge_nature() const
Vec3r _occludeeIntersection
float shape_importance() const
Nature::EdgeNature getNature() const
real z_discontinuity() const
bool occludee_empty() const
const FrsMaterial & frs_material(uint i) const
ViewVertex * viewvertex()
const SShape * occluded_shape() const
virtual FEdge * getFEdge(Interface0D &)
virtual ViewVertex * castToViewVertex()
real z_discontinuity() const
occluder_container::const_iterator occluders_begin() const
bool occluders_empty() const
const Vec3r & point3d() const
virtual NonTVertex * castToNonTVertex()
virtual SVertex * castToSVertex()
occluder_container::const_iterator occluders_end() const
virtual TVertex * castToTVertex()
virtual Nature::VertexNature getNature() const
int occluders_size() const
const Polygon3r & occludee() const
const vector< FEdge * > & fedges()
bool occludee_empty() const
float shape_importance() const
virtual Nature::EdgeNature getNature() const
occluder_container::const_iterator occluders_begin() const
const bool occludee_empty() const
bool occluders_empty() const
int occluders_size() const
occluder_container::const_iterator occluders_end() const
BBox< Vec3r > getScene3dBBox() const
static ViewMap * getInstance()
virtual Nature::VertexNature getNature() const
VecMat::Vec3< real > Vec3r
static const EdgeNature BORDER
static const VertexNature S_VERTEX
static const VertexNature T_VERTEX
static const EdgeNature SILHOUETTE