diff --git a/Jet_fitting_3/examples/Jet_fitting_3/blind.C b/Jet_fitting_3/examples/Jet_fitting_3/blind.C index a14cf849083..d439fb1e1aa 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/blind.C +++ b/Jet_fitting_3/examples/Jet_fitting_3/blind.C @@ -9,8 +9,8 @@ #include -#include "../../include/CGAL/Monge_via_jet_fitting.h" -#include "../../include/CGAL/LinAlg_lapack.h" +#include +#include #include "PolyhedralSurf.h" #include "PolyhedralSurf_operations.h" @@ -70,11 +70,19 @@ typedef T_PolyhedralSurf_facet_ops Poly_facet_ops //Kernel for local computations -typedef double LFT; -typedef CGAL::Cartesian Local_Kernel; -typedef CGAL::Monge_via_jet_fitting My_Monge_via_jet_fitting; -typedef CGAL::Monge_rep My_Monge_rep; -typedef CGAL::Monge_info My_Monge_info; +// typedef double LFT; +// typedef CGAL::Cartesian Local_Kernel; +// typedef CGAL::Monge_via_jet_fitting My_Monge_via_jet_fitting; +// typedef CGAL::Monge_form My_Monge_form; +// typedef CGAL::Monge_form_condition_numbers My_Monge_form_condition_numbers; + + +typedef double LFT; +typedef CGAL::Cartesian Local_Kernel; +typedef CGAL::Monge_via_jet_fitting My_Monge_via_jet_fitting; +typedef My_Monge_via_jet_fitting::Monge_form My_Monge_form; +typedef My_Monge_via_jet_fitting::Monge_form_condition_numbers My_Monge_form_condition_numbers; + //Syntax requirred by Options static const char *const optv[] = { @@ -241,8 +249,8 @@ int main(int argc, char *argv[]) //initialize Vertex* v = &(*vitb); in_points.clear(); - My_Monge_rep monge_rep; - My_Monge_info monge_info; + My_Monge_form monge_form; + My_Monge_form_condition_numbers monge_form_condition_numbers; //gather points around the vertex using rings gather_fitting_points(v, in_points, vpm); @@ -255,18 +263,18 @@ int main(int argc, char *argv[]) // run the main fct : perform the fitting My_Monge_via_jet_fitting do_it(in_points.begin(), in_points.end(), d_fitting, d_monge, - monge_rep, monge_info); + monge_form, monge_form_condition_numbers); //switch min-max ppal curv/dir wrt the mesh orientation const DVector normal_mesh = Poly_facet_ops::compute_vertex_average_unit_normal(v, fpm); - monge_rep.comply_wrt_given_normal(normal_mesh); + monge_form.comply_wrt_given_normal(normal_mesh); //OpenGL output. Scaling for ppal dir, may be optimized with a //global mean edges length computed only once on all edges of P DFT scale_ppal_dir = Poly_hedge_ops::compute_mean_edges_length_around_vertex(v, hepm)/2; (*out_4ogl) << v->point() << " "; - monge_rep.dump_4ogl(*out_4ogl, scale_ppal_dir); + monge_form.dump_4ogl(*out_4ogl, scale_ppal_dir); //verbose txt output if (verbose) { @@ -277,8 +285,8 @@ int main(int argc, char *argv[]) (*out_verbose) << "--- vertex " << ++nb_vertices_considered << " : " << v->point() << std::endl << "number of points used : " << in_points.size() << std::endl; - monge_rep.dump_verbose(*out_verbose); - monge_info.dump_verbose(*out_verbose); + monge_form.dump_verbose(*out_verbose); + monge_form_condition_numbers.dump_verbose(*out_verbose); } } //all vertices processed diff --git a/Jet_fitting_3/examples/Jet_fitting_3/blind_1pt.C b/Jet_fitting_3/examples/Jet_fitting_3/blind_1pt.C index bef0c80faae..f408429ab3f 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/blind_1pt.C +++ b/Jet_fitting_3/examples/Jet_fitting_3/blind_1pt.C @@ -7,19 +7,18 @@ #include #include -#include "../../include/CGAL/Monge_via_jet_fitting.h" -#include "../../include/CGAL/LinAlg_lapack.h" +#include + typedef double DFT; typedef CGAL::Cartesian Data_Kernel; typedef Data_Kernel::Point_3 DPoint; -typedef CGAL::Monge_rep My_Monge_rep; typedef double LFT; typedef CGAL::Cartesian Local_Kernel; -typedef CGAL::Monge_info My_Monge_info; -typedef CGAL::Monge_via_jet_fitting My_Monge_via_jet_fitting; - +typedef CGAL::Monge_via_jet_fitting My_Monge_via_jet_fitting; +typedef My_Monge_via_jet_fitting::Monge_form My_Monge_form; +typedef My_Monge_via_jet_fitting::Monge_form_condition_numbers My_Monge_form_condition_numbers; int main(int argc, char *argv[]) { @@ -59,12 +58,12 @@ int main(int argc, char *argv[]) // fct parameters int d_fitting = std::atoi(argv[3]); int d_monge = std::atoi(argv[4]); - My_Monge_rep monge_rep; - My_Monge_info monge_info; + My_Monge_form monge_form; + My_Monge_form_condition_numbers monge_form_condition_numbers; //run the main fct My_Monge_via_jet_fitting do_it(in_points.begin(), in_points.end(), d_fitting, d_monge, - monge_rep, monge_info); + monge_form, monge_form_condition_numbers); //open a file for output char name_out[20]; @@ -82,15 +81,15 @@ int main(int argc, char *argv[]) CGAL::set_pretty_mode(outFile); outFile << "vertex : " << in_points[0] << std::endl << "number of points used : " << in_points.size() << std::endl; - monge_rep.dump_verbose(outFile); - monge_info.dump_verbose(outFile); + monge_form.dump_verbose(outFile); + monge_form_condition_numbers.dump_verbose(outFile); //OUTPUT on std::cout CGAL::set_pretty_mode(std::cout); std::cout << "vertex : " << in_points[0] << std::endl << "number of points used : " << in_points.size() << std::endl; - monge_rep.dump_verbose(std::cout); - monge_info.dump_verbose(std::cout); + monge_form.dump_verbose(std::cout); + monge_form_condition_numbers.dump_verbose(std::cout); return 1; } diff --git a/Jet_fitting_3/examples/Jet_fitting_3/makefile b/Jet_fitting_3/examples/Jet_fitting_3/makefile index 19d17d53e48..ae6aa27e45a 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/makefile +++ b/Jet_fitting_3/examples/Jet_fitting_3/makefile @@ -24,10 +24,10 @@ CXXFLAGS = \ #---------------------------------------------------------------------# # linker flags #---------------------------------------------------------------------# -F2CDIR = $(LAPACK_DIR)/F2CLIBS -LAPACK_LDLIBS = $(LAPACK_DIR)/lapack_LINUX.a \ - $(LAPACK_DIR)/blas_LINUX.a $(LAPACK_DIR)/tmglib_LINUX.a \ - $(F2CDIR)/libF77.a $(F2CDIR)/libI77.a -lm -lc +LAPACK_LDLIBS = -L$(LAPACK_DIR) -L$(LAPACK_DIR)/F2CLIBS \ + -llapack_LINUX \ + -lblas_LINUX -ltmglib_LINUX \ + -lF77 -lI77 -lm -lc LIBPATH = \ $(CGAL_LIBPATH) @@ -75,47 +75,31 @@ depend: blind_1pt.o: /usr/include/stdio.h /usr/include/features.h blind_1pt.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +blind_1pt.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h blind_1pt.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h blind_1pt.o: /usr/include/bits/typesizes.h /usr/include/libio.h blind_1pt.o: /usr/include/_G_config.h /usr/include/wchar.h blind_1pt.o: /usr/include/bits/wchar.h /usr/include/gconv.h +blind_1pt.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h blind_1pt.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h -blind_1pt.o: /usr/include/stdlib.h /usr/include/sys/types.h -blind_1pt.o: /usr/include/time.h /usr/include/endian.h -blind_1pt.o: /usr/include/bits/endian.h /usr/include/sys/select.h -blind_1pt.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -blind_1pt.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -blind_1pt.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h -blind_1pt.o: /usr/include/alloca.h ../../include/CGAL/Monge_via_jet_fitting.h -blind_1pt.o: ../../include/CGAL/jet_fitting_3_assertions.h -blind_1pt.o: /usr/include/math.h /usr/include/bits/huge_val.h -blind_1pt.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h -blind_1pt.o: ../../include/CGAL/LinAlg_lapack.h +blind_1pt.o: /usr/include/stdlib.h blind.o: /usr/include/stdio.h /usr/include/features.h blind.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +blind.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h blind.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h blind.o: /usr/include/bits/typesizes.h /usr/include/libio.h blind.o: /usr/include/_G_config.h /usr/include/wchar.h blind.o: /usr/include/bits/wchar.h /usr/include/gconv.h +blind.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h blind.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h -blind.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h -blind.o: /usr/include/endian.h /usr/include/bits/endian.h -blind.o: /usr/include/sys/select.h /usr/include/bits/select.h -blind.o: /usr/include/bits/sigset.h /usr/include/bits/time.h -blind.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h -blind.o: /usr/include/bits/sched.h /usr/include/alloca.h -blind.o: /usr/include/boost/property_map.hpp /usr/include/boost/config.hpp -blind.o: /usr/include/boost/config/user.hpp +blind.o: /usr/include/stdlib.h /usr/include/boost/property_map.hpp +blind.o: /usr/include/boost/config.hpp /usr/include/boost/config/user.hpp blind.o: /usr/include/boost/config/select_compiler_config.hpp blind.o: /usr/include/boost/config/compiler/gcc.hpp blind.o: /usr/include/boost/config/select_stdlib_config.hpp blind.o: /usr/include/boost/config/select_platform_config.hpp -blind.o: /usr/include/boost/config/posix_features.hpp /usr/include/unistd.h -blind.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h -blind.o: /usr/include/getopt.h /usr/include/boost/config/suffix.hpp -blind.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h -blind.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h -blind.o: /usr/include/bits/posix2_lim.h +blind.o: /usr/include/boost/config/suffix.hpp /usr/include/limits.h +blind.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h blind.o: /usr/include/boost/pending/cstddef.hpp blind.o: /usr/include/boost/detail/iterator.hpp /usr/include/boost/config.hpp blind.o: /usr/include/boost/concept_check.hpp /usr/include/boost/iterator.hpp @@ -163,10 +147,7 @@ blind.o: /usr/include/boost/mpl/aux_/config/lambda.hpp blind.o: /usr/include/boost/mpl/aux_/config/ttp.hpp blind.o: /usr/include/boost/mpl/aux_/config/ctps.hpp blind.o: /usr/include/boost/mpl/aux_/config/overload_resolution.hpp -blind.o: /usr/include/boost/type_traits/integral_constant.hpp blind.o: /usr/include/boost/mpl/bool.hpp /usr/include/boost/mpl/bool_fwd.hpp -blind.o: /usr/include/boost/mpl/integral_c.hpp -blind.o: /usr/include/boost/mpl/integral_c_fwd.hpp blind.o: /usr/include/boost/mpl/aux_/lambda_support.hpp blind.o: /usr/include/boost/type_traits/detail/bool_trait_undef.hpp blind.o: /usr/include/boost/type_traits/add_reference.hpp @@ -178,17 +159,7 @@ blind.o: /usr/include/boost/type_traits/detail/ice_or.hpp blind.o: /usr/include/boost/type_traits/detail/ice_and.hpp blind.o: /usr/include/boost/type_traits/detail/ice_not.hpp blind.o: /usr/include/boost/type_traits/detail/ice_eq.hpp -blind.o: /usr/include/boost/type_traits/is_arithmetic.hpp -blind.o: /usr/include/boost/type_traits/is_integral.hpp -blind.o: /usr/include/boost/type_traits/is_float.hpp -blind.o: /usr/include/boost/type_traits/is_abstract.hpp blind.o: /usr/include/boost/static_assert.hpp -blind.o: /usr/include/boost/type_traits/is_class.hpp -blind.o: /usr/include/boost/type_traits/is_union.hpp -blind.o: /usr/include/boost/type_traits/remove_cv.hpp -blind.o: /usr/include/boost/type_traits/broken_compiler_spec.hpp -blind.o: /usr/include/boost/type_traits/detail/cv_traits_impl.hpp -blind.o: /usr/include/boost/type_traits/intrinsics.hpp blind.o: /usr/include/boost/mpl/identity.hpp blind.o: /usr/include/boost/mpl/aux_/na_spec.hpp blind.o: /usr/include/boost/mpl/lambda_fwd.hpp @@ -223,12 +194,8 @@ blind.o: /usr/include/boost/preprocessor/control/detail/while.hpp blind.o: /usr/include/boost/preprocessor/tuple/elem.hpp blind.o: /usr/include/boost/preprocessor/arithmetic/sub.hpp blind.o: /usr/include/boost/mpl/aux_/config/eti.hpp -blind.o: /usr/include/boost/concept_archetype.hpp -blind.o: ../../include/CGAL/Monge_via_jet_fitting.h -blind.o: ../../include/CGAL/jet_fitting_3_assertions.h /usr/include/math.h -blind.o: /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h -blind.o: /usr/include/bits/mathcalls.h ../../include/CGAL/LinAlg_lapack.h -blind.o: PolyhedralSurf.h /usr/include/boost/graph/properties.hpp +blind.o: /usr/include/boost/concept_archetype.hpp PolyhedralSurf.h +blind.o: /usr/include/boost/graph/properties.hpp blind.o: /usr/include/boost/pending/property.hpp blind.o: /usr/include/boost/pending/ct_if.hpp blind.o: /usr/include/boost/pending/detail/property.hpp @@ -243,21 +210,23 @@ blind.o: /usr/include/boost/type_traits/add_const.hpp blind.o: /usr/include/boost/type_traits/add_volatile.hpp blind.o: /usr/include/boost/type_traits/add_cv.hpp blind.o: /usr/include/boost/type_traits/is_const.hpp +blind.o: /usr/include/boost/type_traits/detail/cv_traits_impl.hpp blind.o: /usr/include/boost/type_traits/is_volatile.hpp blind.o: /usr/include/boost/type_traits/remove_const.hpp +blind.o: /usr/include/boost/type_traits/broken_compiler_spec.hpp blind.o: /usr/include/boost/type_traits/remove_volatile.hpp +blind.o: /usr/include/boost/type_traits/remove_cv.hpp blind.o: /usr/include/boost/type_traits/function_traits.hpp blind.o: /usr/include/boost/type_traits/is_function.hpp blind.o: /usr/include/boost/type_traits/detail/false_result.hpp blind.o: /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp blind.o: /usr/include/boost/type_traits/add_pointer.hpp blind.o: /usr/include/boost/type_traits/remove_reference.hpp -blind.o: /usr/include/boost/mpl/if.hpp -blind.o: /usr/include/boost/mpl/aux_/value_wknd.hpp -blind.o: /usr/include/boost/mpl/aux_/config/integral.hpp blind.o: /usr/include/boost/iterator/iterator_categories.hpp blind.o: /usr/include/boost/iterator/detail/config_def.hpp -blind.o: /usr/include/boost/mpl/eval_if.hpp +blind.o: /usr/include/boost/mpl/eval_if.hpp /usr/include/boost/mpl/if.hpp +blind.o: /usr/include/boost/mpl/aux_/value_wknd.hpp +blind.o: /usr/include/boost/mpl/aux_/config/integral.hpp blind.o: /usr/include/boost/mpl/placeholders.hpp blind.o: /usr/include/boost/mpl/arg.hpp /usr/include/boost/mpl/arg_fwd.hpp blind.o: /usr/include/boost/mpl/aux_/na_assert.hpp @@ -281,13 +250,18 @@ blind.o: /usr/include/boost/type_traits/is_pointer.hpp blind.o: /usr/include/boost/type_traits/is_member_pointer.hpp blind.o: /usr/include/boost/type_traits/is_member_function_pointer.hpp blind.o: /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +blind.o: /usr/include/boost/type_traits/is_class.hpp +blind.o: /usr/include/boost/type_traits/is_union.hpp +blind.o: /usr/include/boost/type_traits/intrinsics.hpp blind.o: /usr/include/boost/type_traits/remove_pointer.hpp blind.o: /usr/include/boost/mpl/not.hpp blind.o: /usr/include/boost/iterator/detail/enable_if.hpp -blind.o: /usr/include/boost/implicit_cast.hpp blind.o: /usr/include/boost/type_traits/is_pod.hpp blind.o: /usr/include/boost/type_traits/is_void.hpp blind.o: /usr/include/boost/type_traits/is_scalar.hpp +blind.o: /usr/include/boost/type_traits/is_arithmetic.hpp +blind.o: /usr/include/boost/type_traits/is_integral.hpp +blind.o: /usr/include/boost/type_traits/is_float.hpp blind.o: /usr/include/boost/type_traits/is_enum.hpp blind.o: /usr/include/boost/mpl/always.hpp /usr/include/boost/mpl/apply.hpp blind.o: /usr/include/boost/mpl/apply_fwd.hpp @@ -316,6 +290,7 @@ blind.o: PolyhedralSurf_operations.h PolyhedralSurf_rings.h options.h options.o: /usr/include/ctype.h /usr/include/features.h options.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h options.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h +options.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h options.o: /usr/include/bits/typesizes.h /usr/include/endian.h options.o: /usr/include/bits/endian.h /usr/include/string.h options.h PolyhedralSurf.o: PolyhedralSurf.h /usr/include/boost/property_map.hpp @@ -325,16 +300,10 @@ PolyhedralSurf.o: /usr/include/boost/config/select_compiler_config.hpp PolyhedralSurf.o: /usr/include/boost/config/compiler/gcc.hpp PolyhedralSurf.o: /usr/include/boost/config/select_stdlib_config.hpp PolyhedralSurf.o: /usr/include/boost/config/select_platform_config.hpp -PolyhedralSurf.o: /usr/include/boost/config/posix_features.hpp -PolyhedralSurf.o: /usr/include/unistd.h /usr/include/features.h -PolyhedralSurf.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -PolyhedralSurf.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h -PolyhedralSurf.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h -PolyhedralSurf.o: /usr/include/bits/confname.h /usr/include/getopt.h PolyhedralSurf.o: /usr/include/boost/config/suffix.hpp /usr/include/limits.h -PolyhedralSurf.o: /usr/include/bits/posix1_lim.h -PolyhedralSurf.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h -PolyhedralSurf.o: /usr/include/bits/posix2_lim.h +PolyhedralSurf.o: /usr/include/features.h /usr/include/sys/cdefs.h +PolyhedralSurf.o: /usr/include/gnu/stubs.h +PolyhedralSurf.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h PolyhedralSurf.o: /usr/include/boost/pending/cstddef.hpp PolyhedralSurf.o: /usr/include/boost/detail/iterator.hpp PolyhedralSurf.o: /usr/include/boost/config.hpp @@ -385,11 +354,8 @@ PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/lambda.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/ttp.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/ctps.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/overload_resolution.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/integral_constant.hpp PolyhedralSurf.o: /usr/include/boost/mpl/bool.hpp PolyhedralSurf.o: /usr/include/boost/mpl/bool_fwd.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/integral_c.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/integral_c_fwd.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/lambda_support.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/bool_trait_undef.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_reference.hpp @@ -401,17 +367,7 @@ PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_or.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_and.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_not.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_eq.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_arithmetic.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_integral.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_float.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_abstract.hpp PolyhedralSurf.o: /usr/include/boost/static_assert.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_class.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_union.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/remove_cv.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/broken_compiler_spec.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/detail/cv_traits_impl.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/intrinsics.hpp PolyhedralSurf.o: /usr/include/boost/mpl/identity.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/na_spec.hpp PolyhedralSurf.o: /usr/include/boost/mpl/lambda_fwd.hpp @@ -463,21 +419,24 @@ PolyhedralSurf.o: /usr/include/boost/type_traits/add_const.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_volatile.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_cv.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_const.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/detail/cv_traits_impl.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_volatile.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_const.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/broken_compiler_spec.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_volatile.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/remove_cv.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/function_traits.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_function.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/false_result.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_reference.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/if.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/aux_/value_wknd.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/integral.hpp PolyhedralSurf.o: /usr/include/boost/iterator/iterator_categories.hpp PolyhedralSurf.o: /usr/include/boost/iterator/detail/config_def.hpp PolyhedralSurf.o: /usr/include/boost/mpl/eval_if.hpp +PolyhedralSurf.o: /usr/include/boost/mpl/if.hpp +PolyhedralSurf.o: /usr/include/boost/mpl/aux_/value_wknd.hpp +PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/integral.hpp PolyhedralSurf.o: /usr/include/boost/mpl/placeholders.hpp PolyhedralSurf.o: /usr/include/boost/mpl/arg.hpp PolyhedralSurf.o: /usr/include/boost/mpl/arg_fwd.hpp @@ -502,13 +461,18 @@ PolyhedralSurf.o: /usr/include/boost/type_traits/is_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_member_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_member_function_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_class.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_union.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/intrinsics.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_pointer.hpp PolyhedralSurf.o: /usr/include/boost/mpl/not.hpp PolyhedralSurf.o: /usr/include/boost/iterator/detail/enable_if.hpp -PolyhedralSurf.o: /usr/include/boost/implicit_cast.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_pod.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_void.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_scalar.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_arithmetic.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_integral.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_float.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_enum.hpp PolyhedralSurf.o: /usr/include/boost/mpl/always.hpp PolyhedralSurf.o: /usr/include/boost/mpl/apply.hpp @@ -536,16 +500,15 @@ PolyhedralSurf.o: /usr/include/boost/mpl/quote.hpp PolyhedralSurf.o: /usr/include/boost/mpl/void.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/has_type.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/template_arity.hpp -PolyhedralSurf.o: /usr/include/stdlib.h /usr/include/sys/types.h -PolyhedralSurf.o: /usr/include/time.h /usr/include/endian.h -PolyhedralSurf.o: /usr/include/bits/endian.h /usr/include/sys/select.h -PolyhedralSurf.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -PolyhedralSurf.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -PolyhedralSurf.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h -PolyhedralSurf.o: /usr/include/alloca.h /usr/include/stdio.h +PolyhedralSurf.o: /usr/include/stdlib.h +PolyhedralSurf.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h +PolyhedralSurf.o: /usr/include/stdio.h /usr/include/bits/types.h +PolyhedralSurf.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h PolyhedralSurf.o: /usr/include/libio.h /usr/include/_G_config.h PolyhedralSurf.o: /usr/include/wchar.h /usr/include/bits/wchar.h -PolyhedralSurf.o: /usr/include/gconv.h /usr/include/bits/stdio_lim.h +PolyhedralSurf.o: /usr/include/gconv.h +PolyhedralSurf.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h +PolyhedralSurf.o: /usr/include/bits/stdio_lim.h PolyhedralSurf.o: /usr/include/bits/sys_errlist.h PolyhedralSurf.o: /usr/include/boost/property_map.hpp PolyhedralSurf.o: /usr/include/boost/config.hpp @@ -554,16 +517,10 @@ PolyhedralSurf.o: /usr/include/boost/config/select_compiler_config.hpp PolyhedralSurf.o: /usr/include/boost/config/compiler/gcc.hpp PolyhedralSurf.o: /usr/include/boost/config/select_stdlib_config.hpp PolyhedralSurf.o: /usr/include/boost/config/select_platform_config.hpp -PolyhedralSurf.o: /usr/include/boost/config/posix_features.hpp -PolyhedralSurf.o: /usr/include/unistd.h /usr/include/features.h -PolyhedralSurf.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -PolyhedralSurf.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h -PolyhedralSurf.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h -PolyhedralSurf.o: /usr/include/bits/confname.h /usr/include/getopt.h PolyhedralSurf.o: /usr/include/boost/config/suffix.hpp /usr/include/limits.h -PolyhedralSurf.o: /usr/include/bits/posix1_lim.h -PolyhedralSurf.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h -PolyhedralSurf.o: /usr/include/bits/posix2_lim.h +PolyhedralSurf.o: /usr/include/features.h /usr/include/sys/cdefs.h +PolyhedralSurf.o: /usr/include/gnu/stubs.h +PolyhedralSurf.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/limits.h PolyhedralSurf.o: /usr/include/boost/pending/cstddef.hpp PolyhedralSurf.o: /usr/include/boost/detail/iterator.hpp PolyhedralSurf.o: /usr/include/boost/config.hpp @@ -614,11 +571,8 @@ PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/lambda.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/ttp.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/ctps.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/overload_resolution.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/integral_constant.hpp PolyhedralSurf.o: /usr/include/boost/mpl/bool.hpp PolyhedralSurf.o: /usr/include/boost/mpl/bool_fwd.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/integral_c.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/integral_c_fwd.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/lambda_support.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/bool_trait_undef.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_reference.hpp @@ -630,17 +584,7 @@ PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_or.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_and.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_not.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/ice_eq.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_arithmetic.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_integral.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_float.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_abstract.hpp PolyhedralSurf.o: /usr/include/boost/static_assert.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_class.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/is_union.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/remove_cv.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/broken_compiler_spec.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/detail/cv_traits_impl.hpp -PolyhedralSurf.o: /usr/include/boost/type_traits/intrinsics.hpp PolyhedralSurf.o: /usr/include/boost/mpl/identity.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/na_spec.hpp PolyhedralSurf.o: /usr/include/boost/mpl/lambda_fwd.hpp @@ -692,21 +636,24 @@ PolyhedralSurf.o: /usr/include/boost/type_traits/add_const.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_volatile.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_cv.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_const.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/detail/cv_traits_impl.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_volatile.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_const.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/broken_compiler_spec.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_volatile.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/remove_cv.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/function_traits.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_function.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/false_result.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/is_function_ptr_helper.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/add_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_reference.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/if.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/aux_/value_wknd.hpp -PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/integral.hpp PolyhedralSurf.o: /usr/include/boost/iterator/iterator_categories.hpp PolyhedralSurf.o: /usr/include/boost/iterator/detail/config_def.hpp PolyhedralSurf.o: /usr/include/boost/mpl/eval_if.hpp +PolyhedralSurf.o: /usr/include/boost/mpl/if.hpp +PolyhedralSurf.o: /usr/include/boost/mpl/aux_/value_wknd.hpp +PolyhedralSurf.o: /usr/include/boost/mpl/aux_/config/integral.hpp PolyhedralSurf.o: /usr/include/boost/mpl/placeholders.hpp PolyhedralSurf.o: /usr/include/boost/mpl/arg.hpp PolyhedralSurf.o: /usr/include/boost/mpl/arg_fwd.hpp @@ -731,13 +678,18 @@ PolyhedralSurf.o: /usr/include/boost/type_traits/is_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_member_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_member_function_pointer.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_class.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_union.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/intrinsics.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/remove_pointer.hpp PolyhedralSurf.o: /usr/include/boost/mpl/not.hpp PolyhedralSurf.o: /usr/include/boost/iterator/detail/enable_if.hpp -PolyhedralSurf.o: /usr/include/boost/implicit_cast.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_pod.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_void.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_scalar.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_arithmetic.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_integral.hpp +PolyhedralSurf.o: /usr/include/boost/type_traits/is_float.hpp PolyhedralSurf.o: /usr/include/boost/type_traits/is_enum.hpp PolyhedralSurf.o: /usr/include/boost/mpl/always.hpp PolyhedralSurf.o: /usr/include/boost/mpl/apply.hpp @@ -765,14 +717,13 @@ PolyhedralSurf.o: /usr/include/boost/mpl/quote.hpp PolyhedralSurf.o: /usr/include/boost/mpl/void.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/has_type.hpp PolyhedralSurf.o: /usr/include/boost/mpl/aux_/template_arity.hpp -PolyhedralSurf.o: /usr/include/stdlib.h /usr/include/sys/types.h -PolyhedralSurf.o: /usr/include/time.h /usr/include/endian.h -PolyhedralSurf.o: /usr/include/bits/endian.h /usr/include/sys/select.h -PolyhedralSurf.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -PolyhedralSurf.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -PolyhedralSurf.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h -PolyhedralSurf.o: /usr/include/alloca.h /usr/include/stdio.h +PolyhedralSurf.o: /usr/include/stdlib.h +PolyhedralSurf.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stddef.h +PolyhedralSurf.o: /usr/include/stdio.h /usr/include/bits/types.h +PolyhedralSurf.o: /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h PolyhedralSurf.o: /usr/include/libio.h /usr/include/_G_config.h PolyhedralSurf.o: /usr/include/wchar.h /usr/include/bits/wchar.h -PolyhedralSurf.o: /usr/include/gconv.h /usr/include/bits/stdio_lim.h +PolyhedralSurf.o: /usr/include/gconv.h +PolyhedralSurf.o: /usr/lib/gcc/i386-redhat-linux/3.4.4/include/stdarg.h +PolyhedralSurf.o: /usr/include/bits/stdio_lim.h PolyhedralSurf.o: /usr/include/bits/sys_errlist.h diff --git a/Jet_fitting_3/include/CGAL/LinAlg_lapack.h b/Jet_fitting_3/include/CGAL/Lapack/Linear_algebra_lapack.h similarity index 96% rename from Jet_fitting_3/include/CGAL/LinAlg_lapack.h rename to Jet_fitting_3/include/CGAL/Lapack/Linear_algebra_lapack.h index 1f9d6cc9dc3..9105b4c0ba4 100644 --- a/Jet_fitting_3/include/CGAL/LinAlg_lapack.h +++ b/Jet_fitting_3/include/CGAL/Lapack/Linear_algebra_lapack.h @@ -1,5 +1,5 @@ -#ifndef _LAPACK_H_ -#define _LAPACK_H_ +#ifndef CGAL_LAPACK_H +#define CGAL_LAPACK_H #include #include "blaswrap.h" @@ -8,6 +8,7 @@ extern "C" { #include "clapack.h" } +namespace CGAL { ////////////////////////class Lapack_matrix///////////////////// //in Lapack, matrices are one-dimensional arrays // and elements are column-major ordered @@ -107,4 +108,6 @@ void Lapack::solve_ls_svd_algo(Matrix& M, double* B, double &cond_nb) free(work); } -#endif +} // namespace CGAL + +#endif // CGAL_LAPACK_H diff --git a/Jet_fitting_3/include/CGAL/Monge_via_jet_fitting.h b/Jet_fitting_3/include/CGAL/Monge_via_jet_fitting.h index 1e7cd25f8ac..8f92622c058 100644 --- a/Jet_fitting_3/include/CGAL/Monge_via_jet_fitting.h +++ b/Jet_fitting_3/include/CGAL/Monge_via_jet_fitting.h @@ -1,10 +1,11 @@ #ifndef _MONGE_VIA_JET_FITTING_H_ #define _MONGE_VIA_JET_FITTING_H_ -#include +#include #include #include -#include "jet_fitting_3_assertions.h" +#include +#include //#include //for ALTERNATIVE with CGAL eigen code @@ -12,15 +13,22 @@ CGAL_BEGIN_NAMESPACE -int fact(int n) -{ - if (n == 0) - return(1); - return(n * fact(n-1)); +// int fact(int n) +// { +// if (n == 0) +// return(1); +// return(n * fact(n-1)); +// } + +unsigned int fact(unsigned int n){ + unsigned int i, p=1; + for(i=2; i<=n; i++) p *= i; + return p; } -////////////////////// CLASS Monge_rep //////////////////////// + +////////////////////// CLASS Monge_form //////////////////////// template -class Monge_rep { +class Monge_form { public: typedef typename DataKernel::FT DFT; typedef typename DataKernel::Point_3 DPoint; @@ -40,14 +48,14 @@ protected: public: //constructor - Monge_rep() { + Monge_form() { m_origin_pt = DPoint(0.,0.,0.); m_d1 = DVector(0.,0.,0.); m_d2 = DVector(0.,0.,0.); m_n = DVector(0.,0.,0.); m_coefficients = std::vector(); } - ~Monge_rep() {} + ~Monge_form() {} //access const DPoint origin_pt() const { return m_origin_pt; } DPoint& origin_pt() { return m_origin_pt; } @@ -73,14 +81,14 @@ public: }; template -void Monge_rep:: +void Monge_form:: set_up(int degree) { if ( degree >= 2 ) std::fill_n(back_inserter(m_coefficients), (degree+1)*(degree+2)/2-4, 0.); } template -void Monge_rep:: +void Monge_form:: comply_wrt_given_normal(const DVector given_normal) { if ( given_normal*this->n() < 0 ) @@ -102,7 +110,7 @@ comply_wrt_given_normal(const DVector given_normal) } template -void Monge_rep:: +void Monge_form:: dump_verbose(std::ostream& out_stream) { out_stream << "origin : " << origin_pt() << std::endl @@ -139,7 +147,7 @@ dump_verbose(std::ostream& out_stream) } template -void Monge_rep:: +void Monge_form:: dump_4ogl(std::ostream& out_stream, const DFT scale) { CGAL_precondition( coefficients().size() >= 2 ); @@ -151,9 +159,9 @@ dump_4ogl(std::ostream& out_stream, const DFT scale) << std::endl; } -////////////////////// CLASS Monge_info //////////////////////// +////////////////////// CLASS Monge_form_condition_numbers //////////////////////// template -class Monge_info { +class Monge_form_condition_numbers { public: typedef typename LocalKernel::FT LFT; typedef typename LocalKernel::Vector_3 LVector; @@ -164,7 +172,7 @@ protected: public: //constructor - Monge_info() { + Monge_form_condition_numbers() { m_cond_nb = 0.; std::fill_n(m_pca_eigen_vals, 3, 0.); std::fill_n(m_pca_eigen_vecs, 3, LVector()); @@ -182,7 +190,7 @@ public: template -void Monge_info:: +void Monge_form_condition_numbers:: dump_verbose(std::ostream& out_stream) { out_stream << "cond_nb : " << cond_nb() << std::endl @@ -196,21 +204,21 @@ dump_verbose(std::ostream& out_stream) } - ////////////////////// CLASS Monge_via_jet_fitting //////////////////////// -template < class DataKernel, class LocalKernel, class LinAlgTraits> +template < class DataKernel, class LocalKernel = Cartesian, class LinAlgTraits = Lapack> class Monge_via_jet_fitting { public: typedef DataKernel Data_Kernel; typedef LocalKernel Local_Kernel; typedef typename std::vector::iterator Range_Iterator; - typedef Monge_rep Monge_rep; - typedef Monge_info Monge_info; + typedef Monge_form Monge_form; + typedef Monge_form_condition_numbers Monge_form_condition_numbers; + public: Monge_via_jet_fitting(Range_Iterator begin, Range_Iterator end, int d, int dprime, - Monge_rep &monge_rep, Monge_info &monge_info); + Monge_form &monge_form, Monge_form_condition_numbers &monge_form_condition_numbers); protected: typedef typename Local_Kernel::FT LFT; @@ -240,10 +248,10 @@ protected: Aff_transformation translate_p0, change_world2fitting, change_fitting2monge; - //eigen val and vect stored in monge_info, + //eigen val and vect stored in monge_form_condition_numbers, // change_world2fitting is computed void compute_PCA(Range_Iterator begin, Range_Iterator end, - Monge_info &monge_info); + Monge_form_condition_numbers &monge_form_condition_numbers); //Coordinates of input points are computed in the fitting basis with // p0 as origin. @@ -253,18 +261,18 @@ protected: //A is computed, solving MA=Z in the ls sense, the solution A is stored in Z //Preconditionning is needed - //the condition number of the matrix M is stored in monge_info - void solve_linear_system(LAMatrix &M, LFT* Z, Monge_info& monge_info); + //the condition number of the matrix M is stored in monge_form_condition_numbers + void solve_linear_system(LAMatrix &M, LFT* Z, Monge_form_condition_numbers& monge_form_condition_numbers); //Classical differential geometric calculus //change_fitting2monge is computed //if deg_monge =1 only 1st order info //if deg_monge >= 2 2nd order info are computed - void compute_Monge_basis(const LFT* A, Monge_rep& monge_rep); + void compute_Monge_basis(const LFT* A, Monge_form& monge_form); //if deg_monge >=3 then 3rd (and 4th) order info are computed void compute_Monge_coefficients(LFT* A, int dprime, - Monge_rep& monge_rep); + Monge_form& monge_form); //for a trihedron (v1,v2,v3) switches v1 to -v1 if det(v1,v2,v3) < 0 void switch_to_direct_orientation(LVector& v1, const LVector& v2, @@ -279,8 +287,8 @@ template < class DataKernel, class LocalKernel, class LinAlgTraits> Monge_via_jet_fitting:: Monge_via_jet_fitting(Range_Iterator begin, Range_Iterator end, int d, int dprime, - Monge_rep& monge_rep, - Monge_info& monge_info) + Monge_form& monge_form, + Monge_form_condition_numbers& monge_form_condition_numbers) { // precondition: on the degrees, jet and monge CGAL_precondition( (d >=1) && (dprime >= 1) @@ -293,22 +301,22 @@ Monge_via_jet_fitting(Range_Iterator begin, Range_Iterator end, CGAL_precondition( nb_input_pts >= nb_d_jet_coeff ); //Initialize - monge_rep.set_up(dprime); + monge_form.set_up(dprime); //for the system MA=Z LAMatrix M(nb_input_pts, nb_d_jet_coeff); LFT* Z = (LFT*) malloc(nb_input_pts*sizeof(LFT)); - compute_PCA(begin, end, monge_info); + compute_PCA(begin, end, monge_form_condition_numbers); fill_matrix(begin, end, d, M, Z);//with precond - solve_linear_system(M, Z, monge_info); //correct with precond - compute_Monge_basis(Z, monge_rep); - if ( dprime >= 3) compute_Monge_coefficients(Z, dprime, monge_rep); + solve_linear_system(M, Z, monge_form_condition_numbers); //correct with precond + compute_Monge_basis(Z, monge_form); + if ( dprime >= 3) compute_Monge_coefficients(Z, dprime, monge_form); } template < class DataKernel, class LocalKernel, class LinAlgTraits> void Monge_via_jet_fitting:: compute_PCA(Range_Iterator begin, Range_Iterator end, - Monge_info &monge_info) + Monge_form_condition_numbers &monge_form_condition_numbers) { LAMatrix Cov(3,3); LFT* eval = (LFT*) malloc(3*sizeof(LFT)); @@ -356,25 +364,25 @@ compute_PCA(Range_Iterator begin, Range_Iterator end, // eigen vectors are sorted in accordance. LinAlgTraits::eigen_symm_algo(Cov, eval, evec); - //store in monge_info, pca eigenvalues are stored in descending order - monge_info.pca_eigen_vals()[0] = eval[2];//implicit cast LAFT->LFT + //store in monge_form_condition_numbers, pca eigenvalues are stored in descending order + monge_form_condition_numbers.pca_eigen_vals()[0] = eval[2];//implicit cast LAFT->LFT LVector temp_vectn(evec.get_elt(0,2),evec.get_elt(1,2),evec.get_elt(2,2)); - monge_info.pca_eigen_vecs()[0] = temp_vectn; + monge_form_condition_numbers.pca_eigen_vecs()[0] = temp_vectn; - monge_info.pca_eigen_vals()[1] = eval[1]; + monge_form_condition_numbers.pca_eigen_vals()[1] = eval[1]; LVector temp_vect1(evec.get_elt(0,1),evec.get_elt(1,1),evec.get_elt(2,1)); - monge_info.pca_eigen_vecs()[1] = temp_vect1; + monge_form_condition_numbers.pca_eigen_vecs()[1] = temp_vect1; - monge_info.pca_eigen_vals()[2] = eval[0]; + monge_form_condition_numbers.pca_eigen_vals()[2] = eval[0]; LVector temp_vect2(evec.get_elt(0,0),evec.get_elt(1,0),evec.get_elt(2,0)); - monge_info.pca_eigen_vecs()[2] = temp_vect2; + monge_form_condition_numbers.pca_eigen_vecs()[2] = temp_vect2; - switch_to_direct_orientation(monge_info.pca_eigen_vecs()[0], - monge_info.pca_eigen_vecs()[1], - monge_info.pca_eigen_vecs()[2]); + switch_to_direct_orientation(monge_form_condition_numbers.pca_eigen_vecs()[0], + monge_form_condition_numbers.pca_eigen_vecs()[1], + monge_form_condition_numbers.pca_eigen_vecs()[2]); //Store the change of basis W->F - const LVector* pca_vecs = monge_info.pca_eigen_vecs(); + const LVector* pca_vecs = monge_form_condition_numbers.pca_eigen_vecs(); Aff_transformation change_basis (pca_vecs[0][0], pca_vecs[0][1], pca_vecs[0][2], pca_vecs[1][0], pca_vecs[1][1], pca_vecs[1][2], @@ -382,7 +390,7 @@ compute_PCA(Range_Iterator begin, Range_Iterator end, this->change_world2fitting = change_basis; /* //debug //test the old method, fitting basis is a permutation of the world basis */ -/* const LVector* pca_vecs = monge_info.pca_eigen_vecs(); */ +/* const LVector* pca_vecs = monge_form_condition_numbers.pca_eigen_vecs(); */ /* const LVector n_pca = pca_vecs[2]; */ /* int index_max=0; */ /* x = std::fabs(n_pca[0]); y = std::fabs(n_pca[1]); z = std::fabs(n_pca[2]); */ @@ -449,16 +457,16 @@ fill_matrix(Range_Iterator begin, Range_Iterator end, template < class DataKernel, class LocalKernel, class LinAlgTraits> void Monge_via_jet_fitting:: -solve_linear_system(LAMatrix &M, LFT* Z, Monge_info& monge_info) +solve_linear_system(LAMatrix &M, LFT* Z, Monge_form_condition_numbers& monge_form_condition_numbers) { - LinAlgTraits::solve_ls_svd_algo(M, Z, monge_info.cond_nb()); + LinAlgTraits::solve_ls_svd_algo(M, Z, monge_form_condition_numbers.cond_nb()); for (int k=0; k <= this->deg; k++) for (int i=0; i<=k; i++) Z[k*(k+1)/2+i] /= std::pow(this->preconditionning,k); } template < class DataKernel, class LocalKernel, class LinAlgTraits> void Monge_via_jet_fitting:: -compute_Monge_basis(const LFT* A, Monge_rep& monge_rep) +compute_Monge_basis(const LFT* A, Monge_form& monge_form) { // only 1st order info. if ( this->deg_monge == 1 ) { @@ -466,10 +474,10 @@ compute_Monge_basis(const LFT* A, Monge_rep& monge_rep) LVector normal(-A[1], -A[2], 1.); LFT norm2 = normal * normal; normal = normal / Lsqrt(norm2); - monge_rep.origin_pt() = + monge_form.origin_pt() = (this->translate_p0.inverse() * this->change_world2fitting.inverse()) (orig_monge ); - monge_rep.n() = this->change_world2fitting.inverse()(normal); + monge_form.n() = this->change_world2fitting.inverse()(normal); } // else (deg_monge >= 2) then 2nd order info are computed else { @@ -538,14 +546,14 @@ compute_Monge_basis(const LFT* A, Monge_rep& monge_rep) //store the monge basis origin and vectors with their world coord //store ppal curv - monge_rep.origin_pt() = + monge_form.origin_pt() = (this->translate_p0.inverse() * this->change_world2fitting.inverse()) (orig_monge ); - monge_rep.d1() = this->change_world2fitting.inverse()(d_max); - monge_rep.d2() = this->change_world2fitting.inverse()(d_min); - monge_rep.n() = this->change_world2fitting.inverse()(normal); - monge_rep.coefficients()[0] = eval[1]; - monge_rep.coefficients()[1] = eval[0]; + monge_form.d1() = this->change_world2fitting.inverse()(d_max); + monge_form.d2() = this->change_world2fitting.inverse()(d_min); + monge_form.n() = this->change_world2fitting.inverse()(normal); + monge_form.coefficients()[0] = eval[1]; + monge_form.coefficients()[1] = eval[0]; } //end else } @@ -553,7 +561,7 @@ compute_Monge_basis(const LFT* A, Monge_rep& monge_rep) template < class DataKernel, class LocalKernel, class LinAlgTraits> void Monge_via_jet_fitting:: compute_Monge_coefficients(LFT* A, int dprime, - Monge_rep& monge_rep) + Monge_form& monge_form) { //One has the equation w=J_A(u,v) of the fitted surface S // in the fitting_basis @@ -683,10 +691,10 @@ compute_Monge_coefficients(LFT* A, int dprime, LFT b2 = 1/(f3*f3)*(-f122*f3+f13*f22); LFT b3 = -1/(f3*f3)*(f222*f3-3*f23*f22); - monge_rep.coefficients()[2] = b0; - monge_rep.coefficients()[3] = b1; - monge_rep.coefficients()[4] = b2; - monge_rep.coefficients()[5] = b3; + monge_form.coefficients()[2] = b0; + monge_form.coefficients()[3] = b1; + monge_form.coefficients()[4] = b2; + monge_form.coefficients()[5] = b3; if ( dprime == 4 ) { @@ -742,11 +750,11 @@ compute_Monge_coefficients(LFT* A, int dprime, LFT c4 = -1/(f3*f3*f3)*(f2222*(f3*f3)+3*f33*f22*f22-6*f223*f3*f22-4*f23*f3*f222+12*f23*f23*f22) ; - monge_rep.coefficients()[6] = c0; - monge_rep.coefficients()[7] = c1; - monge_rep.coefficients()[8] = c2; - monge_rep.coefficients()[9] = c3; - monge_rep.coefficients()[10] = c4; + monge_form.coefficients()[6] = c0; + monge_form.coefficients()[7] = c1; + monge_form.coefficients()[8] = c2; + monge_form.coefficients()[9] = c3; + monge_form.coefficients()[10] = c4; } }