Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenMesh
OpenMesh
Commits
e30da7ea
Commit
e30da7ea
authored
Aug 07, 2013
by
Jan Möbius
Browse files
And another one
git-svn-id:
http://www.openmesh.org/svnrepo/OpenMesh/trunk@909
fdac6126-5c0c-442c-9429-916003d36597
parent
daea181b
Changes
17
Hide whitespace changes
Inline
Side-by-side
Doc/Tutorial/07-traits/smooth.cc
View file @
e30da7ea
...
...
@@ -100,7 +100,7 @@ int main(int argc, char **argv)
{
cog
[
0
]
=
cog
[
1
]
=
cog
[
2
]
=
valence
=
0.0
;
for
(
vv_it
=
mesh
.
vv_iter
(
v_it
.
handle
()
);
vv_it
;
++
vv_it
)
for
(
vv_it
=
mesh
.
vv_iter
(
*
v_it
);
vv_it
;
++
vv_it
)
{
cog
+=
mesh
.
point
(
*
vv_it
);
++
valence
;
...
...
@@ -110,8 +110,8 @@ int main(int argc, char **argv)
}
for
(
v_it
=
mesh
.
vertices_begin
();
v_it
!=
v_end
;
++
v_it
)
if
(
!
mesh
.
is_boundary
(
v_it
.
handle
()
))
mesh
.
set_point
(
v_it
.
handle
()
,
mesh
.
data
(
v_it
).
cog
());
if
(
!
mesh
.
is_boundary
(
*
v_it
))
mesh
.
set_point
(
*
v_it
,
mesh
.
data
(
*
v_it
).
cog
());
}
...
...
Doc/mesh.docu
View file @
e30da7ea
...
...
@@ -786,7 +786,7 @@ This example shows how to iterate over all faces of a mesh:
MyMesh mesh;
for(MyMesh::FaceIter f_it = mesh.faces_begin(); f_it != mesh.faces_end(); ++f_it) {
std::cout << "The face's valence is " << mesh.valence( f_it
.handle()
) << std::endl;
std::cout << "The face's valence is " << mesh.valence(
*
f_it ) << std::endl;
}
\endcode
...
...
@@ -890,7 +890,7 @@ MyMesh mesh;
MyMesh::FaceHalfedgeIter fh_it = mesh.fh_iter(faceHandle);
for(; fh_it; ++fh_it) {
std::cout << "Halfedge has handle " << fh_it
.handle()
<< std::endl;
std::cout << "Halfedge has handle " <<
*
fh_it << std::endl;
}
\endcode
...
...
Doc/operations.docu
View file @
e30da7ea
...
...
@@ -50,9 +50,9 @@ mesh.add_face(face_vhandles);
// Find this edge and then flip it
for(TriMesh::EdgeIter it = mesh.edges_begin(); it != mesh.edges_end(); ++it) {
if(!mesh.is_boundary(it
.handle()
)) {
if(!mesh.is_boundary(
*
it)) {
// Flip edge
mesh.flip(it
.handle()
);
mesh.flip(
*
it);
}
}
...
...
@@ -116,11 +116,11 @@ mesh.add_face(face_vhandles);
// and vhandle[3]
for(PolyMesh::HalfedgeIter it = mesh.halfedges_begin(); it != mesh.halfedges_end(); ++it) {
if(to_vertex_handle(it
.handle()
) == vhandle[3] &&
from_vertex_handle(it
.handle()
) == vhandle[2]) {
if(to_vertex_handle(
*
it) == vhandle[3] &&
from_vertex_handle(
*
it) == vhandle[2]) {
// Collapse edge
mesh.collapse(it
.handle()
);
mesh.collapse(
*
it);
break;
}
}
...
...
src/OpenMesh/Apps/QtViewer/MeshViewerWidgetT.cc
View file @
e30da7ea
...
...
@@ -134,12 +134,12 @@ MeshViewerWidgetT<M>::open_mesh(const char* _filename, IO::Options _opt)
Vec3f
bbMin
,
bbMax
;
bbMin
=
bbMax
=
OpenMesh
::
vector_cast
<
Vec3f
>
(
mesh_
.
point
(
vIt
));
bbMin
=
bbMax
=
OpenMesh
::
vector_cast
<
Vec3f
>
(
mesh_
.
point
(
*
vIt
));
for
(
size_t
count
=
0
;
vIt
!=
vEnd
;
++
vIt
,
++
count
)
{
bbMin
.
minimize
(
OpenMesh
::
vector_cast
<
Vec3f
>
(
mesh_
.
point
(
vIt
)));
bbMax
.
maximize
(
OpenMesh
::
vector_cast
<
Vec3f
>
(
mesh_
.
point
(
vIt
)));
bbMin
.
minimize
(
OpenMesh
::
vector_cast
<
Vec3f
>
(
mesh_
.
point
(
*
vIt
)));
bbMax
.
maximize
(
OpenMesh
::
vector_cast
<
Vec3f
>
(
mesh_
.
point
(
*
vIt
)));
}
...
...
@@ -164,10 +164,10 @@ MeshViewerWidgetT<M>::open_mesh(const char* _filename, IO::Options _opt)
for
(;
f_it
!=
mesh_
.
faces_end
();
++
f_it
)
{
typename
Mesh
::
Point
v
(
0
,
0
,
0
);
for
(
fv_it
=
mesh_
.
fv_iter
(
f_it
);
fv_it
.
is_valid
();
++
fv_it
)
for
(
fv_it
=
mesh_
.
fv_iter
(
*
f_it
);
fv_it
.
is_valid
();
++
fv_it
)
v
+=
OpenMesh
::
vector_cast
<
typename
Mesh
::
Normal
>
(
mesh_
.
point
(
*
fv_it
));
v
*=
1.0
f
/
3.0
f
;
mesh_
.
property
(
fp_normal_base_
,
f_it
)
=
v
;
mesh_
.
property
(
fp_normal_base_
,
*
f_it
)
=
v
;
}
t
.
stop
();
std
::
clog
<<
"Computed base point for displaying face normals ["
...
...
@@ -337,7 +337,7 @@ MeshViewerWidgetT<M>::draw_openmesh(const std::string& _draw_mode)
glBegin
(
GL_TRIANGLES
);
for
(;
fIt
!=
fEnd
;
++
fIt
)
{
glNormal3fv
(
&
mesh_
.
normal
(
fIt
)[
0
]
);
glNormal3fv
(
&
mesh_
.
normal
(
*
fIt
)[
0
]
);
fvIt
=
mesh_
.
cfv_iter
(
*
fIt
);
glVertex3fv
(
&
mesh_
.
point
(
*
fvIt
)[
0
]
);
...
...
@@ -665,8 +665,8 @@ MeshViewerWidgetT<M>::draw_scene(const std::string& _draw_mode)
glColor3f
(
1.000
f
,
0.803
f
,
0.027
f
);
// orange
for
(
vit
=
mesh_
.
vertices_begin
();
vit
!=
mesh_
.
vertices_end
();
++
vit
)
{
glVertex
(
vit
);
glVertex
(
mesh_
.
point
(
vit
)
+
normal_scale_
*
mesh_
.
normal
(
vit
)
);
glVertex
(
*
vit
);
glVertex
(
mesh_
.
point
(
*
vit
)
+
normal_scale_
*
mesh_
.
normal
(
*
vit
)
);
}
glEnd
();
}
...
...
@@ -679,9 +679,9 @@ MeshViewerWidgetT<M>::draw_scene(const std::string& _draw_mode)
glColor3f
(
0.705
f
,
0.976
f
,
0.270
f
);
// greenish
for
(
fit
=
mesh_
.
faces_begin
();
fit
!=
mesh_
.
faces_end
();
++
fit
)
{
glVertex
(
mesh_
.
property
(
fp_normal_base_
,
fit
)
);
glVertex
(
mesh_
.
property
(
fp_normal_base_
,
fit
)
+
normal_scale_
*
mesh_
.
normal
(
fit
)
);
glVertex
(
mesh_
.
property
(
fp_normal_base_
,
*
fit
)
);
glVertex
(
mesh_
.
property
(
fp_normal_base_
,
*
fit
)
+
normal_scale_
*
mesh_
.
normal
(
*
fit
)
);
}
glEnd
();
}
...
...
src/OpenMesh/Apps/VDProgMesh/Synthesizer/VDPMSynthesizerViewerWidget.cc
View file @
e30da7ea
...
...
@@ -289,19 +289,19 @@ get_active_cuts(const VHierarchyNodeHandle _node_handle,
vl
=
VDPMMesh
::
InvalidVertexHandle
;
vr
=
VDPMMesh
::
InvalidVertexHandle
;
for
(
vv_it
=
mesh_
.
vv_iter
(
vhierarchy_
.
vertex_handle
(
_node_handle
));
vv_it
;
++
vv_it
)
vv_it
.
is_valid
()
;
++
vv_it
)
{
nnode_handle
=
mesh_
.
data
(
*
vv_it
).
vhierarchy_node_handle
();
nnode_index
=
vhierarchy_
.
node_index
(
nnode_handle
);
if
(
vl
==
VDPMMesh
::
InvalidVertexHandle
&&
vhierarchy_
.
is_ancestor
(
nnode_index
,
fund_lcut_index
)
==
true
)
vhierarchy_
.
is_ancestor
(
nnode_index
,
fund_lcut_index
)
==
true
)
vl
=
*
vv_it
;
if
(
vr
==
VDPMMesh
::
InvalidVertexHandle
&&
vhierarchy_
.
is_ancestor
(
nnode_index
,
fund_rcut_index
)
==
true
)
vhierarchy_
.
is_ancestor
(
nnode_index
,
fund_rcut_index
)
==
true
)
vr
=
*
vv_it
;
/*if (vl == VDPMMesh::InvalidVertexHandle && nnode_index.is_ancestor_index(fund_lcut_index) == true)
...
...
@@ -310,7 +310,7 @@ get_active_cuts(const VHierarchyNodeHandle _node_handle,
vr = *vv_it;*/
if
(
vl
!=
VDPMMesh
::
InvalidVertexHandle
&&
vr
!=
VDPMMesh
::
InvalidVertexHandle
)
vr
!=
VDPMMesh
::
InvalidVertexHandle
)
break
;
}
}
...
...
src/OpenMesh/Tools/Decimater/DecimaterT.cc
View file @
e30da7ea
...
...
@@ -167,7 +167,7 @@ size_t DecimaterT<Mesh>::decimate(size_t _n_collapses) {
heap_
->
reserve
(
mesh_
.
n_vertices
());
for
(
v_it
=
mesh_
.
vertices_begin
();
v_it
!=
v_end
;
++
v_it
)
{
heap_
->
reset_heap_position
(
v_it
.
handle
()
);
heap_
->
reset_heap_position
(
*
v_it
);
if
(
!
mesh_
.
status
(
*
v_it
).
deleted
())
heap_vertex
(
*
v_it
);
}
...
...
@@ -253,9 +253,9 @@ size_t DecimaterT<Mesh>::decimate_to_faces(size_t _nv, size_t _nf) {
heap_
->
reserve
(
mesh_
.
n_vertices
());
for
(
v_it
=
mesh_
.
vertices_begin
();
v_it
!=
v_end
;
++
v_it
)
{
heap_
->
reset_heap_position
(
v_it
.
handle
()
);
heap_
->
reset_heap_position
(
*
v_it
);
if
(
!
mesh_
.
status
(
v_it
).
deleted
())
heap_vertex
(
v_it
.
handle
()
);
heap_vertex
(
*
v_it
);
}
// process heap
...
...
@@ -295,8 +295,8 @@ size_t DecimaterT<Mesh>::decimate_to_faces(size_t _nv, size_t _nf) {
// update triangle normals
vf_it
=
mesh_
.
vf_iter
(
ci
.
v1
);
for
(;
vf_it
;
++
vf_it
)
if
(
!
mesh_
.
status
(
vf_it
).
deleted
())
mesh_
.
set_normal
(
vf_it
,
mesh_
.
calc_face_normal
(
vf_it
.
handle
()
));
if
(
!
mesh_
.
status
(
*
vf_it
).
deleted
())
mesh_
.
set_normal
(
*
vf_it
,
mesh_
.
calc_face_normal
(
*
vf_it
));
// post-process collapse
this
->
postprocess_collapse
(
ci
);
...
...
src/OpenMesh/Tools/Decimater/ModQuadricT.cc
View file @
e30da7ea
...
...
@@ -80,7 +80,7 @@ initialize()
v_end
=
Base
::
mesh
().
vertices_end
();
for
(;
v_it
!=
v_end
;
++
v_it
)
Base
::
mesh
().
property
(
quadrics_
,
v_it
).
clear
();
Base
::
mesh
().
property
(
quadrics_
,
*
v_it
).
clear
();
// calc (normal weighted) quadric
typename
Mesh
::
FaceIter
f_it
=
Base
::
mesh
().
faces_begin
(),
...
...
src/OpenMesh/Tools/Subdivider/Uniform/CatmullClarkT.cc
View file @
e30da7ea
...
...
@@ -124,7 +124,7 @@ CatmullClarkT<MeshType,RealType>::subdivide( MeshType& _m , size_t _n , const bo
// Commit changes in geometry
v_itr
=
_m
.
vertices_begin
();
for
(
;
v_itr
!=
v_end
;
++
v_itr
)
_m
.
set_point
(
v_itr
,
_m
.
property
(
vp_pos_
,
v_itr
)
);
_m
.
set_point
(
*
v_itr
,
_m
.
property
(
vp_pos_
,
*
v_itr
)
);
// Split each edge at midpoint stored in edge property ep_pos_;
// Attention! Creating new edges, hence make sure the loop ends correctly.
...
...
src/OpenMesh/Tools/Subdivider/Uniform/Composite/CompositeT.cc
View file @
e30da7ea
...
...
@@ -79,7 +79,7 @@ bool CompositeT<MeshType,RealType>::prepare( MeshType& _m )
typename
MeshType
::
VertexIter
v_it
(
_m
.
vertices_begin
());
for
(;
v_it
!=
_m
.
vertices_end
();
++
v_it
)
_m
.
data
(
v_it
).
set_position
(
_m
.
point
(
*
v_it
));
_m
.
data
(
*
v_it
).
set_position
(
_m
.
point
(
*
v_it
));
return
true
;
}
...
...
@@ -109,7 +109,7 @@ void CompositeT<MeshType,RealType>::Tvv3()
// set new positions for vertices
v_it
=
mesh_
.
vertices_begin
();
for
(
j
=
0
;
j
<
n_vertices
;
++
j
)
{
mesh_
.
data
(
v_it
).
set_position
(
mesh_
.
data
(
v_it
).
position
()
*
3.0
);
mesh_
.
data
(
*
v_it
).
set_position
(
mesh_
.
data
(
*
v_it
).
position
()
*
3.0
);
++
v_it
;
}
...
...
@@ -173,7 +173,7 @@ void CompositeT<MeshType,RealType>::Tvv4()
// set new positions for vertices
v_it
=
mesh_
.
vertices_begin
();
for
(
j
=
0
;
j
<
n_vertices
;
++
j
)
{
mesh_
.
data
(
v_it
).
set_position
(
mesh_
.
data
(
v_it
).
position
()
*
4.0
);
mesh_
.
data
(
*
v_it
).
set_position
(
mesh_
.
data
(
*
v_it
).
position
()
*
4.0
);
++
v_it
;
}
...
...
@@ -298,11 +298,11 @@ void CompositeT<MeshType,RealType>::VF()
cog
=
zero_point
;
for
(
fv_it
=
mesh_
.
fv_iter
(
*
f_it
);
fv_it
.
is_valid
();
++
fv_it
)
{
cog
+=
mesh_
.
data
(
fv_it
).
position
();
cog
+=
mesh_
.
data
(
*
fv_it
).
position
();
++
valence
;
}
cog
/=
valence
;
mesh_
.
data
(
f_it
).
set_position
(
cog
);
mesh_
.
data
(
*
f_it
).
set_position
(
cog
);
}
}
...
...
@@ -441,7 +441,7 @@ void CompositeT<MeshType,RealType>::FF()
for
(
ff_it
=
mesh_
.
ff_iter
(
*
f_it
);
ff_it
.
is_valid
();
++
ff_it
)
{
cog
+=
mesh_
.
data
(
ff_it
).
position
();
cog
+=
mesh_
.
data
(
*
ff_it
).
position
();
++
valence
;
}
cog
/=
valence
;
...
...
@@ -451,7 +451,7 @@ void CompositeT<MeshType,RealType>::FF()
for
(
f_it
=
mesh_
.
faces_end
();
f_it
!=
mesh_
.
faces_begin
();
)
{
--
f_it
;
mesh_
.
data
(
f_it
).
set_position
(
point_vector
.
back
());
mesh_
.
data
(
*
f_it
).
set_position
(
point_vector
.
back
());
point_vector
.
pop_back
();
}
}
...
...
@@ -602,7 +602,7 @@ void CompositeT<MeshType,RealType>::FVc(Coeff& _coeff)
if
(
valence
>
0
)
cog
/=
valence
;
mesh_
.
data
(
v_it
).
set_position
(
cog
);
mesh_
.
data
(
*
v_it
).
set_position
(
cog
);
}
}
...
...
@@ -614,7 +614,7 @@ void CompositeT<MeshType,RealType>::FVc(scalar_t _c)
unsigned
int
valence
;
typename
MeshType
::
Point
cog
,
zero_point
(
0.0
,
0.0
,
0.0
);
zero_point
(
0.0
,
0.0
,
0.0
);
typename
MeshType
::
VertexOHalfedgeIter
voh_it
;
typename
MeshType
::
VertexIter
v_it
;
...
...
@@ -631,14 +631,14 @@ void CompositeT<MeshType,RealType>::FVc(scalar_t _c)
if
(
mesh_
.
face_handle
(
*
voh_it
).
is_valid
())
{
if
(
mesh_
.
face_handle
(
mesh_
.
opposite_halfedge_handle
(
mesh_
.
next_halfedge_handle
(
*
voh_it
))).
is_valid
())
{
cog
+=
mesh_
.
deref
(
mesh_
.
face_handle
(
*
voh_it
)).
position
()
*
_c
;
cog
+=
mesh_
.
deref
(
mesh_
.
face_handle
(
mesh_
.
opposite_halfedge_handle
(
mesh_
.
next_halfedge_handle
(
*
voh_it
)))).
position
()
*
(
1.0
-
_c
);
}
else
{
cog
+=
mesh_
.
deref
(
mesh_
.
face_handle
(
*
voh_it
)).
position
();
}
if
(
mesh_
.
face_handle
(
mesh_
.
opposite_halfedge_handle
(
mesh_
.
next_halfedge_handle
(
*
voh_it
))).
is_valid
())
{
cog
+=
mesh_
.
deref
(
mesh_
.
face_handle
(
*
voh_it
)).
position
()
*
_c
;
cog
+=
mesh_
.
deref
(
mesh_
.
face_handle
(
mesh_
.
opposite_halfedge_handle
(
mesh_
.
next_halfedge_handle
(
*
voh_it
)))).
position
()
*
(
1.0
-
_c
);
}
else
{
cog
+=
mesh_
.
deref
(
mesh_
.
face_handle
(
*
voh_it
)).
position
();
}
}
else
{
--
valence
;
--
valence
;
}
}
...
...
@@ -683,7 +683,7 @@ void CompositeT<MeshType,RealType>::VdE()
cog
/=
valence
;
mesh_
.
data
(
e_it
).
set_position
(
cog
);
mesh_
.
data
(
*
e_it
).
set_position
(
cog
);
}
}
...
...
@@ -716,7 +716,7 @@ void CompositeT<MeshType,RealType>::VdEc(scalar_t _c)
}
}
mesh_
.
data
(
e_it
).
set_position
(
cog
);
mesh_
.
data
(
*
e_it
).
set_position
(
cog
);
}
}
...
...
@@ -776,7 +776,7 @@ void CompositeT<MeshType,RealType>::VdEg(scalar_t _gamma)
cog
+=
mesh_
.
data
(
mesh_
.
to_vertex_handle
(
heh
)).
position
()
*
2.0
*
_gamma
;
}
mesh_
.
data
(
e_it
).
set_position
(
cog
);
mesh_
.
data
(
*
e_it
).
set_position
(
cog
);
}
}
...
...
@@ -839,7 +839,7 @@ void CompositeT<MeshType,RealType>::VdEg(Coeff& _coeff)
cog
+=
mesh_
.
data
(
mesh_
.
to_vertex_handle
(
heh
)).
position
()
*
2.0
*
gamma
;
}
mesh_
.
data
(
e_it
).
set_position
(
cog
);
mesh_
.
data
(
*
e_it
).
set_position
(
cog
);
}
}
...
...
@@ -867,7 +867,7 @@ void CompositeT<MeshType,RealType>::EV()
cog
/=
valence
;
mesh_
.
data
(
v_it
).
set_position
(
cog
);
mesh_
.
data
(
*
v_it
).
set_position
(
cog
);
}
}
...
...
@@ -903,7 +903,7 @@ void CompositeT<MeshType,RealType>::EVc(Coeff& _coeff)
cog
/=
valence
;
mesh_
.
data
(
v_it
).
set_position
(
cog
);
mesh_
.
data
(
*
v_it
).
set_position
(
cog
);
}
}
...
...
@@ -933,7 +933,7 @@ void CompositeT<MeshType,RealType>::EVc(scalar_t _c)
cog
/=
valence
;
mesh_
.
data
(
v_it
).
set_position
(
cog
);
mesh_
.
data
(
*
v_it
).
set_position
(
cog
);
}
}
...
...
@@ -959,7 +959,7 @@ void CompositeT<MeshType,RealType>::EF()
}
cog
/=
valence
;
mesh_
.
data
(
f_it
).
set_position
(
cog
);
mesh_
.
data
(
*
f_it
).
set_position
(
cog
);
}
}
...
...
@@ -989,7 +989,7 @@ void CompositeT<MeshType,RealType>::FE()
}
cog
/=
valence
;
mesh_
.
data
(
e_it
).
set_position
(
cog
);
mesh_
.
data
(
*
e_it
).
set_position
(
cog
);
}
}
...
...
@@ -1007,7 +1007,7 @@ void CompositeT<MeshType,RealType>::VE()
cog
=
mesh_
.
data
(
mesh_
.
to_vertex_handle
(
mesh_
.
halfedge_handle
(
*
e_it
,
0
))).
position
();
cog
+=
mesh_
.
data
(
mesh_
.
to_vertex_handle
(
mesh_
.
halfedge_handle
(
*
e_it
,
1
))).
position
();
cog
/=
2.0
;
mesh_
.
data
(
e_it
).
set_position
(
cog
);
mesh_
.
data
(
*
e_it
).
set_position
(
cog
);
}
}
...
...
@@ -1042,7 +1042,7 @@ void CompositeT<MeshType,RealType>::VV()
for
(
v_it
=
mesh_
.
vertices_end
();
v_it
!=
mesh_
.
vertices_begin
();
)
{
--
v_it
;
mesh_
.
data
(
v_it
).
set_position
(
point_vector
.
back
());
mesh_
.
data
(
*
v_it
).
set_position
(
point_vector
.
back
());
point_vector
.
pop_back
();
}
}
...
...
@@ -1073,13 +1073,13 @@ void CompositeT<MeshType,RealType>::VVc(Coeff& _coeff)
}
cog
/=
valence
;
c
=
_coeff
(
valence
);
cog
=
cog
*
(
1
-
c
)
+
mesh_
.
data
(
v_it
).
position
()
*
c
;
cog
=
cog
*
(
1
-
c
)
+
mesh_
.
data
(
*
v_it
).
position
()
*
c
;
point_vector
.
push_back
(
cog
);
}
for
(
v_it
=
mesh_
.
vertices_end
();
v_it
!=
mesh_
.
vertices_begin
();
)
{
--
v_it
;
mesh_
.
data
(
v_it
).
set_position
(
point_vector
.
back
());
mesh_
.
data
(
*
v_it
).
set_position
(
point_vector
.
back
());
point_vector
.
pop_back
();
}
}
...
...
@@ -1116,7 +1116,7 @@ void CompositeT<MeshType,RealType>::VVc(scalar_t _c)
for
(
v_it
=
mesh_
.
vertices_end
();
v_it
!=
mesh_
.
vertices_begin
();
)
{
--
v_it
;
mesh_
.
data
(
v_it
).
set_position
(
point_vector
.
back
());
mesh_
.
data
(
*
v_it
).
set_position
(
point_vector
.
back
());
point_vector
.
pop_back
();
}
...
...
@@ -1160,7 +1160,7 @@ void CompositeT<MeshType,RealType>::EdE()
for
(
e_it
=
mesh_
.
edges_end
();
e_it
!=
mesh_
.
edges_begin
();
)
{
--
e_it
;
mesh_
.
data
(
e_it
).
set_position
(
point_vector
.
back
());
mesh_
.
data
(
*
e_it
).
set_position
(
point_vector
.
back
());
point_vector
.
pop_back
();
}
}
...
...
@@ -1204,7 +1204,7 @@ void CompositeT<MeshType,RealType>::EdEc(scalar_t _c)
for
(
e_it
=
mesh_
.
edges_end
();
e_it
!=
mesh_
.
edges_begin
();
)
{
--
e_it
;
mesh_
.
data
(
e_it
).
set_position
(
point_vector
.
back
());
mesh_
.
data
(
*
e_it
).
set_position
(
point_vector
.
back
());
point_vector
.
pop_back
();
}
}
...
...
src/OpenMesh/Tools/Subdivider/Uniform/Composite/CompositeT.hh
View file @
e30da7ea
...
...
@@ -145,7 +145,7 @@ protected:
typename
MeshType
::
VertexIter
v_it
;
for
(
v_it
=
_m
.
vertices_begin
();
v_it
!=
_m
.
vertices_end
();
++
v_it
)
_m
.
set_point
(
*
v_it
,
_m
.
data
(
v_it
).
position
());
_m
.
set_point
(
*
v_it
,
_m
.
data
(
*
v_it
).
position
());
}
...
...
src/OpenMesh/Tools/Subdivider/Uniform/LoopT.hh
View file @
e30da7ea
...
...
@@ -187,7 +187,7 @@ protected:
// Commit changes in geometry
for
(
vit
=
_m
.
vertices_begin
();
vit
!=
_m
.
vertices_end
();
++
vit
)
{
_m
.
set_point
(
vit
,
_m
.
property
(
vp_pos_
,
vit
)
);
_m
.
set_point
(
*
vit
,
_m
.
property
(
vp_pos_
,
*
vit
)
);
}
}
...
...
src/OpenMesh/Tools/Subdivider/Uniform/ModifiedButterFlyT.hh
View file @
e30da7ea
...
...
@@ -217,7 +217,7 @@ protected:
// Commit changes in geometry
for
(
vit
=
/*initialVerticesEnd;*/
_m
.
vertices_begin
();
vit
!=
_m
.
vertices_end
();
++
vit
)
_m
.
set_point
(
vit
,
_m
.
property
(
vp_pos_
,
vit
)
);
_m
.
set_point
(
*
vit
,
_m
.
property
(
vp_pos_
,
*
vit
)
);
#if defined(_DEBUG) || defined(DEBUG)
// Now we have an consistent mesh!
...
...
src/OpenMesh/Tools/Subdivider/Uniform/Sqrt3InterpolatingSubdividerLabsikGreinerT.hh
View file @
e30da7ea
...
...
@@ -212,16 +212,16 @@ protected:
// tag existing edges
for
(
eit
=
_m
.
edges_begin
();
eit
!=
_m
.
edges_end
();
++
eit
)
{
_m
.
status
(
eit
).
set_tagged
(
true
);
if
(
(
gen
%
2
)
&&
_m
.
is_boundary
(
eit
)
)
compute_new_boundary_points
(
_m
,
eit
);
// *) creates new vertices
_m
.
status
(
*
eit
).
set_tagged
(
true
);
if
(
(
gen
%
2
)
&&
_m
.
is_boundary
(
*
eit
)
)
compute_new_boundary_points
(
_m
,
*
eit
);
// *) creates new vertices
}
// insert new vertices, and store pos in vp_pos_
typename
MeshType
::
FaceIter
fend
=
_m
.
faces_end
();
for
(
fit
=
_m
.
faces_begin
();
fit
!=
fend
;
++
fit
)
{
if
(
_m
.
is_boundary
(
fit
))
if
(
_m
.
is_boundary
(
*
fit
))
{
if
(
gen
%
2
)
_m
.
property
(
fp_pos_
,
*
fit
).
invalidate
();
...
...
@@ -312,13 +312,13 @@ protected:
int
nOrdinary
=
0
;
//check number of extraordinary vertices
for
(
fvit
=
_m
.
fv_iter
(
fit
);
fvit
.
is_valid
();
++
fvit
)
for
(
fvit
=
_m
.
fv_iter
(
*
fit
);
fvit
.
is_valid
();
++
fvit
)
if
(
(
_m
.
valence
(
*
fvit
))
==
6
||
_m
.
is_boundary
(
*
fvit
)
)
++
nOrdinary
;
if
(
nOrdinary
==
3
)
{
for
(
fheit
=
_m
.
fh_iter
(
fit
);
fheit
.
is_valid
();
++
fheit
)
for
(
fheit
=
_m
.
fh_iter
(
*
fit
);
fheit
.
is_valid
();
++
fheit
)
{
//one ring vertex has weight 32/81
heh
=
*
fheit
;
...
...
@@ -346,9 +346,9 @@ protected:
else
{
//only use irregular vertices:
for
(
fheit
=
_m
.
fh_iter
(
fit
);
fheit
.
is_valid
();
++
fheit
)
for
(
fheit
=
_m
.
fh_iter
(
*
fit
);
fheit
.
is_valid
();
++
fheit
)
{
vh
=
_m
.
to_vertex_handle
(
fheit
);
vh
=
_m
.
to_vertex_handle
(
*
fheit
);
if
(
(
_m
.
valence
(
vh
)
!=
6
)
&&
(
!
_m
.
is_boundary
(
vh
))
)
{
unsigned
int
K
=
_m
.
valence
(
vh
);
...
...
@@ -371,21 +371,21 @@ protected:
//split faces
for
(
fit
=
_m
.
faces_begin
();
fit
!=
fend
;
++
fit
)
{
if
(
_m
.
is_boundary
(
fit
)
&&
(
gen
%
2
))
if
(
_m
.
is_boundary
(
*
fit
)
&&
(
gen
%
2
))
{
boundary_split
(
_m
,
fit
);
boundary_split
(
_m
,
*
fit
);
}
else
{
assert
(
_m
.
property
(
fp_pos_
,
*
fit
).
is_valid
());
_m
.
split
(
fit
,
_m
.
property
(
fp_pos_
,
*
fit
)
);
_m
.
split
(
*
fit
,
_m
.
property
(
fp_pos_
,
*
fit
)
);
}
}
// flip old edges
for
(
eit
=
_m
.
edges_begin
();
eit
!=
_m
.
edges_end
();
++
eit
)
if
(
_m
.
status
(
eit
).
tagged
()
&&
!
_m
.
is_boundary
(
eit
)
)
_m
.
flip
(
eit
);
if
(
_m
.
status
(
*
eit
).
tagged
()
&&
!
_m
.
is_boundary
(
*
eit
)
)
_m
.
flip
(
*
eit
);
// Now we have an consistent mesh!
ASSERT_CONSISTENCY
(
MeshType
,
_m
);
...
...
@@ -455,7 +455,7 @@ private:
typename
MeshType
::
HalfedgeHandle
heh
;
// find boundary edge
for
(
fe_it
=
_m
.
fe_iter
(
_fh
);
fe_it
.
is_valid
()
&&
!
_m
.
is_boundary
(
fe_it
);
++
fe_it
)
{};
for
(
fe_it
=
_m
.
fe_iter
(
_fh
);
fe_it
.
is_valid
()
&&
!
_m
.
is_boundary
(
*
fe_it
);
++
fe_it
)
{};
// use precomputed, already inserted but not linked vertices
vhl
=
_m
.
property
(
ep_nv_
,
*
fe_it
).
first
;
...
...
src/OpenMesh/Tools/Subdivider/Uniform/Sqrt3T.hh
View file @
e30da7ea
...
...
@@ -175,20 +175,20 @@ protected:
// tag existing edges
for
(
eit
=
_m
.
edges_begin
();
eit
!=
_m
.
edges_end
();
++
eit
)
{
_m
.
status
(
eit
).
set_tagged
(
true
);
if
(
(
gen
%
2
)
&&
_m
.
is_boundary
(
eit
)
)
compute_new_boundary_points
(
_m
,
eit
);
// *) creates new vertices
_m
.
status
(
*
eit
).
set_tagged
(
true
);
if
(
(
gen
%
2
)
&&
_m
.
is_boundary
(
*
eit
)
)
compute_new_boundary_points
(
_m
,
*
eit
);
// *) creates new vertices
}
// do relaxation of old vertices, but store new pos in property vp_pos_
for
(
vit
=
_m
.
vertices_begin
();
vit
!=
_m
.
vertices_end
();
++
vit
)
{
if
(
_m
.
is_boundary
(
vit
)
)
if
(
_m
.
is_boundary
(
*
vit
)
)
{
if
(
gen
%
2
)
{
heh
=
_m
.
halfedge_handle
(
vit
);
heh
=
_m
.
halfedge_handle
(
*
vit
);
if
(
heh
.
is_valid
())
// skip isolated newly inserted vertices *)
{
typename
OpenMesh
::
HalfedgeHandle
...
...
@@ -201,28 +201,28 @@ protected:
po