306 typedef typename Mesh::Scalar Scalar;
307 typedef typename Mesh::Point Point;
308 typedef typename Mesh::Normal Normal;
309 typedef typename Mesh::Color Color;
316 VertexHandle (Mesh::*vertex_handle_uint )(
unsigned int)
const = &Mesh::vertex_handle;
317 HalfedgeHandle (Mesh::*halfedge_handle_uint)(
unsigned int)
const = &Mesh::halfedge_handle;
318 EdgeHandle (Mesh::*edge_handle_uint )(
unsigned int)
const = &Mesh::edge_handle;
319 FaceHandle (Mesh::*face_handle_uint )(
unsigned int)
const = &Mesh::face_handle;
322 void (Mesh::*garbage_collection_bools)(bool, bool, bool) = &Mesh::garbage_collection;
323 void (*garbage_collection_lists_bools)(Mesh&, list&, list&, list&, bool, bool, bool) = &
garbage_collection;
342 const typename Mesh::Vertex& (Mesh::*vertex )(
VertexHandle )
const = &Mesh::vertex;
343 const typename Mesh::Halfedge& (Mesh::*halfedge)(
HalfedgeHandle)
const = &Mesh::halfedge;
344 const typename Mesh::Edge& (Mesh::*edge )(
EdgeHandle )
const = &Mesh::edge;
345 const typename Mesh::Face& (Mesh::*face )(
FaceHandle )
const = &Mesh::face;
348 VertexHandle (Mesh::*handle_v)(
const typename Mesh::Vertex& )
const = &Mesh::handle;
349 HalfedgeHandle (Mesh::*handle_h)(
const typename Mesh::Halfedge&)
const = &Mesh::handle;
350 EdgeHandle (Mesh::*handle_e)(
const typename Mesh::Edge& )
const = &Mesh::handle;
351 FaceHandle (Mesh::*handle_f)(
const typename Mesh::Face& )
const = &Mesh::handle;
354 const typename Mesh::Point& (Mesh::*point_vh )(
VertexHandle )
const = &Mesh::point;
355 const typename Mesh::Normal& (Mesh::*normal_vh)(
VertexHandle )
const = &Mesh::normal;
356 const typename Mesh::Normal& (Mesh::*normal_hh)(
HalfedgeHandle)
const = &Mesh::normal;
357 const typename Mesh::Normal& (Mesh::*normal_fh)(
FaceHandle )
const = &Mesh::normal;
358 const typename Mesh::Color& (Mesh::*color_vh )(
VertexHandle )
const = &Mesh::color;
359 const typename Mesh::Color& (Mesh::*color_hh )(
HalfedgeHandle)
const = &Mesh::color;
360 const typename Mesh::Color& (Mesh::*color_eh )(
EdgeHandle )
const = &Mesh::color;
361 const typename Mesh::Color& (Mesh::*color_fh )(
FaceHandle )
const = &Mesh::color;
364 const typename Mesh::TexCoord1D& (Mesh::*texcoord1D_vh)(
VertexHandle )
const = &Mesh::texcoord1D;
365 const typename Mesh::TexCoord1D& (Mesh::*texcoord1D_hh)(
HalfedgeHandle)
const = &Mesh::texcoord1D;
366 const typename Mesh::TexCoord2D& (Mesh::*texcoord2D_vh)(
VertexHandle )
const = &Mesh::texcoord2D;
367 const typename Mesh::TexCoord2D& (Mesh::*texcoord2D_hh)(
HalfedgeHandle)
const = &Mesh::texcoord2D;
368 const typename Mesh::TexCoord3D& (Mesh::*texcoord3D_vh)(
VertexHandle )
const = &Mesh::texcoord3D;
369 const typename Mesh::TexCoord3D& (Mesh::*texcoord3D_hh)(
HalfedgeHandle)
const = &Mesh::texcoord3D;
372 const StatusInfo& (Mesh::*status_vh)(
VertexHandle )
const = &Mesh::status;
373 const StatusInfo& (Mesh::*status_hh)(
HalfedgeHandle)
const = &Mesh::status;
374 const StatusInfo& (Mesh::*status_eh)(
EdgeHandle )
const = &Mesh::status;
375 const StatusInfo& (Mesh::*status_fh)(
FaceHandle )
const = &Mesh::status;
378 void (Mesh::*set_normal_vh)(
VertexHandle,
const typename Mesh::Normal&) = &Mesh::set_normal;
379 void (Mesh::*set_normal_hh)(
HalfedgeHandle,
const typename Mesh::Normal&) = &Mesh::set_normal;
380 void (Mesh::*set_normal_fh)(
FaceHandle,
const typename Mesh::Normal&) = &Mesh::set_normal;
381 void (Mesh::*set_color_vh )(
VertexHandle,
const typename Mesh::Color& ) = &Mesh::set_color;
382 void (Mesh::*set_color_hh )(
HalfedgeHandle,
const typename Mesh::Color& ) = &Mesh::set_color;
383 void (Mesh::*set_color_eh )(
EdgeHandle,
const typename Mesh::Color& ) = &Mesh::set_color;
384 void (Mesh::*set_color_fh )(
FaceHandle,
const typename Mesh::Color& ) = &Mesh::set_color;
387 void (Mesh::*set_texcoord1D_vh)(
VertexHandle,
const typename Mesh::TexCoord1D&) = &Mesh::set_texcoord1D;
388 void (Mesh::*set_texcoord1D_hh)(
HalfedgeHandle,
const typename Mesh::TexCoord1D&) = &Mesh::set_texcoord1D;
389 void (Mesh::*set_texcoord2D_vh)(
VertexHandle,
const typename Mesh::TexCoord2D&) = &Mesh::set_texcoord2D;
390 void (Mesh::*set_texcoord2D_hh)(
HalfedgeHandle,
const typename Mesh::TexCoord2D&) = &Mesh::set_texcoord2D;
391 void (Mesh::*set_texcoord3D_vh)(
VertexHandle,
const typename Mesh::TexCoord3D&) = &Mesh::set_texcoord3D;
392 void (Mesh::*set_texcoord3D_hh)(
HalfedgeHandle,
const typename Mesh::TexCoord3D&) = &Mesh::set_texcoord3D;
401 void (Mesh::*add_property_vph)(
VPropHandleT<object>&,
const std::string&) = &Mesh::add_property;
402 void (Mesh::*add_property_eph)(
EPropHandleT<object>&,
const std::string&) = &Mesh::add_property;
403 void (Mesh::*add_property_hph)(
HPropHandleT<object>&,
const std::string&) = &Mesh::add_property;
404 void (Mesh::*add_property_fph)(
FPropHandleT<object>&,
const std::string&) = &Mesh::add_property;
405 void (Mesh::*add_property_mph)(
MPropHandleT<object>&,
const std::string&) = &Mesh::add_property;
415 bool (Mesh::*get_property_handle_vph)(
VPropHandleT<object>&,
const std::string&)
const = &Mesh::get_property_handle;
416 bool (Mesh::*get_property_handle_eph)(
EPropHandleT<object>&,
const std::string&)
const = &Mesh::get_property_handle;
417 bool (Mesh::*get_property_handle_hph)(
HPropHandleT<object>&,
const std::string&)
const = &Mesh::get_property_handle;
418 bool (Mesh::*get_property_handle_fph)(
FPropHandleT<object>&,
const std::string&)
const = &Mesh::get_property_handle;
419 bool (Mesh::*get_property_handle_mph)(
MPropHandleT<object>&,
const std::string&)
const = &Mesh::get_property_handle;
436 VertexHandle (Mesh::*new_vertex_void )(void ) = &Mesh::new_vertex;
437 VertexHandle (Mesh::*new_vertex_point)(
const typename Mesh::Point& ) = &Mesh::new_vertex;
438 FaceHandle (Mesh::*new_face_void )(void ) = &Mesh::new_face;
439 FaceHandle (Mesh::*new_face_face )(
const typename Mesh::Face& ) = &Mesh::new_face;
465 void (Mesh::*copy_all_properties_eh_eh_bool)(
EdgeHandle,
EdgeHandle, bool) = &Mesh::copy_all_properties;
466 void (Mesh::*copy_all_properties_fh_fh_bool)(
FaceHandle,
FaceHandle, bool) = &Mesh::copy_all_properties;
477 unsigned int (Mesh::*valence_vh)(
VertexHandle)
const = &Mesh::valence;
478 unsigned int (Mesh::*valence_fh)(
FaceHandle )
const = &Mesh::valence;
481 void (Mesh::*triangulate_fh )(
FaceHandle) = &Mesh::triangulate;
482 void (Mesh::*triangulate_void)( ) = &Mesh::triangulate;
485 void (Mesh::*delete_vertex)(
VertexHandle, bool) = &Mesh::delete_vertex;
486 void (Mesh::*delete_edge )(
EdgeHandle, bool) = &Mesh::delete_edge;
487 void (Mesh::*delete_face )(
FaceHandle, bool) = &Mesh::delete_face;
502 bool (Mesh::*is_boundary_hh)(
HalfedgeHandle )
const = &Mesh::is_boundary;
503 bool (Mesh::*is_boundary_eh)(
EdgeHandle )
const = &Mesh::is_boundary;
504 bool (Mesh::*is_boundary_vh)(
VertexHandle )
const = &Mesh::is_boundary;
505 bool (Mesh::*is_boundary_fh)(
FaceHandle, bool)
const = &Mesh::is_boundary;
508 const typename Mesh::Vertex& (Mesh::*deref_vh)(
VertexHandle )
const = &Mesh::deref;
509 const typename Mesh::Halfedge& (Mesh::*deref_hh)(
HalfedgeHandle)
const = &Mesh::deref;
510 const typename Mesh::Edge& (Mesh::*deref_eh)(
EdgeHandle )
const = &Mesh::deref;
511 const typename Mesh::Face& (Mesh::*deref_fh)(
FaceHandle )
const = &Mesh::deref;
517 void (Mesh::*calc_edge_vector_eh_normal)(
EdgeHandle, Normal&)
const = &Mesh::calc_edge_vector;
518 void (Mesh::*calc_edge_vector_hh_normal)(
HalfedgeHandle, Normal&)
const = &Mesh::calc_edge_vector;
520 Normal (Mesh::*calc_edge_vector_eh)(
EdgeHandle )
const = &Mesh::calc_edge_vector;
521 Normal (Mesh::*calc_edge_vector_hh)(
HalfedgeHandle)
const = &Mesh::calc_edge_vector;
523 Scalar (Mesh::*calc_edge_length_eh)(
EdgeHandle )
const = &Mesh::calc_edge_length;
524 Scalar (Mesh::*calc_edge_length_hh)(
HalfedgeHandle)
const = &Mesh::calc_edge_length;
526 Scalar (Mesh::*calc_edge_sqr_length_eh)(
EdgeHandle )
const = &Mesh::calc_edge_sqr_length;
527 Scalar (Mesh::*calc_edge_sqr_length_hh)(
HalfedgeHandle)
const = &Mesh::calc_edge_sqr_length;
529 Scalar (Mesh::*calc_dihedral_angle_fast_hh)(
HalfedgeHandle)
const = &Mesh::calc_dihedral_angle_fast;
530 Scalar (Mesh::*calc_dihedral_angle_fast_eh)(
EdgeHandle )
const = &Mesh::calc_dihedral_angle_fast;
532 Scalar (Mesh::*calc_dihedral_angle_hh)(
HalfedgeHandle)
const = &Mesh::calc_dihedral_angle;
533 Scalar (Mesh::*calc_dihedral_angle_eh)(
EdgeHandle )
const = &Mesh::calc_dihedral_angle;
535 unsigned int (Mesh::*find_feature_edges)(Scalar) = &Mesh::find_feature_edges;
540 void (Mesh::*update_normal_fh)(
FaceHandle ) = &Mesh::update_normal;
541 void (Mesh::*update_normal_hh)(
HalfedgeHandle, double) = &Mesh::update_normal;
542 void (Mesh::*update_normal_vh)(
VertexHandle ) = &Mesh::update_normal;
544 void (Mesh::*update_halfedge_normals)(double) = &Mesh::update_halfedge_normals;
546 Normal (Mesh::*calc_face_normal )(
FaceHandle )
const = &Mesh::calc_face_normal;
547 Normal (Mesh::*calc_halfedge_normal)(
HalfedgeHandle, double)
const = &Mesh::calc_halfedge_normal;
549 void (Mesh::*calc_face_centroid_fh_point)(
FaceHandle, Point&)
const = &Mesh::calc_face_centroid;
550 Point (Mesh::*calc_face_centroid_fh )(
FaceHandle )
const = &Mesh::calc_face_centroid;
556 class_<Mesh> class_mesh(_name);
564 .def(
"reserve", &Mesh::reserve)
566 .def(
"vertex", vertex, return_value_policy<reference_existing_object>())
567 .def(
"halfedge", halfedge, return_value_policy<reference_existing_object>())
568 .def(
"edge", edge, return_value_policy<reference_existing_object>())
569 .def(
"face", face, return_value_policy<reference_existing_object>())
571 .def(
"handle", handle_v)
572 .def(
"handle", handle_h)
573 .def(
"handle", handle_e)
574 .def(
"handle", handle_f)
576 .def(
"vertex_handle", vertex_handle_uint)
577 .def(
"halfedge_handle", halfedge_handle_uint)
578 .def(
"edge_handle", edge_handle_uint)
579 .def(
"face_handle", face_handle_uint)
581 .def(
"clear", &Mesh::clear)
582 .def(
"clean", &Mesh::clean)
583 .def(
"garbage_collection", garbage_collection_bools, garbage_collection_overloads())
584 .def(
"garbage_collection", garbage_collection_lists_bools)
586 .def(
"n_vertices", &Mesh::n_vertices)
587 .def(
"n_halfedges", &Mesh::n_halfedges)
588 .def(
"n_edges", &Mesh::n_edges)
589 .def(
"n_faces", &Mesh::n_faces)
590 .def(
"vertices_empty", &Mesh::vertices_empty)
591 .def(
"halfedges_empty", &Mesh::halfedges_empty)
592 .def(
"edges_empty", &Mesh::edges_empty)
593 .def(
"faces_empty", &Mesh::faces_empty)
595 .def(
"halfedge_handle", halfedge_handle_vh)
596 .def(
"set_halfedge_handle", set_halfedge_handle_vh_hh)
598 .def(
"to_vertex_handle", &Mesh::to_vertex_handle)
599 .def(
"from_vertex_handle", &Mesh::from_vertex_handle)
600 .def(
"set_vertex_handle", &Mesh::set_vertex_handle)
601 .def(
"face_handle", face_handle_hh)
602 .def(
"set_face_handle", &Mesh::set_face_handle)
603 .def(
"next_halfedge_handle", &Mesh::next_halfedge_handle)
604 .def(
"set_next_halfedge_handle", &Mesh::set_next_halfedge_handle)
605 .def(
"prev_halfedge_handle", prev_halfedge_handle_hh)
606 .def(
"opposite_halfedge_handle", &Mesh::opposite_halfedge_handle)
607 .def(
"ccw_rotated_halfedge_handle", &Mesh::ccw_rotated_halfedge_handle)
608 .def(
"cw_rotated_halfedge_handle", &Mesh::cw_rotated_halfedge_handle)
609 .def(
"edge_handle", edge_handle_hh)
611 .def(
"halfedge_handle", halfedge_handle_eh_uint)
613 .def(
"halfedge_handle", halfedge_handle_fh)
614 .def(
"set_halfedge_handle", set_halfedge_handle_fh_hh)
617 .def(
"set_point", &Mesh::set_point)
619 .def(
"set_normal", set_normal_vh)
621 .def(
"set_normal", set_normal_hh)
623 .def(
"set_color", set_color_vh)
625 .def(
"set_texcoord1D", set_texcoord1D_vh)
627 .def(
"set_texcoord2D", set_texcoord2D_vh)
629 .def(
"set_texcoord3D", set_texcoord3D_vh)
631 .def(
"set_texcoord1D", set_texcoord1D_hh)
633 .def(
"set_texcoord2D", set_texcoord2D_hh)
635 .def(
"set_texcoord3D", set_texcoord3D_hh)
637 .def(
"set_status", set_status_vh)
639 .def(
"set_status", set_status_hh)
641 .def(
"set_color", set_color_hh)
643 .def(
"set_color", set_color_eh)
645 .def(
"set_status", set_status_eh)
647 .def(
"set_normal", set_normal_fh)
649 .def(
"set_color", set_color_fh)
651 .def(
"set_status", set_status_fh)
653 .def(
"request_vertex_normals", &Mesh::request_vertex_normals)
654 .def(
"request_vertex_colors", &Mesh::request_vertex_colors)
655 .def(
"request_vertex_texcoords1D", &Mesh::request_vertex_texcoords1D)
656 .def(
"request_vertex_texcoords2D", &Mesh::request_vertex_texcoords2D)
657 .def(
"request_vertex_texcoords3D", &Mesh::request_vertex_texcoords3D)
658 .def(
"request_vertex_status", &Mesh::request_vertex_status)
659 .def(
"request_halfedge_status", &Mesh::request_halfedge_status)
660 .def(
"request_halfedge_normals", &Mesh::request_halfedge_normals)
661 .def(
"request_halfedge_colors", &Mesh::request_halfedge_colors)
662 .def(
"request_halfedge_texcoords1D", &Mesh::request_halfedge_texcoords1D)
663 .def(
"request_halfedge_texcoords2D", &Mesh::request_halfedge_texcoords2D)
664 .def(
"request_halfedge_texcoords3D", &Mesh::request_halfedge_texcoords3D)
665 .def(
"request_edge_status", &Mesh::request_edge_status)
666 .def(
"request_edge_colors", &Mesh::request_edge_colors)
667 .def(
"request_face_normals", &Mesh::request_face_normals)
668 .def(
"request_face_colors", &Mesh::request_face_colors)
669 .def(
"request_face_status", &Mesh::request_face_status)
670 .def(
"request_face_texture_index", &Mesh::request_face_texture_index)
672 .def(
"release_vertex_normals", &Mesh::release_vertex_normals)
673 .def(
"release_vertex_colors", &Mesh::release_vertex_colors)
674 .def(
"release_vertex_texcoords1D", &Mesh::release_vertex_texcoords1D)
675 .def(
"release_vertex_texcoords2D", &Mesh::release_vertex_texcoords2D)
676 .def(
"release_vertex_texcoords3D", &Mesh::release_vertex_texcoords3D)
677 .def(
"release_vertex_status", &Mesh::release_vertex_status)
678 .def(
"release_halfedge_status", &Mesh::release_halfedge_status)
679 .def(
"release_halfedge_normals", &Mesh::release_halfedge_normals)
680 .def(
"release_halfedge_colors", &Mesh::release_halfedge_colors)
681 .def(
"release_halfedge_texcoords1D", &Mesh::release_halfedge_texcoords1D)
682 .def(
"release_halfedge_texcoords2D", &Mesh::release_halfedge_texcoords2D)
683 .def(
"release_halfedge_texcoords3D", &Mesh::release_halfedge_texcoords3D)
684 .def(
"release_edge_status", &Mesh::release_edge_status)
685 .def(
"release_edge_colors", &Mesh::release_edge_colors)
686 .def(
"release_face_normals", &Mesh::release_face_normals)
687 .def(
"release_face_colors", &Mesh::release_face_colors)
688 .def(
"release_face_status", &Mesh::release_face_status)
689 .def(
"release_face_texture_index", &Mesh::release_face_texture_index)
691 .def(
"has_vertex_normals", &Mesh::has_vertex_normals)
692 .def(
"has_vertex_colors", &Mesh::has_vertex_colors)
693 .def(
"has_vertex_texcoords1D", &Mesh::has_vertex_texcoords1D)
694 .def(
"has_vertex_texcoords2D", &Mesh::has_vertex_texcoords2D)
695 .def(
"has_vertex_texcoords3D", &Mesh::has_vertex_texcoords3D)
696 .def(
"has_vertex_status", &Mesh::has_vertex_status)
697 .def(
"has_halfedge_status", &Mesh::has_halfedge_status)
698 .def(
"has_halfedge_normals", &Mesh::has_halfedge_normals)
699 .def(
"has_halfedge_colors", &Mesh::has_halfedge_colors)
700 .def(
"has_halfedge_texcoords1D", &Mesh::has_halfedge_texcoords1D)
701 .def(
"has_halfedge_texcoords2D", &Mesh::has_halfedge_texcoords2D)
702 .def(
"has_halfedge_texcoords3D", &Mesh::has_halfedge_texcoords3D)
703 .def(
"has_edge_status", &Mesh::has_edge_status)
704 .def(
"has_edge_colors", &Mesh::has_edge_colors)
705 .def(
"has_face_normals", &Mesh::has_face_normals)
706 .def(
"has_face_colors", &Mesh::has_face_colors)
707 .def(
"has_face_status", &Mesh::has_face_status)
708 .def(
"has_face_texture_index", &Mesh::has_face_texture_index)
710 .def(
"add_property", add_property_vph, add_property_overloads())
711 .def(
"add_property", add_property_eph, add_property_overloads())
712 .def(
"add_property", add_property_hph, add_property_overloads())
713 .def(
"add_property", add_property_fph, add_property_overloads())
714 .def(
"add_property", add_property_mph, add_property_overloads())
716 .def(
"remove_property", remove_property_vph)
717 .def(
"remove_property", remove_property_eph)
718 .def(
"remove_property", remove_property_hph)
719 .def(
"remove_property", remove_property_fph)
720 .def(
"remove_property", remove_property_mph)
722 .def(
"get_property_handle", get_property_handle_vph)
723 .def(
"get_property_handle", get_property_handle_eph)
724 .def(
"get_property_handle", get_property_handle_hph)
725 .def(
"get_property_handle", get_property_handle_fph)
726 .def(
"get_property_handle", get_property_handle_mph)
734 .def(
"set_property", set_property_vertex)
735 .def(
"set_property", set_property_edge)
736 .def(
"set_property", set_property_halfedge)
737 .def(
"set_property", set_property_face)
738 .def(
"set_property", set_property_mesh)
740 .def(
"new_vertex", new_vertex_void)
741 .def(
"new_vertex", new_vertex_point)
742 .def(
"new_edge", &Mesh::new_edge)
743 .def(
"new_face", new_face_void)
744 .def(
"new_face", new_face_face)
746 .def(
"vertices", vertices)
747 .def(
"halfedges", halfedges)
751 .def(
"svertices", svertices)
752 .def(
"shalfedges", shalfedges)
753 .def(
"sedges", sedges)
754 .def(
"sfaces", sfaces)
760 .def(
"copy_property", copy_property_vprop)
761 .def(
"copy_property", copy_property_hprop)
762 .def(
"copy_property", copy_property_eprop)
763 .def(
"copy_property", copy_property_fprop)
765 .def(
"copy_all_properties", copy_all_properties_vh_vh_bool, copy_all_properties_overloads())
766 .def(
"copy_all_properties", copy_all_properties_hh_hh_bool, copy_all_properties_overloads())
767 .def(
"copy_all_properties", copy_all_properties_eh_eh_bool, copy_all_properties_overloads())
768 .def(
"copy_all_properties", copy_all_properties_fh_fh_bool, copy_all_properties_overloads())
774 .def(
"assign_connectivity", assign_connectivity_poly)
775 .def(
"assign_connectivity", assign_connectivity_tri)
777 .def(
"opposite_face_handle", &Mesh::opposite_face_handle)
778 .def(
"adjust_outgoing_halfedge", &Mesh::adjust_outgoing_halfedge)
779 .def(
"find_halfedge", &Mesh::find_halfedge)
780 .def(
"valence", valence_vh)
781 .def(
"valence", valence_fh)
782 .def(
"collapse", &Mesh::collapse)
783 .def(
"is_simple_link", &Mesh::is_simple_link)
784 .def(
"is_simply_connected", &Mesh::is_simply_connected)
785 .def(
"remove_edge", &Mesh::remove_edge)
786 .def(
"reinsert_edge", &Mesh::reinsert_edge)
787 .def(
"triangulate", triangulate_fh)
788 .def(
"triangulate", triangulate_void)
789 .def(
"split_edge", &Mesh::split_edge)
790 .def(
"split_edge_copy", &Mesh::split_edge_copy)
792 .def(
"add_vertex", &Mesh::add_vertex)
794 .def(
"is_collapse_ok", &Mesh::is_collapse_ok)
795 .def(
"delete_vertex", delete_vertex, delete_vertex_overloads())
796 .def(
"delete_edge", delete_edge, delete_edge_overloads())
797 .def(
"delete_face", delete_face, delete_face_overloads())
812 .def(
"is_boundary", is_boundary_hh)
813 .def(
"is_boundary", is_boundary_eh)
814 .def(
"is_boundary", is_boundary_vh)
815 .def(
"is_boundary", is_boundary_fh, is_boundary_overloads())
816 .def(
"is_manifold", &Mesh::is_manifold)
818 .def(
"deref", deref_vh, return_value_policy<reference_existing_object>())
819 .def(
"deref", deref_hh, return_value_policy<reference_existing_object>())
820 .def(
"deref", deref_eh, return_value_policy<reference_existing_object>())
821 .def(
"deref", deref_fh, return_value_policy<reference_existing_object>())
823 .def(
"is_triangles", &Mesh::is_triangles)
824 .staticmethod(
"is_triangles")
826 .def_readonly(
"InvalidVertexHandle", &Mesh::InvalidVertexHandle)
827 .def_readonly(
"InvalidHalfedgeHandle", &Mesh::InvalidHalfedgeHandle)
828 .def_readonly(
"InvalidEdgeHandle", &Mesh::InvalidEdgeHandle)
829 .def_readonly(
"InvalidFaceHandle", &Mesh::InvalidFaceHandle)
835 .def(
"add_vertex", &Mesh::add_vertex)
837 .def(
"calc_edge_vector", calc_edge_vector_eh_normal)
838 .def(
"calc_edge_vector", calc_edge_vector_eh)
839 .def(
"calc_edge_vector", calc_edge_vector_hh_normal)
840 .def(
"calc_edge_vector", calc_edge_vector_hh)
842 .def(
"calc_edge_length", calc_edge_length_eh)
843 .def(
"calc_edge_length", calc_edge_length_hh)
844 .def(
"calc_edge_sqr_length", calc_edge_sqr_length_eh)
845 .def(
"calc_edge_sqr_length", calc_edge_sqr_length_hh)
847 .def(
"calc_sector_vectors", &Mesh::calc_sector_vectors)
848 .def(
"calc_sector_angle", &Mesh::calc_sector_angle)
849 .def(
"calc_sector_normal", &Mesh::calc_sector_normal)
850 .def(
"calc_sector_area", &Mesh::calc_sector_area)
852 .def(
"calc_dihedral_angle_fast", calc_dihedral_angle_fast_hh)
853 .def(
"calc_dihedral_angle_fast", calc_dihedral_angle_fast_eh)
854 .def(
"calc_dihedral_angle", calc_dihedral_angle_hh)
855 .def(
"calc_dihedral_angle", calc_dihedral_angle_eh)
857 .def(
"find_feature_edges", find_feature_edges, find_feature_edges_overloads())
859 .def(
"split", split_fh_vh)
860 .def(
"split", split_eh_vh)
862 .def(
"update_normals", &Mesh::update_normals)
863 .def(
"update_normal", update_normal_fh)
864 .def(
"update_face_normals", &Mesh::update_face_normals)
866 .def(
"calc_face_normal", calc_face_normal)
868 .def(
"calc_face_centroid", calc_face_centroid_fh_point)
869 .def(
"calc_face_centroid", calc_face_centroid_fh)
871 .def(
"update_normal", update_normal_hh, update_normal_overloads())
872 .def(
"update_halfedge_normals", update_halfedge_normals, update_halfedge_normals_overloads())
874 .def(
"calc_halfedge_normal", calc_halfedge_normal, calc_halfedge_normal_overloads())
876 .def(
"is_estimated_feature_edge", &Mesh::is_estimated_feature_edge)
878 .def(
"update_normal", update_normal_vh)
879 .def(
"update_vertex_normals", &Mesh::update_vertex_normals)
881 .def(
"calc_vertex_normal", &Mesh::calc_vertex_normal)
882 .def(
"calc_vertex_normal_fast", &Mesh::calc_vertex_normal_fast)
883 .def(
"calc_vertex_normal_correct", &Mesh::calc_vertex_normal_correct)
884 .def(
"calc_vertex_normal_loop", &Mesh::calc_vertex_normal_loop)
886 .def(
"is_polymesh", &Mesh::is_polymesh)
887 .staticmethod(
"is_polymesh")
889 .def(
"is_trimesh", &Mesh::is_trimesh)
890 .staticmethod(
"is_trimesh")
900 scope scope_mesh = class_mesh;
903 const boost::python::type_info point_info = type_id<typename Mesh::Point>();
904 const converter::registration * point_registration = converter::registry::query(point_info);
905 scope_mesh.attr(
"Point") = handle<>(point_registration->m_class_object);
908 const boost::python::type_info normal_info = type_id<typename Mesh::Normal>();
909 const converter::registration * normal_registration = converter::registry::query(normal_info);
910 scope_mesh.attr(
"Normal") = handle<>(normal_registration->m_class_object);
913 const boost::python::type_info color_info = type_id<typename Mesh::Color>();
914 const converter::registration * color_registration = converter::registry::query(color_info);
915 scope_mesh.attr(
"Color") = handle<>(color_registration->m_class_object);
918 const boost::python::type_info texcoord2d_info = type_id<typename Mesh::TexCoord2D>();
919 const converter::registration * texcoord2d_registration = converter::registry::query(texcoord2d_info);
920 scope_mesh.attr(
"TexCoord2D") = handle<>(texcoord2d_registration->m_class_object);
923 const boost::python::type_info texcoord3d_info = type_id<typename Mesh::TexCoord3D>();
924 const converter::registration * texcoord3d_registration = converter::registry::query(texcoord3d_info);
925 scope_mesh.attr(
"TexCoord3D") = handle<>(texcoord3d_registration->m_class_object);