Fixed the usage of vector traits such that the traits are used and not the vector types value_type. (Thanks to Mario Deuss for the patch)
git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@733 fdac6126-5c0c-442c-9429-916003d36597
This commit is contained in:
@@ -118,12 +118,12 @@ calc_face_normal(FaceHandle _fh) const
|
|||||||
n += vector_cast<Normal>(calc_face_normal(p0i, p0, p1));
|
n += vector_cast<Normal>(calc_face_normal(p0i, p0, p1));
|
||||||
n += vector_cast<Normal>(calc_face_normal(p1i, p0i, p1));
|
n += vector_cast<Normal>(calc_face_normal(p1i, p0i, p1));
|
||||||
|
|
||||||
typename Normal::value_type norm = n.length();
|
typename vector_traits<Normal>::value_type norm = n.length();
|
||||||
|
|
||||||
// The expression ((n *= (1.0/norm)),n) is used because the OpenSG
|
// The expression ((n *= (1.0/norm)),n) is used because the OpenSG
|
||||||
// vector class does not return self after component-wise
|
// vector class does not return self after component-wise
|
||||||
// self-multiplication with a scalar!!!
|
// self-multiplication with a scalar!!!
|
||||||
return (norm != typename Normal::value_type(0)) ? ((n *= (typename Normal::value_type(1)/norm)),n) : Normal(0,0,0);
|
return (norm != typename vector_traits<Normal>::value_type(0)) ? ((n *= (typename vector_traits<Normal>::value_type(1)/norm)),n) : Normal(0,0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -144,18 +144,18 @@ calc_face_normal(const Point& _p0,
|
|||||||
Normal p1p2(vector_cast<Normal>(_p2)); p1p2 -= vector_cast<Normal>(_p1);
|
Normal p1p2(vector_cast<Normal>(_p2)); p1p2 -= vector_cast<Normal>(_p1);
|
||||||
|
|
||||||
Normal n = cross(p1p2, p1p0);
|
Normal n = cross(p1p2, p1p0);
|
||||||
typename Normal::value_type norm = n.length();
|
typename vector_traits<Normal>::value_type norm = n.length();
|
||||||
|
|
||||||
// The expression ((n *= (1.0/norm)),n) is used because the OpenSG
|
// The expression ((n *= (1.0/norm)),n) is used because the OpenSG
|
||||||
// vector class does not return self after component-wise
|
// vector class does not return self after component-wise
|
||||||
// self-multiplication with a scalar!!!
|
// self-multiplication with a scalar!!!
|
||||||
return (norm != typename Normal::value_type(0)) ? ((n *= (typename Normal::value_type(1)/norm)),n) : Normal(0,0,0);
|
return (norm != typename vector_traits<Normal>::value_type(0)) ? ((n *= (typename vector_traits<Normal>::value_type(1)/norm)),n) : Normal(0,0,0);
|
||||||
#else
|
#else
|
||||||
Point p1p0 = _p0; p1p0 -= _p1;
|
Point p1p0 = _p0; p1p0 -= _p1;
|
||||||
Point p1p2 = _p2; p1p2 -= _p1;
|
Point p1p2 = _p2; p1p2 -= _p1;
|
||||||
|
|
||||||
Normal n = vector_cast<Normal>(cross(p1p2, p1p0));
|
Normal n = vector_cast<Normal>(cross(p1p2, p1p0));
|
||||||
typename Normal::value_type norm = n.length();
|
typename vector_traits<Normal>::value_type norm = n.length();
|
||||||
|
|
||||||
return (norm != 0.0) ? n *= (1.0/norm) : Normal(0,0,0);
|
return (norm != 0.0) ? n *= (1.0/norm) : Normal(0,0,0);
|
||||||
#endif
|
#endif
|
||||||
@@ -377,8 +377,8 @@ calc_vertex_normal_loop(VertexHandle _vh, Normal& _n) const
|
|||||||
for (ConstVertexOHalfedgeIter cvoh_it = cvoh_iter(_vh); cvoh_it; ++cvoh_it, ++i)
|
for (ConstVertexOHalfedgeIter cvoh_it = cvoh_iter(_vh); cvoh_it; ++cvoh_it, ++i)
|
||||||
{
|
{
|
||||||
VertexHandle r1_v(to_vertex_handle(cvoh_it));
|
VertexHandle r1_v(to_vertex_handle(cvoh_it));
|
||||||
t_v += (typename Point::value_type)(loop_scheme_mask__.tang0_weight(vh_val, i))*this->point(r1_v);
|
t_v += (typename vector_traits<Point>::value_type)(loop_scheme_mask__.tang0_weight(vh_val, i))*this->point(r1_v);
|
||||||
t_w += (typename Point::value_type)(loop_scheme_mask__.tang1_weight(vh_val, i))*this->point(r1_v);
|
t_w += (typename vector_traits<Point>::value_type)(loop_scheme_mask__.tang1_weight(vh_val, i))*this->point(r1_v);
|
||||||
}
|
}
|
||||||
_n = cross(t_w, t_v);//hack: should be cross(t_v, t_w), but then the normals are reversed?
|
_n = cross(t_w, t_v);//hack: should be cross(t_v, t_w), but then the normals are reversed?
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user