Commit Graph

251 Commits

Author SHA1 Message Date
Sébastien Loriot 7ecfe2a1c0 update concept name 2013-04-12 17:07:43 +02:00
iyaz 2581657045 Merge branch 'Surface_modeling-new_package-GF' of ssh://scm.cgal.org/var/git/cgal into Surface_modeling-new_package-GF 2013-04-10 19:33:39 +03:00
iyaz 785aea21c6 A new model of SVDHelper_3 is added in order to test SVD in http://pages.cs.wisc.edu/~sifakis/project_pages/svd.html
To activate new model define USE_FAST_SVD_EXPERIMENTAL in/before Deform_mesh.h
As far as I test, it is ~3x faster than EigenSVD, and you notice speed-up in demo easily (since it makes whole deformation ~2x fast)
-- not sure about possible compilation problems
2013-04-10 19:31:45 +03:00
Sébastien Loriot a14a4812a2 update doc of Eigen_SVD_helper_3
all the public member should be hidden as it's just the implementation
of the concept
2013-04-10 17:59:47 +02:00
iyaz 664a4e9aa7 Transfer Eigen_SVD_helper_3.h to include/CGAL 2013-04-10 17:57:24 +03:00
iyaz 5de0a8b598 Including default parameters for linear solver and SVD solver.
Related changes in demo, and test case.
Also removed Property_maps_for_edit_plugin.h which was somewhat useless.
-- Going to update examples, once API becomes more certain.
2013-04-10 16:56:17 +03:00
iyaz 45f170b9a6 change in SVDHelper concept (and model):
separate smallest singular value index calculation from 'compute'
2013-04-10 00:44:54 +03:00
iyaz 4805f2bfc4 New concept introduced for SVD computations: SVDHelper_3 and model of it Eigen_SVD_helper_3
For now I places Eigen_SVD_helper_3 under internal directory of Surface_modeling
2013-04-09 22:23:06 +03:00
Sébastien Loriot 18f2bd74c5 update copyright date and author list 2013-04-09 10:43:08 +02:00
Andreas Fabri 2dc9e77e2b typos,wording,LaTeX 2013-04-09 10:06:22 +02:00
iyaz 52fbbdf049 Mixim upper case, fixed 2013-04-07 17:10:11 +03:00
iyaz 596f93f85a Small refinements on ref-man. 2013-04-07 17:08:08 +03:00
iyaz 60286aa952 Reference manual refinements 2013-04-04 18:18:52 +03:00
iyaz c7547ce8ee fix member initialization order 2013-04-04 00:44:32 +03:00
iyaz ba0a0f52e9 tag -> TAG in documentation 2013-04-04 00:41:45 +03:00
Sébastien Loriot ce6ed9b51f fix initialization order of member objects 2013-04-03 14:31:42 +02:00
iyaz 4bca660454 Separating preprocess into two sub-preprocess: region_of_solution and factorization
Main reason is that some parts only need one of them to be ready to work, but we were preprocessing both two subs.
2013-04-03 14:48:33 +03:00
iyaz b3d624e3f5 Fixing warnings 2013-04-03 14:04:52 +03:00
Sébastien Loriot c102838776 enhance the description of translate, rotate and deform 2013-04-03 11:18:19 +02:00
Sébastien Loriot cc356eb368 hide default weight calculator 2013-04-03 09:39:13 +02:00
Sébastien Loriot cb031439f1 shorten template parameter names to prettify the documentation 2013-04-03 09:21:27 +02:00
Sébastien Loriot f0423d555f fix order initialization warnings 2013-04-03 09:03:46 +02:00
Sébastien Loriot 52de2d5d08 change override to overwrite 2013-04-03 08:51:26 +02:00
Sébastien Loriot 1cd2687e41 add missing typename 2013-04-03 08:27:59 +02:00
iyaz 671b0c4bcb return last result in preprocess 2013-04-03 02:06:54 +03:00
iyaz 11b69e0104 Introducing override function. 2013-04-03 02:01:41 +03:00
iyaz abafa5efc1 Adding last_preprocess_successful
(deliberately created a new bool and not used need_preprocess because it will not be clear)
2013-04-02 22:55:05 +03:00
iyaz c631f0a9f2 Documentation improvement (rotate & translate) and renaming (deformation_type) 2013-04-02 17:49:44 +03:00
iyaz db1ac5c975 Changes according to API discussion 2 2013-04-02 15:38:06 +03:00
iyaz acfc6bb9f8 a typo fixed 2013-04-02 13:18:41 +03:00
Sébastien Loriot 338c019dcd make a pass on the reference manual 2013-04-02 11:45:31 +02:00
iyaz 3393f262a2 returning std::pair instead of boost::tuple 2013-04-01 13:30:58 +03:00
iyaz 411a1f21e5 Fixing spelling errors in comments 2013-04-01 02:22:23 +03:00
iyaz 22087f0770 make priv member comments doxygen style 2013-04-01 02:04:58 +03:00
iyaz 2e02eb5afd Fixing names of template parameters and their typedefs 2013-03-31 16:23:57 +03:00
iyaz e58d84f0c4 Remove storing all original positions 2013-03-30 18:51:45 +02:00
iyaz 800ec349fb Fixin iterator names and comments 2013-03-29 19:35:24 +02:00
iyaz 093038bc8b Ref manual refinements 2013-03-29 03:56:24 +02:00
iyaz 2e1b6601aa Mostly documentation/code improvements. 2013-03-28 03:32:36 +02:00
iyaz 2166d7d6ce API changes,
now edge weights are computed for all edges in constructor,
original positions of vertices are saved in constructor,
Documentation is coming tomorrow
2013-03-27 02:28:23 +02:00
iyaz 87676dbbbe Reintroduce roi vector 2013-03-22 02:27:37 +02:00
iyaz 971dba606f Added functions returning iterators for handles and handle groups 2013-03-20 23:01:17 +02:00
iyaz 189106307c Make deformation type (spokes_rims or original) template parameter,
a few refinements on documentation
2013-03-20 13:46:05 +02:00
iyaz e77910c423 Making preprocess call optional (it is called if there is any need to)
Make the copy constructor private
2013-03-19 16:18:30 +02:00
Sébastien Loriot 3e02fc24b9 add example file and document parameters 2013-03-18 18:11:46 +01:00
iyaz 32830d90cc WeightCalculator is now just a part of preprocess function 2013-03-18 16:30:35 +02:00
iyaz a290b93c31 Change SurfaceModelingWeightCalculator concept 2013-03-18 13:35:44 +02:00
iyaz 927cbc2c6e Documentation refinements,
Unused functions are removed
2013-03-18 02:09:13 +02:00
iyaz fc14a32566 Removed previous version of rims,
For simplifying code, Cgal vector + Eigen matrix arithmetics are changes to Eigen Vector + Matrix, now at least code is more readable & short,
Completed the new version of rims (include energy function),
Clean the code (parts which corresponds to Eq.s are commented in this way)
Previous version assumes ros vertices are sorted according to their ids, now it is not an issue (order of vertices in ros std::vector can be any).
2013-03-13 22:43:04 +02:00
iyaz 708162cf79 Put rims iterator into namespace 2013-03-13 01:40:57 +02:00
iyaz e11568810b Change weight computation of rims
(also compute opp edges)
2013-03-12 01:10:02 +02:00
iyaz bae5971dd1 Added a new spokes and rims version 2013-03-12 00:44:00 +02:00
iyaz e638fe19ae In SVD calculation, removed unnecessary search of minimum eigenvalue, since they are sorted already 2013-03-11 15:08:22 +02:00
iyaz 71c652538f Merge branch 'Surface_modeling-new_package-GF' of ssh://scm.cgal.org/var/git/cgal into Surface_modeling-new_package-GF 2013-03-11 12:10:47 +02:00
iyaz ca54dfe303 Code & documentation improvement 2013-03-11 12:08:57 +02:00
Sébastien Loriot 571ea185b4 fix compilation error and warnings 2013-03-09 09:49:03 +01:00
iyaz 4ccc5b8690 Remove forgotten debug related code 2013-03-09 03:22:02 +02:00
iyaz c206dcd6fb Removed forgotten debug related code 2013-03-09 03:19:29 +02:00
iyaz de332821bc Added a new function assign
A few documentation improvements
-- Need to write test cases for each function soon
2013-03-09 03:13:52 +02:00
Sébastien Loriot c8deb29d63 fix copmilation issue in the demo and remove a initialization order warning 2013-03-08 11:41:38 +01:00
iyaz 5986e4c351 Added a simple function move(handles, target positions) 2013-03-07 19:21:45 +02:00
iyaz bb19e3d809 Introduced spoke-rim iterator to eliminate code duplication
Documentation improved
Energy function for rims added
2013-03-07 00:36:27 +02:00
iyaz b75edcad9c A minor naming change 2013-02-28 19:21:06 +02:00
iyaz 60e5fac453 Removing zero initialization requirement on index maps,
Now index maps can be read write maps (whether initialized with some value or not does not matter)
2013-02-28 19:05:21 +02:00
iyaz 19cd8e2104 Documenetation changes 2013-02-28 14:59:56 +02:00
Sébastien Loriot 60cf501f98 add missing typename 2013-02-28 12:32:36 +01:00
iyaz 2540ec136d Moving internal class to its own directory 2013-02-28 12:15:47 +02:00
iyaz fcd8d1f3c4 API related improvements, doxygen style commenting (will be improved) 2013-02-28 02:01:12 +02:00
iyaz 6f15306ce4 Simple precondition for checking whether 'preprocess' is called before deformation is added 2013-02-27 01:19:02 +02:00
iyaz 949d0ca112 Spokes and rims implementation is added,
A clamped version of cotangent weight and uniform weight are added.
2013-02-27 00:52:28 +02:00
iyaz b725285b29 Added rims part again (previous version had a bug, corrected it).
On weights, added cotangent weight implementation which is invariant under edge orientation (a->b vs b->a returns the same weight which is expected), (previous version was returning slightly different weights), and some more improvements (added an alternative (most prob faster) implementation for tan(Q/2))
2013-02-23 04:20:03 +02:00
iyaz 9a5b5f22d5 Separating weight calculation. Added a new weight (with small modifications) called from [Mullen08]. 2013-02-21 18:14:12 +02:00
Sébastien Loriot ab27458311 add documentation canvas for surface modeling 2013-02-20 08:44:32 +01:00
Sébastien Loriot f52883dd55 boost property_map put and get functions don't need to be in boost namespace
if the global functions are in a namespace, the property map needs to
be in the same namespace
2013-02-18 17:11:34 +01:00
Ilker O. Yaz 5a815504a3 Removing spokes_and_rims related code. 2013-02-18 17:17:45 +02:00
Ilker O. Yaz 618720782b Changing implementation to work with asymmetric weights,
Solving asymmetric result problem.
2013-02-18 15:26:19 +02:00
Ilker O. Yaz 9b73580829 Added implementation for spokes and rims.
More work on ROI friendly implementation.
2013-02-14 00:39:20 +02:00
Ilker O. Yaz fa35e8506b Making implementation ROI friendly,
Adding a custom pmap which can be useful for deforming large polys with small ROIs,
-------
Main change is now internal storage size only depends on ROI.
We pass on all vertices/edges for once in constructor to initialize index pmaps.
This part should be removed since it iterates over all vertices, we can achieve that by a requiring that supplied vertex_index_map, and edge_index_map should be filled by 0.
So the question is how can it be different than looping over all vertices ?
The user might provide a custom pmap, such as Polyhedron_vertex_zero_default_index_map, (added in demo Property_maps_for_edit_plugin.h) which use an internal map and returns 0 for not found keys (so no actual initialization takes place).
2013-02-13 18:00:55 +02:00
Andreas Fabri 1c1ade6579 put parenthesis around max for VC++ 2013-02-11 19:36:45 +01:00
Sébastien Loriot 600fed1a54 initialize a std::size_t to max() instead of -1
follow up of b641753c0c
2013-02-11 10:42:27 +01:00
Sébastien Loriot 0fd82df3a9 do not write twice the coefficient 2013-02-11 10:26:10 +01:00
Sébastien Loriot 2d456057f6 accomodate changes due to merging from next 2012-03-26 15:22:16 +00:00
Sébastien Loriot b641753c0c change int to std::size_t 2012-03-26 10:56:26 +00:00
Sébastien Loriot d52b803ef3 dos2unix 2012-03-26 10:55:12 +00:00
Andreas Fabri ac17a0175d Rename in the API of Deform_mesh; Removal of the k-neighborhhod function 2011-09-15 14:39:00 +00:00
Andreas Fabri 1624c25ad0 Add a rotational deformation; Cleanup of propertymaps; Pass polyhedrin as reference and not as pointer 2011-09-15 14:03:07 +00:00
Andreas Fabri 41707d2265 Conditionally add code for rotational deformations 2011-09-15 13:23:40 +00:00
Andreas Fabri a8c7965d79 Bugfix in unused code 2011-09-09 08:24:02 +00:00
Andreas Fabri 8982e98bb5 The matrix is not necessarily symmetric 2011-09-06 16:40:35 +00:00
Andreas Fabri d5110f746a Pull variable out of a loop, and avoid construction of intermediate Vector 2011-09-05 13:51:51 +00:00
Andreas Fabri f0acf7daad -1.0 * becomes - 2011-09-05 09:43:09 +00:00
Andreas Fabri ba1b84482e Avoid a copy of the polyhedron 2011-09-05 09:41:04 +00:00
Sébastien Loriot 26c2a15055 warning signed vs unsigned int 2011-09-02 14:16:41 +00:00
Sébastien Loriot 26e04f1bac unqualified called to get and put (use Koening lookup) 2011-09-02 14:09:30 +00:00
Andreas Fabri a484a1c132 Remove dead code 2011-08-31 10:06:31 +00:00
Andreas Fabri 50acd0120b Use Matrix3::setIdentity() 2011-08-31 09:19:05 +00:00
Andreas Fabri 5467cfd6be Use Matrix3D::setZero() ; Eliminate dead code 2011-08-31 08:36:22 +00:00
Andreas Fabri 05fda9254a Remove dead code 2011-08-30 16:36:06 +00:00
Andreas Fabri b67843d628 Add const& 2011-08-30 16:05:44 +00:00
Andreas Fabri e2e3f9e6dc Compute mean_value for opposite edge directly to avoid another call to cot_weight 2011-08-30 15:24:56 +00:00
Andreas Fabri 67f94d83fe Add const and/or const& 2011-08-30 15:18:19 +00:00
Andreas Fabri 20be1c6ddc Add license header 2011-08-30 15:02:28 +00:00
Andreas Fabri 95d0a14bcf rename class Deform_mesh_BGL to Deform_mesh 2011-08-30 14:56:54 +00:00
Andreas Fabri c817936c75 rename Deform_mesh_BGL.h to Deform_mesh.h 2011-08-30 14:55:58 +00:00
Andreas Fabri 19031f1b51 remove outdated file 2011-08-30 14:55:11 +00:00
Andreas Fabri 57d62e3471 reindent 2011-08-30 13:52:20 +00:00
Andreas Fabri c0b5304844 Removed code review comments 2011-08-22 11:28:02 +00:00
Andreas Fabri 9b6c73950b reindent 2011-08-22 10:52:29 +00:00
Andreas Fabri f2ad344e59 reindent 2011-08-22 10:51:09 +00:00
Andreas Fabri 74389075e6 Remove code-review comments 2011-08-22 10:39:51 +00:00
Andreas Fabri fb80f36221 Remove #undef 2011-08-22 10:34:09 +00:00
Andreas Fabri f5f2576e58 Remove #undef; cleanup of EXPERIMENTAL 2011-08-22 10:33:28 +00:00
Yin Xu 5fd8a4df2a fixed the bug of polar decomposition method 2011-08-20 08:44:13 +00:00
Yin Xu ea91c4e984 code consolidation 2011-08-19 08:12:54 +00:00
Yin Xu f5419ffe4e code consolidation 2011-08-13 14:50:50 +00:00
Yin Xu d40a7827a9 stable version up to benchmark of optimal rotations 2011-08-08 14:44:52 +00:00
Yin Xu 6d0646dd9c tiny fix 2011-08-05 14:17:46 +00:00
Yin Xu b746da91f2 update usage scenario and benchmark of optimal rotations 2011-08-05 14:02:14 +00:00
Yin Xu e8e095bd95 using Eigen to do polar decomposition for optimal rotations 2011-08-04 06:48:36 +00:00
Yin Xu 9966c8ae66 sharp feature detection 2011-08-03 14:22:06 +00:00
Yin Xu 83aec55093 benchmark for polar decomposition using Newton's method with warm start, also added into header file. 2011-07-28 14:08:13 +00:00
Yin Xu 203b7f9eab significantly improve the code structure and GUI design; add combo box that allows user to select usage scenarios 2011-07-26 14:41:15 +00:00
Yin Xu d99ea6b658 code consolidation for handles/ROI selection by geodesic distances 2011-07-26 06:09:57 +00:00
Yin Xu 49a11bfc60 adding a benchmark for optimal rotations 2011-07-21 11:49:38 +00:00
Yin Xu e9db72ed5f add a new usage scenario 2011-07-20 14:45:50 +00:00
Yin Xu 7b8e66f88d remove Eigen from svn 2011-07-18 10:53:27 +00:00
Yin Xu b79e774eb5 remove eigen from svn 2011-07-18 10:39:46 +00:00
Yin Xu 5c304e5f73 deleted 2011-07-18 10:37:23 +00:00
Yin Xu 09ef4d646a tiny fix 2011-07-15 14:09:55 +00:00
Yin Xu 4f16a9f79b modification of GUI 2011-07-14 07:50:21 +00:00
Yin Xu 466c149ce2 replace svd by Eigen; some modification on UI 2011-07-13 14:44:19 +00:00
Yin Xu ea5d430e94 using mean-value coordinate to replace negative cotangent weights 2011-07-12 11:49:25 +00:00
Yin Xu 46a4f3f9bd another round of consolidation: adding new threshold for convergence; modify rotation matrix when negative 2011-07-11 12:49:11 +00:00
Andreas Fabri 82c2fb7016 Add comments 2011-07-11 03:30:46 +00:00
Yin Xu 68205da8da add template parameters for property maps in mesh deformation API 2011-07-10 08:28:56 +00:00
Yin Xu aa47b30a0a using property map instead of std::map 2011-07-08 09:24:23 +00:00
Laurent Rineau a7c5cb5d65 Fix portability issues.
There were missing "typename" keywords.
2011-07-07 09:43:43 +00:00
Yin Xu ac60cbfd1a starting to add a button for preprocessing 2011-07-07 09:07:31 +00:00
Yin Xu cbc5c309be Solved all the comments. 2011-07-06 08:55:07 +00:00
Yin Xu 2b57a7fdc7 replace std::map by std::vector; add index maps 2011-07-05 09:44:08 +00:00
Yin Xu c692c27fbd restrict deform region on ROI 2011-07-04 14:35:27 +00:00
Andreas Fabri 43b84a6b38 Added comments and questions 2011-07-04 01:20:00 +00:00
Yin Xu 6ac2a8c273 executable version of arap modeling 2011-07-01 13:06:32 +00:00
Yin Xu ab0a535046 first full version of arap modeling 2011-06-30 14:43:10 +00:00
Yin Xu 82d3b48389 adding the computation of cotangent Laplacian for trianular polyhedron 2011-06-10 05:43:34 +00:00
Yin Xu 04a9df6249 a new header file, using BGL template 2011-06-09 07:45:45 +00:00
Yin Xu c31e927c17 template of solver 2011-06-08 09:01:13 +00:00
Yin Xu 92cf920bd2 using s2t to access target mesh from source mesh. The source mesh is always vertex_const_handle, while target mesh useing vertex_handle. 2011-06-01 06:31:02 +00:00
Yin Xu af573b76a5 write an access function from source to target mesh 2011-05-27 14:22:29 +00:00
Yin Xu 53c7d0b3d2 another cleanup:
Another cleanup is to only #include what you need in this file.

For example fstream is not needed here.

   Removed all the unrelated header files. 

Avoid using statements.

 Removed "using namespace *** ".

Note that you make a copy of the  polyhedron,
that is you deform the copy not the original.
Not sure that this is your intention.

Yes this is my intention.  

Also intialize the data member in the initialization section
of the constructor

Do you mean add the initialization of roi,  hld and dsplc into constructor function?

I have no idea if #pragma once compiles with g++.

Replaced it by #ifndef....
2011-05-27 13:23:00 +00:00