├── .gitignore
├── .log
├── compile_commands.json
├── compile_commands.sh
├── images
├── clfh3-s8ty4.gif
└── dataminco.png
├── readme.md
└── src
├── CMakeLists.txt
├── DecompROS
├── DecompUtil
│ ├── CMakeLists.txt
│ ├── LICENSE
│ ├── README.md
│ ├── data
│ │ ├── example1.png
│ │ ├── example2.png
│ │ ├── example3.png
│ │ ├── example4.png
│ │ └── obstacles.txt
│ ├── docs
│ │ ├── annotated.html
│ │ ├── arrowdown.png
│ │ ├── arrowright.png
│ │ ├── bc_s.png
│ │ ├── bdwn.png
│ │ ├── classDecompBase-members.html
│ │ ├── classDecompBase.html
│ │ ├── classDecompBase.png
│ │ ├── classEllipsoidDecomp-members.html
│ │ ├── classEllipsoidDecomp.html
│ │ ├── classEllipsoidDecomp.png
│ │ ├── classIterativeDecomp-members.html
│ │ ├── classIterativeDecomp.html
│ │ ├── classIterativeDecomp.png
│ │ ├── classLineSegment-members.html
│ │ ├── classLineSegment.html
│ │ ├── classLineSegment.png
│ │ ├── classSeedDecomp-members.html
│ │ ├── classSeedDecomp.html
│ │ ├── classSeedDecomp.png
│ │ ├── classes.html
│ │ ├── closed.png
│ │ ├── data__type_8h.html
│ │ ├── data__type_8h_source.html
│ │ ├── data__utils_8h.html
│ │ ├── data__utils_8h_source.html
│ │ ├── decomp__base_8h.html
│ │ ├── decomp__base_8h_source.html
│ │ ├── dir_0156596343f07f423e58f27e9acfceb9.html
│ │ ├── dir_0ea7c0ecff050f14fbfcb8a22f95278f.html
│ │ ├── dir_13e138d54eb8818da29c3992edef070a.html
│ │ ├── dir_2c1ec4cfaf5ed43ec260b4f91f837847.html
│ │ ├── dir_4fef79e7177ba769987a8da36c892c5f.html
│ │ ├── dir_63772b626f2709090f0bdca0f40827b4.html
│ │ ├── dir_75993fee8576b97e3d9a8476c1772d17.html
│ │ ├── dir_a41afb44cd77021f04ef0298981be91e.html
│ │ ├── dir_a573004c1aa1ac4f8bc48460229ea7de.html
│ │ ├── dir_d44c64559bbebec7f509842c48db8b23.html
│ │ ├── doc.png
│ │ ├── doxygen.css
│ │ ├── doxygen.png
│ │ ├── dynsections.js
│ │ ├── ellipsoid_8h.html
│ │ ├── ellipsoid_8h_source.html
│ │ ├── ellipsoid__decomp_8h.html
│ │ ├── ellipsoid__decomp_8h_source.html
│ │ ├── files.html
│ │ ├── folderclosed.png
│ │ ├── folderopen.png
│ │ ├── form_0.png
│ │ ├── form_1.png
│ │ ├── form_2.png
│ │ ├── formula.repository
│ │ ├── functions.html
│ │ ├── functions_func.html
│ │ ├── functions_vars.html
│ │ ├── geometric__utils_8h.html
│ │ ├── geometric__utils_8h_source.html
│ │ ├── globals.html
│ │ ├── globals_defs.html
│ │ ├── globals_func.html
│ │ ├── globals_type.html
│ │ ├── globals_vars.html
│ │ ├── hierarchy.html
│ │ ├── index.html
│ │ ├── iterative__decomp_8h.html
│ │ ├── iterative__decomp_8h_source.html
│ │ ├── jquery.js
│ │ ├── line__segment_8h.html
│ │ ├── line__segment_8h_source.html
│ │ ├── nav_f.png
│ │ ├── nav_g.png
│ │ ├── nav_h.png
│ │ ├── open.png
│ │ ├── polyhedron_8h_source.html
│ │ ├── search
│ │ │ ├── all_0.html
│ │ │ ├── all_0.js
│ │ │ ├── all_1.html
│ │ │ ├── all_1.js
│ │ │ ├── all_10.html
│ │ │ ├── all_10.js
│ │ │ ├── all_2.html
│ │ │ ├── all_2.js
│ │ │ ├── all_3.html
│ │ │ ├── all_3.js
│ │ │ ├── all_4.html
│ │ │ ├── all_4.js
│ │ │ ├── all_5.html
│ │ │ ├── all_5.js
│ │ │ ├── all_6.html
│ │ │ ├── all_6.js
│ │ │ ├── all_7.html
│ │ │ ├── all_7.js
│ │ │ ├── all_8.html
│ │ │ ├── all_8.js
│ │ │ ├── all_9.html
│ │ │ ├── all_9.js
│ │ │ ├── all_a.html
│ │ │ ├── all_a.js
│ │ │ ├── all_b.html
│ │ │ ├── all_b.js
│ │ │ ├── all_c.html
│ │ │ ├── all_c.js
│ │ │ ├── all_d.html
│ │ │ ├── all_d.js
│ │ │ ├── all_e.html
│ │ │ ├── all_e.js
│ │ │ ├── all_f.html
│ │ │ ├── all_f.js
│ │ │ ├── classes_0.html
│ │ │ ├── classes_0.js
│ │ │ ├── classes_1.html
│ │ │ ├── classes_1.js
│ │ │ ├── classes_2.html
│ │ │ ├── classes_2.js
│ │ │ ├── classes_3.html
│ │ │ ├── classes_3.js
│ │ │ ├── classes_4.html
│ │ │ ├── classes_4.js
│ │ │ ├── classes_5.html
│ │ │ ├── classes_5.js
│ │ │ ├── classes_6.html
│ │ │ ├── classes_6.js
│ │ │ ├── close.png
│ │ │ ├── defines_0.html
│ │ │ ├── defines_0.js
│ │ │ ├── defines_1.html
│ │ │ ├── defines_1.js
│ │ │ ├── files_0.html
│ │ │ ├── files_0.js
│ │ │ ├── files_1.html
│ │ │ ├── files_1.js
│ │ │ ├── files_2.html
│ │ │ ├── files_2.js
│ │ │ ├── files_3.html
│ │ │ ├── files_3.js
│ │ │ ├── files_4.html
│ │ │ ├── files_4.js
│ │ │ ├── files_5.html
│ │ │ ├── files_5.js
│ │ │ ├── functions_0.html
│ │ │ ├── functions_0.js
│ │ │ ├── functions_1.html
│ │ │ ├── functions_1.js
│ │ │ ├── functions_2.html
│ │ │ ├── functions_2.js
│ │ │ ├── functions_3.html
│ │ │ ├── functions_3.js
│ │ │ ├── functions_4.html
│ │ │ ├── functions_4.js
│ │ │ ├── functions_5.html
│ │ │ ├── functions_5.js
│ │ │ ├── functions_6.html
│ │ │ ├── functions_6.js
│ │ │ ├── functions_7.html
│ │ │ ├── functions_7.js
│ │ │ ├── functions_8.html
│ │ │ ├── functions_8.js
│ │ │ ├── functions_9.html
│ │ │ ├── functions_9.js
│ │ │ ├── functions_a.html
│ │ │ ├── functions_a.js
│ │ │ ├── functions_b.html
│ │ │ ├── functions_b.js
│ │ │ ├── functions_c.html
│ │ │ ├── functions_c.js
│ │ │ ├── mag_sel.png
│ │ │ ├── nomatches.html
│ │ │ ├── pages_0.html
│ │ │ ├── pages_0.js
│ │ │ ├── search.css
│ │ │ ├── search.js
│ │ │ ├── search_l.png
│ │ │ ├── search_m.png
│ │ │ ├── search_r.png
│ │ │ ├── searchdata.js
│ │ │ ├── typedefs_0.html
│ │ │ ├── typedefs_0.js
│ │ │ ├── typedefs_1.html
│ │ │ ├── typedefs_1.js
│ │ │ ├── typedefs_2.html
│ │ │ ├── typedefs_2.js
│ │ │ ├── typedefs_3.html
│ │ │ ├── typedefs_3.js
│ │ │ ├── typedefs_4.html
│ │ │ ├── typedefs_4.js
│ │ │ ├── variables_0.html
│ │ │ ├── variables_0.js
│ │ │ ├── variables_1.html
│ │ │ ├── variables_1.js
│ │ │ ├── variables_2.html
│ │ │ ├── variables_2.js
│ │ │ ├── variables_3.html
│ │ │ ├── variables_3.js
│ │ │ ├── variables_4.html
│ │ │ ├── variables_4.js
│ │ │ ├── variables_5.html
│ │ │ └── variables_5.js
│ │ ├── seed__decomp_8h.html
│ │ ├── seed__decomp_8h_source.html
│ │ ├── splitbar.png
│ │ ├── structEllipsoid-members.html
│ │ ├── structEllipsoid.html
│ │ ├── structHyperplane-members.html
│ │ ├── structHyperplane.html
│ │ ├── structLinearConstraint-members.html
│ │ ├── structLinearConstraint.html
│ │ ├── structPolyhedron-members.html
│ │ ├── structPolyhedron.html
│ │ ├── sync_off.png
│ │ ├── sync_on.png
│ │ ├── tab_a.png
│ │ ├── tab_b.png
│ │ ├── tab_h.png
│ │ ├── tab_s.png
│ │ ├── tabs.css
│ │ └── txt__reader_8hpp_source.html
│ ├── include
│ │ ├── decomp_basis
│ │ │ ├── data_type.h
│ │ │ └── data_utils.h
│ │ ├── decomp_geometry
│ │ │ ├── ellipsoid.h
│ │ │ ├── geometric_utils.h
│ │ │ └── polyhedron.h
│ │ └── decomp_util
│ │ │ ├── decomp_base.h
│ │ │ ├── ellipsoid_decomp.h
│ │ │ ├── iterative_decomp.h
│ │ │ ├── line_segment.h
│ │ │ └── seed_decomp.h
│ ├── package.xml
│ └── test
│ │ ├── test_ellipsoid_decomp.cpp
│ │ ├── test_iterative_decomp.cpp
│ │ ├── test_line_segment.cpp
│ │ ├── test_seed_decomp.cpp
│ │ └── txt_reader.hpp
├── LICENSE
├── decomp_ros_msgs
│ ├── CMakeLists.txt
│ ├── msg
│ │ ├── Ellipsoid.msg
│ │ ├── EllipsoidArray.msg
│ │ ├── Polyhedron.msg
│ │ └── PolyhedronArray.msg
│ └── package.xml
└── decomp_ros_utils
│ ├── CMakeLists.txt
│ ├── icons
│ └── classes
│ │ ├── EllipsoidArray.png
│ │ └── PolyhedronArray.png
│ ├── include
│ └── decomp_ros_utils
│ │ └── data_ros_utils.h
│ ├── package.xml
│ ├── plugin_description.xml
│ └── src
│ ├── bound_visual.cpp
│ ├── bound_visual.h
│ ├── ellipsoid_array_display.cpp
│ ├── ellipsoid_array_display.h
│ ├── ellipsoid_array_visual.cpp
│ ├── ellipsoid_array_visual.h
│ ├── mesh_visual.cpp
│ ├── mesh_visual.h
│ ├── polyhedron_array_display.cpp
│ ├── polyhedron_array_display.h
│ ├── vector_visual.cpp
│ └── vector_visual.h
└── minco_curve
├── CMakeLists.txt
├── include
├── stc_gen.hpp
├── traj_optmizer.hpp
└── utils
│ ├── lbfgs.hpp
│ ├── map_interface.h
│ ├── minco.hpp
│ ├── root_finder.hpp
│ └── trajectory.hpp
├── launch
└── simple_move_base.launch
├── maps
├── map.yaml
└── slow.pgm
├── package.xml
├── rviz
└── display.rviz
└── src
└── test_node.cpp
/.gitignore:
--------------------------------------------------------------------------------
1 | minco_curve.zip
2 | minco_curve2.zip
3 | minco_curve3.zip
4 | .catkin_tools/
5 | .vscode/
6 | build/
7 | devel/
8 | logs/
9 | ompl/
10 | .catkin_workspace
11 | .log/
12 |
--------------------------------------------------------------------------------
/compile_commands.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | rm compile_commands.json
3 | touch compile_commands.json
4 |
5 | cat ./build/*/compile_commands.json >> compile_commands.json
6 | sed -i 's/]\[/,/g' compile_commands.json
--------------------------------------------------------------------------------
/images/clfh3-s8ty4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/images/clfh3-s8ty4.gif
--------------------------------------------------------------------------------
/images/dataminco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/images/dataminco.png
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # FlowCore
2 | A GlobalPlanner Based on Minco Curve
3 |
4 | * Obstacle avoidance within safe corridor
5 | * Satisfy curvature constraints (kappa)
6 |
7 | ## Updates
8 | * April 5,2025
9 |
10 | ## Dependencies
11 | * Eigen3
12 | * ompl 1.6.0
13 |
14 | ## Examples
15 | 
16 |
17 | ## Reference
18 | > [1] Z. Wang, X. Zhou, C. Xu and F. Gao, "Geometrically Constrained Trajectory Optimization for Multicopters," in IEEE Transactions on Robotics, vol. 38, no. 5, pp. 3259-3278, Oct. 2022, doi: 10.1109/TRO.2022.3160022.
19 | > [2] Z. Han et al., "An Efficient Spatial-Temporal Trajectory Planner for Autonomous Vehicles in Unstructured Environments," in IEEE Transactions on Intelligent Transportation Systems, vol. 25, no. 2, pp. 1797-1814, Feb. 2024, doi: 10.1109/TITS.2023.3315320.
20 | > [3] S. Liu, M. Watterson, K. Mohta, K. Sun, S. Bhattacharya, C.J. Taylor and V. Kumar. Planning Dynamically Feasible Trajectories for Quadrotors using Safe Flight Corridors in 3-D Complex Environments. ICRA 2017.
21 |
--------------------------------------------------------------------------------
/src/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | /opt/ros/noetic/share/catkin/cmake/toplevel.cmake
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.0.0)
2 | project(decomp_util)
3 | set(CMAKE_EXPORT_COMPILE_COMMANDS True)
4 |
5 | # set default build type
6 | # set(CMAKE_BUILD_TYPE Debug)
7 | set(CMAKE_BUILD_TYPE Release)
8 |
9 | set(BUILD_SHARED_LIBS ON)
10 |
11 | find_package(Eigen3 REQUIRED)
12 | find_package(Boost REQUIRED)
13 | include_directories(${EIGEN3_INCLUDE_DIRS} include)
14 | find_package(catkin REQUIRED)
15 |
16 | catkin_package(
17 | INCLUDE_DIRS include ${EIGEN3_INCLUDE_DIRS} ${Boost_LIBRARIES}
18 | )
19 |
20 | add_executable(test_seed_decomp test/test_seed_decomp.cpp)
21 | target_link_libraries(test_seed_decomp ${Boost_LIBRARIES})
22 | add_test(test_seed_decomp test_seed_decomp)
23 |
24 | add_executable(test_line_segment test/test_line_segment.cpp)
25 | target_link_libraries(test_line_segment ${Boost_LIBRARIES})
26 | add_test(test_line_segment test_line_segment ${CMAKE_SOURCE_DIR}/data/obstacles.txt)
27 |
28 | add_executable(test_ellipsoid_decomp test/test_ellipsoid_decomp.cpp)
29 | target_link_libraries(test_ellipsoid_decomp ${Boost_LIBRARIES})
30 | add_test(test_ellipsoid_decomp test_ellipsoid_decomp ${CMAKE_SOURCE_DIR}/data/obstacles.txt)
31 |
32 | add_executable(test_iterative_decomp test/test_iterative_decomp.cpp)
33 | target_link_libraries(test_iterative_decomp ${Boost_LIBRARIES})
34 | add_test(test_iterative_decomp test_iterative_decomp ${CMAKE_SOURCE_DIR}/data/obstacles.txt)
35 |
36 | install(FILES "${PROJECT_NAME}Config.cmake" "${PROJECT_NAME}ConfigVersion.cmake"
37 | DESTINATION "share/${PROJECT_NAME}/cmake")
38 |
39 | install(TARGETS
40 | RUNTIME DESTINATION bin
41 | LIBRARY DESTINATION lib
42 | ARCHIVE DESTINATION lib)
43 |
44 | install(DIRECTORY include/decomp_basis include/decomp_geometry include/decomp_util
45 | DESTINATION include)
46 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2017, sikang
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | * Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | * Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/README.md:
--------------------------------------------------------------------------------
1 | # MRSL Decomputil Library v1.0
2 | [](https://app.wercker.com/project/byKey/89a66f8c94c00db95dc056bae099adb3)
3 | - - -
4 | A header only c++ library for fast convex decomposition. In the basic pipeline, it implements ellipsoid based regional inflation to model free space from a given path inside a point cloud.
5 | Detials of the algorithm is proposed in ["S. Liu, M. Watterson, K. Mohta, K. Sun, S. Bhattacharya, C.J. Taylor and V. Kumar. Planning Dynamically Feasible Trajectories for Quadrotors using Safe Flight Corridors in 3-D Complex Environments. ICRA 2017"](http://ieeexplore.ieee.org/document/7839930/).
6 |
7 | ## Installation
8 | DecompUtil is a header only library, several test nodes are compiled during the
9 | installation.
10 | #### A) Simple cmake
11 | ```bash
12 | $ mkdir build && cd build && cmake .. && make
13 | ```
14 |
15 | #### B) Using CATKIN (not recognizable by catkin\_make)
16 | ```bash
17 | $ cd mv decomp_util ~/catkin_ws/src
18 | $ cd ~/catkin_ws & catkin_make_isolated -DCMAKE_BUILD_TYPE=Release
19 | ```
20 |
21 | #### CTest
22 | To check if everything is installed properlly:
23 | ```bash
24 | $ make test
25 | ```
26 |
27 | #### Include in other projects:
28 | To link this lib properly, add following in the `CMakeLists.txt`
29 | ```
30 | find_package(decomp_util REQUIRED)
31 | include_directories(${DECOMP_UTIL_INCLUDE_DIRS})
32 | ```
33 |
34 | ## Examples
35 | The examples of using `SeedDecomp2D`, `LineSegment2D`, `EllipsoidDecomp2D` and
36 | `IterativeDecomp2D` are plotted as followings:
37 |
38 | SeedDecomp2D | LineSegment2D | EllipsoidDecomp2D | IterativeDecomp2D
39 | :----------- | :------------ | :---------------- | :----------------
40 |
|
|
|
41 |
42 |
43 | The corresponding code for testing can be found in the `test` folder.
44 |
45 | ## Doxygen
46 | For more details, please refer to https://sikang.github.io/DecompUtil/index.html
47 |
48 | ## ROS
49 | The ROS wrapper for easier use of this package can be found in [`DecompROS`](https://github.com/sikang/DecompROS.git).
50 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/data/example1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example1.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/data/example2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example2.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/data/example3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example3.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/data/example4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/data/example4.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/data/obstacles.txt:
--------------------------------------------------------------------------------
1 | -0.2 1.5
2 | 0 1.5
3 | 0 1
4 | 1 0
5 | 1.8 0
6 | 0.8 -1
7 | -0.5 -0.5
8 | -0.75 -0.5
9 | -1 -0.5
10 | -1 0.8
11 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/arrowdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/arrowdown.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/arrowright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/arrowright.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/bc_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/bc_s.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/bdwn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/bdwn.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/classDecompBase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classDecompBase.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/classEllipsoidDecomp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classEllipsoidDecomp.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/classIterativeDecomp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classIterativeDecomp.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/classLineSegment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classLineSegment.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/classSeedDecomp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/classSeedDecomp.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/closed.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/dir_13e138d54eb8818da29c3992edef070a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | MRSL DecompUtil Library: test Directory Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | MRSL DecompUtil Library
27 | 0.1
28 |
29 | An implementaion of convex decomposition over point cloud
30 | |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
40 |
63 |
69 |
70 |
74 |
75 |
76 |
77 |
78 |
81 |
82 |
83 |
87 |
88 |
92 |
98 |
99 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/dir_d44c64559bbebec7f509842c48db8b23.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | MRSL DecompUtil Library: include Directory Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | MRSL DecompUtil Library
27 | 0.1
28 |
29 | An implementaion of convex decomposition over point cloud
30 | |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
40 |
63 |
69 |
70 |
74 |
75 |
76 |
77 |
78 |
81 |
82 |
83 |
87 |
88 |
92 |
98 |
99 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/doc.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/doxygen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/doxygen.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/dynsections.js:
--------------------------------------------------------------------------------
1 | function toggleVisibility(linkObj)
2 | {
3 | var base = $(linkObj).attr('id');
4 | var summary = $('#'+base+'-summary');
5 | var content = $('#'+base+'-content');
6 | var trigger = $('#'+base+'-trigger');
7 | var src=$(trigger).attr('src');
8 | if (content.is(':visible')===true) {
9 | content.hide();
10 | summary.show();
11 | $(linkObj).addClass('closed').removeClass('opened');
12 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
13 | } else {
14 | content.show();
15 | summary.hide();
16 | $(linkObj).removeClass('closed').addClass('opened');
17 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
18 | }
19 | return false;
20 | }
21 |
22 | function updateStripes()
23 | {
24 | $('table.directory tr').
25 | removeClass('even').filter(':visible:even').addClass('even');
26 | }
27 |
28 | function toggleLevel(level)
29 | {
30 | $('table.directory tr').each(function() {
31 | var l = this.id.split('_').length-1;
32 | var i = $('#img'+this.id.substring(3));
33 | var a = $('#arr'+this.id.substring(3));
34 | if (l
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['add',['add',['../structPolyhedron.html#a1efa5c7b822945d37c93a38667f8d04d',1,'Polyhedron']]],
4 | ['add_5flocal_5fbbox',['add_local_bbox',['../classLineSegment.html#ac572aa41bea2d3c706d3dd6a1bb24e57',1,'LineSegment::add_local_bbox()'],['../classSeedDecomp.html#a0de774b2c94a41f84a6e73a8eefd8e8b',1,'SeedDecomp::add_local_bbox()']]],
5 | ['aff2f',['Aff2f',['../data__type_8h.html#a3b95b3d43bb8590852e0e74abaff3c6a',1,'data_type.h']]],
6 | ['aff3f',['Aff3f',['../data__type_8h.html#a99980a710976449f0a9d3d2ae8b8be87',1,'data_type.h']]],
7 | ['ansi_5fcolor_5fblue',['ANSI_COLOR_BLUE',['../data__type_8h.html#aca16e6a49eb51333c5fd3eee19487315',1,'data_type.h']]],
8 | ['ansi_5fcolor_5fcyan',['ANSI_COLOR_CYAN',['../data__type_8h.html#a8d0b0043e152438bb39b918a1f98c65f',1,'data_type.h']]],
9 | ['ansi_5fcolor_5fgreen',['ANSI_COLOR_GREEN',['../data__type_8h.html#a966c72d8d733c7734c6c784753d894c7',1,'data_type.h']]],
10 | ['ansi_5fcolor_5fmagenta',['ANSI_COLOR_MAGENTA',['../data__type_8h.html#acb30614ba1535da5b9d0c490b3c10515',1,'data_type.h']]],
11 | ['ansi_5fcolor_5fred',['ANSI_COLOR_RED',['../data__type_8h.html#a34995b955465f6bbb37c359173d50477',1,'data_type.h']]],
12 | ['ansi_5fcolor_5freset',['ANSI_COLOR_RESET',['../data__type_8h.html#a92a364c2b863dde1a024a77eac2a5b3b',1,'data_type.h']]],
13 | ['ansi_5fcolor_5fyellow',['ANSI_COLOR_YELLOW',['../data__type_8h.html#a5a123b382640b3aa65dd5db386002fbc',1,'data_type.h']]]
14 | ];
15 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['c',['C',['../structEllipsoid.html#a512359754637b8048a49b291ad7be957',1,'Ellipsoid']]],
4 | ['cal_5fclosest_5fdist',['cal_closest_dist',['../classIterativeDecomp.html#a6df4c75ba768e0b0866ab0de79955639',1,'IterativeDecomp']]],
5 | ['cal_5fnormals',['cal_normals',['../structPolyhedron.html#aaf89b0bd80d59b3ff4c7f40b3872e2f3',1,'Polyhedron']]],
6 | ['cal_5fvertices',['cal_vertices',['../geometric__utils_8h.html#a8b4b27d3fcc8d4035d9b61a26215fd59',1,'geometric_utils.h']]],
7 | ['closest_5fhyperplane',['closest_hyperplane',['../structEllipsoid.html#a7dcd9a92214baad9750c8d8909e22ffc',1,'Ellipsoid']]],
8 | ['closest_5fpoint',['closest_point',['../structEllipsoid.html#ad2c7ee812c96ff94a1a44ddc6a7044b8',1,'Ellipsoid']]]
9 | ];
10 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_10.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_10.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['vec2_5fto_5frotation',['vec2_to_rotation',['../geometric__utils_8h.html#aa91b5d566f48c28dff0d9aa08b4abdc2',1,'geometric_utils.h']]],
4 | ['vec2f',['Vec2f',['../data__type_8h.html#a135c596de9b80bec15985876ebd5036e',1,'data_type.h']]],
5 | ['vec2i',['Vec2i',['../data__type_8h.html#a08412347a26b00366a9d576672cce68d',1,'data_type.h']]],
6 | ['vec3f',['Vec3f',['../data__type_8h.html#afd53e073786661e24985c48b4ef92fcb',1,'data_type.h']]],
7 | ['vec3i',['Vec3i',['../data__type_8h.html#a27cc7cd350b4919c77a6803461feb516',1,'data_type.h']]],
8 | ['vec4f',['Vec4f',['../data__type_8h.html#a885809dc84c0c55d44fe4836f5cfa39b',1,'data_type.h']]],
9 | ['vec6f',['Vec6f',['../data__type_8h.html#a940b1af907878e3cb6d2f7694730ee01',1,'data_type.h']]],
10 | ['vec_5fe',['vec_E',['../data__type_8h.html#a30c607180de5bc1b7c30f5cbaf9b188b',1,'data_type.h']]],
11 | ['vec_5fvec2f',['vec_Vec2f',['../data__type_8h.html#af640446aaa0ada84a270bd5639b36a7d',1,'data_type.h']]],
12 | ['vec_5fvec2i',['vec_Vec2i',['../data__type_8h.html#a79168c9f029798876a1093e0e53bc36b',1,'data_type.h']]],
13 | ['vec_5fvec3f',['vec_Vec3f',['../data__type_8h.html#a62c46ed3e3ab6773b30439f9be38290b',1,'data_type.h']]],
14 | ['vec_5fvec3i',['vec_Vec3i',['../data__type_8h.html#aab99928bb9e8a58f0aeaf5d31c4866e4',1,'data_type.h']]],
15 | ['vec_5fvecf',['vec_Vecf',['../data__type_8h.html#a74599b2a677a5186ef71a2a690c6171d',1,'data_type.h']]],
16 | ['vec_5fveci',['vec_Veci',['../data__type_8h.html#ab0b0b0b007b0ba902fb040a70b3744e6',1,'data_type.h']]],
17 | ['vecdf',['VecDf',['../data__type_8h.html#af9c7300efe3567726a373210d4dbc046',1,'data_type.h']]],
18 | ['vecf',['Vecf',['../data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575',1,'data_type.h']]],
19 | ['veci',['Veci',['../data__type_8h.html#ac208833a6aa7ec29f39eb5ae142aaede',1,'data_type.h']]],
20 | ['volume',['volume',['../structEllipsoid.html#a5c61a69a58ca6c09cc02267df6848633',1,'Ellipsoid']]],
21 | ['vs_5f',['vs_',['../structPolyhedron.html#ad65ac3518e69a9f99ba41d23f943034b',1,'Polyhedron']]]
22 | ];
23 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['d',['d',['../structEllipsoid.html#a2cf6b4b66f08415c042be3064d54d6e3',1,'Ellipsoid']]],
4 | ['data_5ftype_2eh',['data_type.h',['../data__type_8h.html',1,'']]],
5 | ['data_5futils_2eh',['data_utils.h',['../data__utils_8h.html',1,'']]],
6 | ['decimal_5ft',['decimal_t',['../data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266',1,'data_type.h']]],
7 | ['decomp_5fbase_2eh',['decomp_base.h',['../decomp__base_8h.html',1,'']]],
8 | ['decompbase',['DecompBase',['../classDecompBase.html',1,'DecompBase< Dim >'],['../classDecompBase.html#a4fdc315275a421b40a84aeffacab4a5a',1,'DecompBase::DecompBase()']]],
9 | ['dilate',['dilate',['../classDecompBase.html#a8075ef9c927b23309ca1a3d4144250e5',1,'DecompBase::dilate()'],['../classEllipsoidDecomp.html#aaf4731df44249fe6ed026efa12d6bf63',1,'EllipsoidDecomp::dilate()'],['../classLineSegment.html#a3479e2467a33468749971e12aa15c46f',1,'LineSegment::dilate()'],['../classSeedDecomp.html#a94db31b5d02e4ca19f32c3a5bacc25a2',1,'SeedDecomp::dilate()']]],
10 | ['dilate_5fiter',['dilate_iter',['../classIterativeDecomp.html#ad735b75d676b2f4ee3b8f2015f95559c',1,'IterativeDecomp']]],
11 | ['dist',['dist',['../structEllipsoid.html#aa0d3bfad48b3bedb87dbc308d36f45a3',1,'Ellipsoid::dist()'],['../structHyperplane.html#add0b2123e1bb1923e25cddfb7dd62804',1,'Hyperplane::dist()']]],
12 | ['downsample',['downsample',['../classIterativeDecomp.html#a359ab6e36450d30ea16a6ad885f27648',1,'IterativeDecomp']]]
13 | ];
14 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['eigen_5fvalue',['eigen_value',['../geometric__utils_8h.html#a0ce1d8245227b22ff06fe09915db19c5',1,'geometric_utils.h']]],
4 | ['ellipsoid',['Ellipsoid',['../structEllipsoid.html',1,'']]],
5 | ['ellipsoid_2eh',['ellipsoid.h',['../ellipsoid_8h.html',1,'']]],
6 | ['ellipsoid_5f',['ellipsoid_',['../classDecompBase.html#a58c41c590f6c92d9fa0886d4d735d7a1',1,'DecompBase']]],
7 | ['ellipsoid_5fdecomp_2eh',['ellipsoid_decomp.h',['../ellipsoid__decomp_8h.html',1,'']]],
8 | ['ellipsoiddecomp',['EllipsoidDecomp',['../classEllipsoidDecomp.html',1,'EllipsoidDecomp< Dim >'],['../classEllipsoidDecomp.html#ac6e757930647fb499d1f1ffeef01b6a4',1,'EllipsoidDecomp::EllipsoidDecomp()'],['../classEllipsoidDecomp.html#a4c9617e1e2d94ead1ec921e9af7951d0',1,'EllipsoidDecomp::EllipsoidDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]],
9 | ['epsilon_5f',['epsilon_',['../data__type_8h.html#a81ebeac2c4a6e9be147beb487779e9b5',1,'data_type.h']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['find_5fellipsoid',['find_ellipsoid',['../classLineSegment.html#a0f2e7b18d162be0481f4e5be1cea5363',1,'LineSegment::find_ellipsoid(double offset_x)'],['../classLineSegment.html#a9f97fdceff2bb935c290fb7767e3a696',1,'LineSegment::find_ellipsoid(double offset_x)']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['geometric_5futils_2eh',['geometric_utils.h',['../geometric__utils_8h.html',1,'']]],
4 | ['get_5fconstraints',['get_constraints',['../classEllipsoidDecomp.html#aa43d19fea353dfd9466f729c0c38c581',1,'EllipsoidDecomp']]],
5 | ['get_5fellipsoid',['get_ellipsoid',['../classDecompBase.html#afd3d14a14667f86456f60384df9d81fb',1,'DecompBase']]],
6 | ['get_5fellipsoids',['get_ellipsoids',['../classEllipsoidDecomp.html#a3c8bf3ede2d7be93d74239cae76495e6',1,'EllipsoidDecomp']]],
7 | ['get_5fline_5fsegment',['get_line_segment',['../classLineSegment.html#ac2de795a258c1ee25544188033ecc269',1,'LineSegment']]],
8 | ['get_5fobs',['get_obs',['../classDecompBase.html#a617f05e12b3f8dbc3b67012f5edbc577',1,'DecompBase']]],
9 | ['get_5fpath',['get_path',['../classEllipsoidDecomp.html#ad880fd3bbaa9b5ccefcbc4317bbc68a5',1,'EllipsoidDecomp']]],
10 | ['get_5fpolyhedron',['get_polyhedron',['../classDecompBase.html#a2828493d375ef02f3711942f66f399d4',1,'DecompBase']]],
11 | ['get_5fpolyhedrons',['get_polyhedrons',['../classEllipsoidDecomp.html#a111a2f74f8cc807d15e70e121bf03f7c',1,'EllipsoidDecomp']]],
12 | ['get_5fseed',['get_seed',['../classSeedDecomp.html#a06743828a81c150c7368587ee7924e98',1,'SeedDecomp']]]
13 | ];
14 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['hyperplane',['Hyperplane',['../structHyperplane.html',1,'']]],
4 | ['hyperplanes',['hyperplanes',['../structPolyhedron.html#a92118114a7bce0e799ff1c587fff04a4',1,'Polyhedron']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['inside',['inside',['../structEllipsoid.html#a6795795ed44656c324b68bf11111ab8c',1,'Ellipsoid::inside()'],['../structPolyhedron.html#a28e5b0eebab18fb8d54fb021333363ce',1,'Polyhedron::inside()'],['../structLinearConstraint.html#a23779a58e2a1094971cdcceeac3f7f74',1,'LinearConstraint::inside()']]],
4 | ['iterative_5fdecomp_2eh',['iterative_decomp.h',['../iterative__decomp_8h.html',1,'']]],
5 | ['iterativedecomp',['IterativeDecomp',['../classIterativeDecomp.html',1,'IterativeDecomp< Dim >'],['../classIterativeDecomp.html#af2649785ec5548cdf0f59e96486a2181',1,'IterativeDecomp::IterativeDecomp()'],['../classIterativeDecomp.html#a7438eb4550b447e1e5422bb99359a39d',1,'IterativeDecomp::IterativeDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['line_5fintersect',['line_intersect',['../geometric__utils_8h.html#a79027aaed3d36e00b00eb58e55d95f16',1,'geometric_utils.h']]],
4 | ['line_5fintersects',['line_intersects',['../geometric__utils_8h.html#a34493497e7d12d4a99e6b9b7cef007f8',1,'geometric_utils.h']]],
5 | ['line_5fsegment_2eh',['line_segment.h',['../line__segment_8h.html',1,'']]],
6 | ['linearconstraint',['LinearConstraint',['../structLinearConstraint.html',1,'LinearConstraint< Dim >'],['../structLinearConstraint.html#ad089df15de12c20098e34f8497212ed9',1,'LinearConstraint::LinearConstraint()'],['../structLinearConstraint.html#aa05fed6e3ac2a531078ec96c174595c7',1,'LinearConstraint::LinearConstraint(const MatDNf< Dim > &A, const VecDf &b)'],['../structLinearConstraint.html#a81d1602ce0df605f5cb3746ad56c91fd',1,'LinearConstraint::LinearConstraint(const Vecf< Dim > p0, const vec_E< Hyperplane< Dim >> &vs)']]],
7 | ['linesegment',['LineSegment',['../classLineSegment.html',1,'LineSegment< Dim >'],['../classLineSegment.html#a88f0a13c753958dcfc0040d412dcd92a',1,'LineSegment::LineSegment()'],['../classLineSegment.html#a20e5627453b54a1642bac236b41bfb60',1,'LineSegment::LineSegment(const Vecf< Dim > &p1, const Vecf< Dim > &p2)']]],
8 | ['local_5fbbox_5f',['local_bbox_',['../classDecompBase.html#a8af5e7a5c407102df57089253b35c44a',1,'DecompBase']]]
9 | ];
10 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['mrsl_20decomputil_20library_20v1_2e0',['MRSL Decomputil Library v1.0',['../index.html',1,'']]],
4 | ['mat2f',['Mat2f',['../data__type_8h.html#a5503e9ed3faaa114b9611829fb322981',1,'data_type.h']]],
5 | ['mat3f',['Mat3f',['../data__type_8h.html#a231e0258efbae239a7cdfbd52442f06e',1,'data_type.h']]],
6 | ['mat4f',['Mat4f',['../data__type_8h.html#ad2b84927631f460dbf9862f63d624e09',1,'data_type.h']]],
7 | ['mat6f',['Mat6f',['../data__type_8h.html#a09f49eaed626a21b73aaee4c33e6fa45',1,'data_type.h']]],
8 | ['matd2f',['MatD2f',['../data__type_8h.html#a2de422e2e68d8cecbfb1814e07e9a292',1,'data_type.h']]],
9 | ['matd3f',['MatD3f',['../data__type_8h.html#a9c901cc0e1d9f03aab4aa4ea587517da',1,'data_type.h']]],
10 | ['matdf',['MatDf',['../data__type_8h.html#ab13729f7d29cc8284965c7c42129a45f',1,'data_type.h']]],
11 | ['matdnf',['MatDNf',['../data__type_8h.html#a44c975fba9ebd61e295d78215b6569c3',1,'data_type.h']]],
12 | ['matf',['Matf',['../data__type_8h.html#a1eeda0bad4efd3be8cb2da1941982410',1,'data_type.h']]]
13 | ];
14 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['n_5f',['n_',['../structHyperplane.html#a6d2871b9f869a49794b72ff433247030',1,'Hyperplane']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['obs_5f',['obs_',['../classDecompBase.html#af3afcc5ba0baa24fa1a52a08138fb67b',1,'DecompBase']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['p1_5f',['p1_',['../classLineSegment.html#a6c5b5bfafd4b8fd717578f53202a936c',1,'LineSegment']]],
4 | ['p2_5f',['p2_',['../classLineSegment.html#a7fb44056def6884bdb046629c25818b6',1,'LineSegment']]],
5 | ['p_5f',['p_',['../structHyperplane.html#afec3414bc825315a9fd3af4001ee5933',1,'Hyperplane::p_()'],['../classSeedDecomp.html#af9c8208721464dc53b7c2f1c1020c0a9',1,'SeedDecomp::p_()']]],
6 | ['points_5finside',['points_inside',['../structEllipsoid.html#a70e2f50e23092af77fdc1766efa17c53',1,'Ellipsoid::points_inside()'],['../structPolyhedron.html#ac91f6e4f56758d09dd36b139249ae566',1,'Polyhedron::points_inside()']]],
7 | ['polyhedron',['Polyhedron',['../structPolyhedron.html',1,'Polyhedron< Dim >'],['../structPolyhedron.html#a8b9a5d2d44059c016486be3e3e05ddeb',1,'Polyhedron::Polyhedron()'],['../structPolyhedron.html#a54b2d009a7392830934f04f5226fc591',1,'Polyhedron::Polyhedron(const vec_E< Hyperplane< Dim >> &vs)']]],
8 | ['polyhedron_5f',['polyhedron_',['../classDecompBase.html#a21a9039cefecfe2166dc5faf8ba86a68',1,'DecompBase']]]
9 | ];
10 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_d.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['quatf',['Quatf',['../data__type_8h.html#a4857a8f36ec316f647bfc006d4799e9a',1,'data_type.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_e.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_e.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['sample',['sample',['../structEllipsoid.html#a4e7533e61f95e20a0d503e5c665eac07',1,'Ellipsoid']]],
4 | ['seed_5fdecomp_2eh',['seed_decomp.h',['../seed__decomp_8h.html',1,'']]],
5 | ['seeddecomp',['SeedDecomp',['../classSeedDecomp.html',1,'SeedDecomp< Dim >'],['../classSeedDecomp.html#ac4cb38597f35ff4b1e27a225436d54dd',1,'SeedDecomp::SeedDecomp()'],['../classSeedDecomp.html#a4e0d038e09633d1892f0a184a439c4ba',1,'SeedDecomp::SeedDecomp(const Vecf< Dim > &p)']]],
6 | ['set_5flocal_5fbbox',['set_local_bbox',['../classDecompBase.html#a43a9d473dfbcdcc3a45d21917186663b',1,'DecompBase::set_local_bbox()'],['../classEllipsoidDecomp.html#a3a98cbbe53c7d641b12bc9bb5916d8d6',1,'EllipsoidDecomp::set_local_bbox()']]],
7 | ['set_5fobs',['set_obs',['../classDecompBase.html#a53cb01307a94dc941f40f1234b676a3b',1,'DecompBase::set_obs()'],['../classEllipsoidDecomp.html#aa3ea99617acd7f626ac7e731be9bea9f',1,'EllipsoidDecomp::set_obs()']]],
8 | ['shrink',['shrink',['../classDecompBase.html#a683f4c7d5b2cc03ac736f224e9cbca2c',1,'DecompBase']]],
9 | ['signed_5fdist',['signed_dist',['../structHyperplane.html#aa25c61b6fd4a9cdf8987324897f43939',1,'Hyperplane']]],
10 | ['simplify',['simplify',['../classIterativeDecomp.html#a26f2e63081817fd284c38181bd09a3d8',1,'IterativeDecomp']]],
11 | ['sort_5fpts',['sort_pts',['../geometric__utils_8h.html#af844038aa7029551d36f807327590005',1,'geometric_utils.h']]]
12 | ];
13 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_f.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/all_f.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['total_5fdistance',['total_distance',['../data__utils_8h.html#a3f82ae87bcf143405fd986be6ca44a68',1,'data_utils.h']]],
4 | ['total_5fdistance3f',['total_distance3f',['../data__utils_8h.html#a188bab5f6177f4853e7bff0d5c61cfe6',1,'data_utils.h']]],
5 | ['total_5fdistance3i',['total_distance3i',['../data__utils_8h.html#aca4035bd3287a21e2e0a8e7a5a0357f5',1,'data_utils.h']]],
6 | ['transform_5fvec',['transform_vec',['../data__utils_8h.html#ac3745ddcc3002193bbcd5caab64cd1df',1,'data_utils.h']]],
7 | ['transform_5fvec3',['transform_vec3',['../data__utils_8h.html#a79960a9e7c7bad6ec5641ed1729ad8d0',1,'data_utils.h']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['decompbase',['DecompBase',['../classDecompBase.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['ellipsoid',['Ellipsoid',['../structEllipsoid.html',1,'']]],
4 | ['ellipsoiddecomp',['EllipsoidDecomp',['../classEllipsoidDecomp.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['hyperplane',['Hyperplane',['../structHyperplane.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['iterativedecomp',['IterativeDecomp',['../classIterativeDecomp.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['linearconstraint',['LinearConstraint',['../structLinearConstraint.html',1,'']]],
4 | ['linesegment',['LineSegment',['../classLineSegment.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['polyhedron',['Polyhedron',['../structPolyhedron.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/classes_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['seeddecomp',['SeedDecomp',['../classSeedDecomp.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/close.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/defines_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/defines_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['ansi_5fcolor_5fblue',['ANSI_COLOR_BLUE',['../data__type_8h.html#aca16e6a49eb51333c5fd3eee19487315',1,'data_type.h']]],
4 | ['ansi_5fcolor_5fcyan',['ANSI_COLOR_CYAN',['../data__type_8h.html#a8d0b0043e152438bb39b918a1f98c65f',1,'data_type.h']]],
5 | ['ansi_5fcolor_5fgreen',['ANSI_COLOR_GREEN',['../data__type_8h.html#a966c72d8d733c7734c6c784753d894c7',1,'data_type.h']]],
6 | ['ansi_5fcolor_5fmagenta',['ANSI_COLOR_MAGENTA',['../data__type_8h.html#acb30614ba1535da5b9d0c490b3c10515',1,'data_type.h']]],
7 | ['ansi_5fcolor_5fred',['ANSI_COLOR_RED',['../data__type_8h.html#a34995b955465f6bbb37c359173d50477',1,'data_type.h']]],
8 | ['ansi_5fcolor_5freset',['ANSI_COLOR_RESET',['../data__type_8h.html#a92a364c2b863dde1a024a77eac2a5b3b',1,'data_type.h']]],
9 | ['ansi_5fcolor_5fyellow',['ANSI_COLOR_YELLOW',['../data__type_8h.html#a5a123b382640b3aa65dd5db386002fbc',1,'data_type.h']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/defines_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/defines_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['total_5fdistance3f',['total_distance3f',['../data__utils_8h.html#a188bab5f6177f4853e7bff0d5c61cfe6',1,'data_utils.h']]],
4 | ['total_5fdistance3i',['total_distance3i',['../data__utils_8h.html#aca4035bd3287a21e2e0a8e7a5a0357f5',1,'data_utils.h']]],
5 | ['transform_5fvec3',['transform_vec3',['../data__utils_8h.html#a79960a9e7c7bad6ec5641ed1729ad8d0',1,'data_utils.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['data_5ftype_2eh',['data_type.h',['../data__type_8h.html',1,'']]],
4 | ['data_5futils_2eh',['data_utils.h',['../data__utils_8h.html',1,'']]],
5 | ['decomp_5fbase_2eh',['decomp_base.h',['../decomp__base_8h.html',1,'']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['ellipsoid_2eh',['ellipsoid.h',['../ellipsoid_8h.html',1,'']]],
4 | ['ellipsoid_5fdecomp_2eh',['ellipsoid_decomp.h',['../ellipsoid__decomp_8h.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['geometric_5futils_2eh',['geometric_utils.h',['../geometric__utils_8h.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['iterative_5fdecomp_2eh',['iterative_decomp.h',['../iterative__decomp_8h.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['line_5fsegment_2eh',['line_segment.h',['../line__segment_8h.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/files_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['seed_5fdecomp_2eh',['seed_decomp.h',['../seed__decomp_8h.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['add',['add',['../structPolyhedron.html#a1efa5c7b822945d37c93a38667f8d04d',1,'Polyhedron']]],
4 | ['add_5flocal_5fbbox',['add_local_bbox',['../classLineSegment.html#ac572aa41bea2d3c706d3dd6a1bb24e57',1,'LineSegment::add_local_bbox()'],['../classSeedDecomp.html#a0de774b2c94a41f84a6e73a8eefd8e8b',1,'SeedDecomp::add_local_bbox()']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['c',['C',['../structEllipsoid.html#a512359754637b8048a49b291ad7be957',1,'Ellipsoid']]],
4 | ['cal_5fclosest_5fdist',['cal_closest_dist',['../classIterativeDecomp.html#a6df4c75ba768e0b0866ab0de79955639',1,'IterativeDecomp']]],
5 | ['cal_5fnormals',['cal_normals',['../structPolyhedron.html#aaf89b0bd80d59b3ff4c7f40b3872e2f3',1,'Polyhedron']]],
6 | ['cal_5fvertices',['cal_vertices',['../geometric__utils_8h.html#a8b4b27d3fcc8d4035d9b61a26215fd59',1,'geometric_utils.h']]],
7 | ['closest_5fhyperplane',['closest_hyperplane',['../structEllipsoid.html#a7dcd9a92214baad9750c8d8909e22ffc',1,'Ellipsoid']]],
8 | ['closest_5fpoint',['closest_point',['../structEllipsoid.html#ad2c7ee812c96ff94a1a44ddc6a7044b8',1,'Ellipsoid']]]
9 | ];
10 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['d',['d',['../structEllipsoid.html#a2cf6b4b66f08415c042be3064d54d6e3',1,'Ellipsoid']]],
4 | ['decompbase',['DecompBase',['../classDecompBase.html#a4fdc315275a421b40a84aeffacab4a5a',1,'DecompBase']]],
5 | ['dilate',['dilate',['../classDecompBase.html#a8075ef9c927b23309ca1a3d4144250e5',1,'DecompBase::dilate()'],['../classEllipsoidDecomp.html#aaf4731df44249fe6ed026efa12d6bf63',1,'EllipsoidDecomp::dilate()'],['../classLineSegment.html#a3479e2467a33468749971e12aa15c46f',1,'LineSegment::dilate()'],['../classSeedDecomp.html#a94db31b5d02e4ca19f32c3a5bacc25a2',1,'SeedDecomp::dilate()']]],
6 | ['dilate_5fiter',['dilate_iter',['../classIterativeDecomp.html#ad735b75d676b2f4ee3b8f2015f95559c',1,'IterativeDecomp']]],
7 | ['dist',['dist',['../structEllipsoid.html#aa0d3bfad48b3bedb87dbc308d36f45a3',1,'Ellipsoid::dist()'],['../structHyperplane.html#add0b2123e1bb1923e25cddfb7dd62804',1,'Hyperplane::dist()']]],
8 | ['downsample',['downsample',['../classIterativeDecomp.html#a359ab6e36450d30ea16a6ad885f27648',1,'IterativeDecomp']]]
9 | ];
10 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['eigen_5fvalue',['eigen_value',['../geometric__utils_8h.html#a0ce1d8245227b22ff06fe09915db19c5',1,'geometric_utils.h']]],
4 | ['ellipsoiddecomp',['EllipsoidDecomp',['../classEllipsoidDecomp.html#ac6e757930647fb499d1f1ffeef01b6a4',1,'EllipsoidDecomp::EllipsoidDecomp()'],['../classEllipsoidDecomp.html#a4c9617e1e2d94ead1ec921e9af7951d0',1,'EllipsoidDecomp::EllipsoidDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['find_5fellipsoid',['find_ellipsoid',['../classLineSegment.html#a0f2e7b18d162be0481f4e5be1cea5363',1,'LineSegment::find_ellipsoid(double offset_x)'],['../classLineSegment.html#a9f97fdceff2bb935c290fb7767e3a696',1,'LineSegment::find_ellipsoid(double offset_x)']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['get_5fconstraints',['get_constraints',['../classEllipsoidDecomp.html#aa43d19fea353dfd9466f729c0c38c581',1,'EllipsoidDecomp']]],
4 | ['get_5fellipsoid',['get_ellipsoid',['../classDecompBase.html#afd3d14a14667f86456f60384df9d81fb',1,'DecompBase']]],
5 | ['get_5fellipsoids',['get_ellipsoids',['../classEllipsoidDecomp.html#a3c8bf3ede2d7be93d74239cae76495e6',1,'EllipsoidDecomp']]],
6 | ['get_5fline_5fsegment',['get_line_segment',['../classLineSegment.html#ac2de795a258c1ee25544188033ecc269',1,'LineSegment']]],
7 | ['get_5fobs',['get_obs',['../classDecompBase.html#a617f05e12b3f8dbc3b67012f5edbc577',1,'DecompBase']]],
8 | ['get_5fpath',['get_path',['../classEllipsoidDecomp.html#ad880fd3bbaa9b5ccefcbc4317bbc68a5',1,'EllipsoidDecomp']]],
9 | ['get_5fpolyhedron',['get_polyhedron',['../classDecompBase.html#a2828493d375ef02f3711942f66f399d4',1,'DecompBase']]],
10 | ['get_5fpolyhedrons',['get_polyhedrons',['../classEllipsoidDecomp.html#a111a2f74f8cc807d15e70e121bf03f7c',1,'EllipsoidDecomp']]],
11 | ['get_5fseed',['get_seed',['../classSeedDecomp.html#a06743828a81c150c7368587ee7924e98',1,'SeedDecomp']]]
12 | ];
13 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['hyperplanes',['hyperplanes',['../structPolyhedron.html#a92118114a7bce0e799ff1c587fff04a4',1,'Polyhedron']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['inside',['inside',['../structEllipsoid.html#a6795795ed44656c324b68bf11111ab8c',1,'Ellipsoid::inside()'],['../structPolyhedron.html#a28e5b0eebab18fb8d54fb021333363ce',1,'Polyhedron::inside()'],['../structLinearConstraint.html#a23779a58e2a1094971cdcceeac3f7f74',1,'LinearConstraint::inside()']]],
4 | ['iterativedecomp',['IterativeDecomp',['../classIterativeDecomp.html#af2649785ec5548cdf0f59e96486a2181',1,'IterativeDecomp::IterativeDecomp()'],['../classIterativeDecomp.html#a7438eb4550b447e1e5422bb99359a39d',1,'IterativeDecomp::IterativeDecomp(const Vecf< Dim > &origin, const Vecf< Dim > &dim)']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['line_5fintersect',['line_intersect',['../geometric__utils_8h.html#a79027aaed3d36e00b00eb58e55d95f16',1,'geometric_utils.h']]],
4 | ['line_5fintersects',['line_intersects',['../geometric__utils_8h.html#a34493497e7d12d4a99e6b9b7cef007f8',1,'geometric_utils.h']]],
5 | ['linearconstraint',['LinearConstraint',['../structLinearConstraint.html#ad089df15de12c20098e34f8497212ed9',1,'LinearConstraint::LinearConstraint()'],['../structLinearConstraint.html#aa05fed6e3ac2a531078ec96c174595c7',1,'LinearConstraint::LinearConstraint(const MatDNf< Dim > &A, const VecDf &b)'],['../structLinearConstraint.html#a81d1602ce0df605f5cb3746ad56c91fd',1,'LinearConstraint::LinearConstraint(const Vecf< Dim > p0, const vec_E< Hyperplane< Dim >> &vs)']]],
6 | ['linesegment',['LineSegment',['../classLineSegment.html#a88f0a13c753958dcfc0040d412dcd92a',1,'LineSegment::LineSegment()'],['../classLineSegment.html#a20e5627453b54a1642bac236b41bfb60',1,'LineSegment::LineSegment(const Vecf< Dim > &p1, const Vecf< Dim > &p2)']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['points_5finside',['points_inside',['../structEllipsoid.html#a70e2f50e23092af77fdc1766efa17c53',1,'Ellipsoid::points_inside()'],['../structPolyhedron.html#ac91f6e4f56758d09dd36b139249ae566',1,'Polyhedron::points_inside()']]],
4 | ['polyhedron',['Polyhedron',['../structPolyhedron.html#a8b9a5d2d44059c016486be3e3e05ddeb',1,'Polyhedron::Polyhedron()'],['../structPolyhedron.html#a54b2d009a7392830934f04f5226fc591',1,'Polyhedron::Polyhedron(const vec_E< Hyperplane< Dim >> &vs)']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['sample',['sample',['../structEllipsoid.html#a4e7533e61f95e20a0d503e5c665eac07',1,'Ellipsoid']]],
4 | ['seeddecomp',['SeedDecomp',['../classSeedDecomp.html#ac4cb38597f35ff4b1e27a225436d54dd',1,'SeedDecomp::SeedDecomp()'],['../classSeedDecomp.html#a4e0d038e09633d1892f0a184a439c4ba',1,'SeedDecomp::SeedDecomp(const Vecf< Dim > &p)']]],
5 | ['set_5flocal_5fbbox',['set_local_bbox',['../classDecompBase.html#a43a9d473dfbcdcc3a45d21917186663b',1,'DecompBase::set_local_bbox()'],['../classEllipsoidDecomp.html#a3a98cbbe53c7d641b12bc9bb5916d8d6',1,'EllipsoidDecomp::set_local_bbox()']]],
6 | ['set_5fobs',['set_obs',['../classDecompBase.html#a53cb01307a94dc941f40f1234b676a3b',1,'DecompBase::set_obs()'],['../classEllipsoidDecomp.html#aa3ea99617acd7f626ac7e731be9bea9f',1,'EllipsoidDecomp::set_obs()']]],
7 | ['shrink',['shrink',['../classDecompBase.html#a683f4c7d5b2cc03ac736f224e9cbca2c',1,'DecompBase']]],
8 | ['signed_5fdist',['signed_dist',['../structHyperplane.html#aa25c61b6fd4a9cdf8987324897f43939',1,'Hyperplane']]],
9 | ['simplify',['simplify',['../classIterativeDecomp.html#a26f2e63081817fd284c38181bd09a3d8',1,'IterativeDecomp']]],
10 | ['sort_5fpts',['sort_pts',['../geometric__utils_8h.html#af844038aa7029551d36f807327590005',1,'geometric_utils.h']]]
11 | ];
12 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['total_5fdistance',['total_distance',['../data__utils_8h.html#a3f82ae87bcf143405fd986be6ca44a68',1,'data_utils.h']]],
4 | ['transform_5fvec',['transform_vec',['../data__utils_8h.html#ac3745ddcc3002193bbcd5caab64cd1df',1,'data_utils.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/functions_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['vec2_5fto_5frotation',['vec2_to_rotation',['../geometric__utils_8h.html#aa91b5d566f48c28dff0d9aa08b4abdc2',1,'geometric_utils.h']]],
4 | ['volume',['volume',['../structEllipsoid.html#a5c61a69a58ca6c09cc02267df6848633',1,'Ellipsoid']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/mag_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/mag_sel.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/nomatches.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/pages_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/pages_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['mrsl_20decomputil_20library_20v1_2e0',['MRSL Decomputil Library v1.0',['../index.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/search_l.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/search_l.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/search_m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/search_m.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/search_r.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/search/search_r.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/searchdata.js:
--------------------------------------------------------------------------------
1 | var indexSectionsWithContent =
2 | {
3 | 0: "acdefghilmnopqstv",
4 | 1: "dehilps",
5 | 2: "degils",
6 | 3: "acdefghilpstv",
7 | 4: "elnopv",
8 | 5: "admqv",
9 | 6: "at",
10 | 7: "m"
11 | };
12 |
13 | var indexSectionNames =
14 | {
15 | 0: "all",
16 | 1: "classes",
17 | 2: "files",
18 | 3: "functions",
19 | 4: "variables",
20 | 5: "typedefs",
21 | 6: "defines",
22 | 7: "pages"
23 | };
24 |
25 | var indexSectionLabels =
26 | {
27 | 0: "All",
28 | 1: "Classes",
29 | 2: "Files",
30 | 3: "Functions",
31 | 4: "Variables",
32 | 5: "Typedefs",
33 | 6: "Macros",
34 | 7: "Pages"
35 | };
36 |
37 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['aff2f',['Aff2f',['../data__type_8h.html#a3b95b3d43bb8590852e0e74abaff3c6a',1,'data_type.h']]],
4 | ['aff3f',['Aff3f',['../data__type_8h.html#a99980a710976449f0a9d3d2ae8b8be87',1,'data_type.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['decimal_5ft',['decimal_t',['../data__type_8h.html#a7c99d9360fc6cac2762b786e2fb52266',1,'data_type.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['mat2f',['Mat2f',['../data__type_8h.html#a5503e9ed3faaa114b9611829fb322981',1,'data_type.h']]],
4 | ['mat3f',['Mat3f',['../data__type_8h.html#a231e0258efbae239a7cdfbd52442f06e',1,'data_type.h']]],
5 | ['mat4f',['Mat4f',['../data__type_8h.html#ad2b84927631f460dbf9862f63d624e09',1,'data_type.h']]],
6 | ['mat6f',['Mat6f',['../data__type_8h.html#a09f49eaed626a21b73aaee4c33e6fa45',1,'data_type.h']]],
7 | ['matd2f',['MatD2f',['../data__type_8h.html#a2de422e2e68d8cecbfb1814e07e9a292',1,'data_type.h']]],
8 | ['matd3f',['MatD3f',['../data__type_8h.html#a9c901cc0e1d9f03aab4aa4ea587517da',1,'data_type.h']]],
9 | ['matdf',['MatDf',['../data__type_8h.html#ab13729f7d29cc8284965c7c42129a45f',1,'data_type.h']]],
10 | ['matdnf',['MatDNf',['../data__type_8h.html#a44c975fba9ebd61e295d78215b6569c3',1,'data_type.h']]],
11 | ['matf',['Matf',['../data__type_8h.html#a1eeda0bad4efd3be8cb2da1941982410',1,'data_type.h']]]
12 | ];
13 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['quatf',['Quatf',['../data__type_8h.html#a4857a8f36ec316f647bfc006d4799e9a',1,'data_type.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/typedefs_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['vec2f',['Vec2f',['../data__type_8h.html#a135c596de9b80bec15985876ebd5036e',1,'data_type.h']]],
4 | ['vec2i',['Vec2i',['../data__type_8h.html#a08412347a26b00366a9d576672cce68d',1,'data_type.h']]],
5 | ['vec3f',['Vec3f',['../data__type_8h.html#afd53e073786661e24985c48b4ef92fcb',1,'data_type.h']]],
6 | ['vec3i',['Vec3i',['../data__type_8h.html#a27cc7cd350b4919c77a6803461feb516',1,'data_type.h']]],
7 | ['vec4f',['Vec4f',['../data__type_8h.html#a885809dc84c0c55d44fe4836f5cfa39b',1,'data_type.h']]],
8 | ['vec6f',['Vec6f',['../data__type_8h.html#a940b1af907878e3cb6d2f7694730ee01',1,'data_type.h']]],
9 | ['vec_5fe',['vec_E',['../data__type_8h.html#a30c607180de5bc1b7c30f5cbaf9b188b',1,'data_type.h']]],
10 | ['vec_5fvec2f',['vec_Vec2f',['../data__type_8h.html#af640446aaa0ada84a270bd5639b36a7d',1,'data_type.h']]],
11 | ['vec_5fvec2i',['vec_Vec2i',['../data__type_8h.html#a79168c9f029798876a1093e0e53bc36b',1,'data_type.h']]],
12 | ['vec_5fvec3f',['vec_Vec3f',['../data__type_8h.html#a62c46ed3e3ab6773b30439f9be38290b',1,'data_type.h']]],
13 | ['vec_5fvec3i',['vec_Vec3i',['../data__type_8h.html#aab99928bb9e8a58f0aeaf5d31c4866e4',1,'data_type.h']]],
14 | ['vec_5fvecf',['vec_Vecf',['../data__type_8h.html#a74599b2a677a5186ef71a2a690c6171d',1,'data_type.h']]],
15 | ['vec_5fveci',['vec_Veci',['../data__type_8h.html#ab0b0b0b007b0ba902fb040a70b3744e6',1,'data_type.h']]],
16 | ['vecdf',['VecDf',['../data__type_8h.html#af9c7300efe3567726a373210d4dbc046',1,'data_type.h']]],
17 | ['vecf',['Vecf',['../data__type_8h.html#a3a0c45655a5e009e56634ccde0c5c575',1,'data_type.h']]],
18 | ['veci',['Veci',['../data__type_8h.html#ac208833a6aa7ec29f39eb5ae142aaede',1,'data_type.h']]]
19 | ];
20 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['ellipsoid_5f',['ellipsoid_',['../classDecompBase.html#a58c41c590f6c92d9fa0886d4d735d7a1',1,'DecompBase']]],
4 | ['epsilon_5f',['epsilon_',['../data__type_8h.html#a81ebeac2c4a6e9be147beb487779e9b5',1,'data_type.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['local_5fbbox_5f',['local_bbox_',['../classDecompBase.html#a8af5e7a5c407102df57089253b35c44a',1,'DecompBase']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['n_5f',['n_',['../structHyperplane.html#a6d2871b9f869a49794b72ff433247030',1,'Hyperplane']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['obs_5f',['obs_',['../classDecompBase.html#af3afcc5ba0baa24fa1a52a08138fb67b',1,'DecompBase']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['p1_5f',['p1_',['../classLineSegment.html#a6c5b5bfafd4b8fd717578f53202a936c',1,'LineSegment']]],
4 | ['p2_5f',['p2_',['../classLineSegment.html#a7fb44056def6884bdb046629c25818b6',1,'LineSegment']]],
5 | ['p_5f',['p_',['../structHyperplane.html#afec3414bc825315a9fd3af4001ee5933',1,'Hyperplane::p_()'],['../classSeedDecomp.html#af9c8208721464dc53b7c2f1c1020c0a9',1,'SeedDecomp::p_()']]],
6 | ['polyhedron_5f',['polyhedron_',['../classDecompBase.html#a21a9039cefecfe2166dc5faf8ba86a68',1,'DecompBase']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
16 |
Searching...
17 |
No Matches
18 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/search/variables_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['vs_5f',['vs_',['../structPolyhedron.html#ad65ac3518e69a9f99ba41d23f943034b',1,'Polyhedron']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/splitbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/splitbar.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/sync_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/sync_off.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/sync_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/sync_on.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/tab_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_a.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/tab_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_b.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/tab_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_h.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/tab_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Photin1a/FlowCore/65937ea67216e64d59950530f5babf7c8b494a04/src/DecompROS/DecompUtil/docs/tab_s.png
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/docs/tabs.css:
--------------------------------------------------------------------------------
1 | .tabs, .tabs2, .tabs3 {
2 | background-image: url('tab_b.png');
3 | width: 100%;
4 | z-index: 101;
5 | font-size: 13px;
6 | font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
7 | }
8 |
9 | .tabs2 {
10 | font-size: 10px;
11 | }
12 | .tabs3 {
13 | font-size: 9px;
14 | }
15 |
16 | .tablist {
17 | margin: 0;
18 | padding: 0;
19 | display: table;
20 | }
21 |
22 | .tablist li {
23 | float: left;
24 | display: table-cell;
25 | background-image: url('tab_b.png');
26 | line-height: 36px;
27 | list-style: none;
28 | }
29 |
30 | .tablist a {
31 | display: block;
32 | padding: 0 20px;
33 | font-weight: bold;
34 | background-image:url('tab_s.png');
35 | background-repeat:no-repeat;
36 | background-position:right;
37 | color: #283A5D;
38 | text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
39 | text-decoration: none;
40 | outline: none;
41 | }
42 |
43 | .tabs3 .tablist a {
44 | padding: 0 10px;
45 | }
46 |
47 | .tablist a:hover {
48 | background-image: url('tab_h.png');
49 | background-repeat:repeat-x;
50 | color: #fff;
51 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
52 | text-decoration: none;
53 | }
54 |
55 | .tablist li.current a {
56 | background-image: url('tab_a.png');
57 | background-repeat:repeat-x;
58 | color: #fff;
59 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
60 | }
61 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_basis/data_type.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file data_type.h
3 | * @brief Defines all data types used in this lib
4 |
5 | * Mostly alias from Eigen Library.
6 | */
7 |
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 |
15 | ///Set red font in printf funtion
16 | #ifndef ANSI_COLOR_RED
17 | #define ANSI_COLOR_RED "\x1b[1;31m"
18 | #endif
19 | ///Set green font in printf funtion
20 | #ifndef ANSI_COLOR_GREEN
21 | #define ANSI_COLOR_GREEN "\x1b[1;32m"
22 | #endif
23 | ///Set yellow font in printf funtion
24 | #ifndef ANSI_COLOR_YELLOW
25 | #define ANSI_COLOR_YELLOW "\x1b[1;33m"
26 | #endif
27 | ///Set blue font in printf funtion
28 | #ifndef ANSI_COLOR_BLUE
29 | #define ANSI_COLOR_BLUE "\x1b[1;34m"
30 | #endif
31 | ///Set magenta font in printf funtion
32 | #ifndef ANSI_COLOR_MAGENTA
33 | #define ANSI_COLOR_MAGENTA "\x1b[1;35m"
34 | #endif
35 | ///Set cyan font in printf funtion
36 | #ifndef ANSI_COLOR_CYAN
37 | #define ANSI_COLOR_CYAN "\x1b[1;36m"
38 | #endif
39 | ///Reset font color in printf funtion
40 | #ifndef ANSI_COLOR_RESET
41 | #define ANSI_COLOR_RESET "\x1b[0m"
42 | #endif
43 |
44 | #ifndef DATA_TYPE_H
45 | #define DATA_TYPE_H
46 | /*! \brief Rename the float type used in lib
47 |
48 | Default is set to be double, but user can change it to float.
49 | */
50 | typedef double decimal_t;
51 |
52 | ///Pre-allocated std::vector for Eigen using vec_E
53 | template
54 | using vec_E = std::vector>;
55 | ///Eigen 1D float vector
56 | template
57 | using Vecf = Eigen::Matrix;
58 | ///Eigen 1D int vector
59 | template
60 | using Veci = Eigen::Matrix;
61 | ///MxN Eigen matrix
62 | template
63 | using Matf = Eigen::Matrix;
64 | ///MxN Eigen matrix with M unknown
65 | template
66 | using MatDNf = Eigen::Matrix;
67 | ///Vector of Eigen 1D float vector
68 | template
69 | using vec_Vecf = vec_E>;
70 | ///Vector of Eigen 1D int vector
71 | template
72 | using vec_Veci = vec_E>;
73 |
74 | ///Eigen 1D float vector of size 2
75 | typedef Vecf<2> Vec2f;
76 | ///Eigen 1D int vector of size 2
77 | typedef Veci<2> Vec2i;
78 | ///Eigen 1D float vector of size 3
79 | typedef Vecf<3> Vec3f;
80 | ///Eigen 1D int vector of size 3
81 | typedef Veci<3> Vec3i;
82 | ///Eigen 1D float vector of size 4
83 | typedef Vecf<4> Vec4f;
84 | ///Column vector in float of size 6
85 | typedef Vecf<6> Vec6f;
86 |
87 | ///Vector of type Vec2f.
88 | typedef vec_E vec_Vec2f;
89 | ///Vector of type Vec2i.
90 | typedef vec_E vec_Vec2i;
91 | ///Vector of type Vec3f.
92 | typedef vec_E vec_Vec3f;
93 | ///Vector of type Vec3i.
94 | typedef vec_E vec_Vec3i;
95 |
96 | ///2x2 Matrix in float
97 | typedef Matf<2, 2> Mat2f;
98 | ///3x3 Matrix in float
99 | typedef Matf<3, 3> Mat3f;
100 | ///4x4 Matrix in float
101 | typedef Matf<4, 4> Mat4f;
102 | ///6x6 Matrix in float
103 | typedef Matf<6, 6> Mat6f;
104 |
105 | ///Dynamic Nx1 Eigen float vector
106 | typedef Vecf VecDf;
107 | ///Nx2 Eigen float matrix
108 | typedef MatDNf<2> MatD2f;
109 | ///Nx3 Eigen float matrix
110 | typedef MatDNf<3> MatD3f;
111 | ///Dynamic MxN Eigen float matrix
112 | typedef Matf MatDf;
113 |
114 | ///Allias of Eigen::Affine2d
115 | typedef Eigen::Transform Aff2f;
116 | ///Allias of Eigen::Affine3d
117 | typedef Eigen::Transform Aff3f;
118 | #endif
119 |
120 | #ifndef EIGEN_QUAT
121 | #define EIGEN_QUAT
122 | ///Allias of Eigen::Quaterniond
123 | typedef Eigen::Quaternion Quatf;
124 | #endif
125 |
126 | #ifndef EIGEN_EPSILON
127 | #define EIGEN_EPSILON
128 | ///Compensate for numerical error
129 | constexpr decimal_t epsilon_ = 1e-10; // numerical calculation error
130 | #endif
131 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_basis/data_utils.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file data_utils.h
3 | * @brief Provide a few widely used function for basic type
4 | */
5 | #ifndef DATA_UTILS_H
6 | #define DATA_UTILS_H
7 |
8 | #include
9 |
10 | ///Template for transforming a vector
11 | template
12 | vec_E transform_vec(const vec_E &t, const TF &tf) {
13 | vec_E new_t;
14 | for (const auto &it : t)
15 | new_t.push_back(tf * it);
16 | return new_t;
17 | }
18 |
19 | ///Template for calculating distance
20 | template
21 | decimal_t total_distance(const vec_E& vs){
22 | decimal_t dist = 0;
23 | for(unsigned int i = 1; i < vs.size(); i++)
24 | dist += (vs[i] - vs[i-1]).norm();
25 |
26 | return dist;
27 | }
28 |
29 |
30 | ///Transform all entries in a vector using given TF
31 | #define transform_vec3 transform_vec
32 | ///Sum up total distance for Vec3f
33 | #define total_distance3f total_distance
34 | ///Sum up total distance for Vec3i
35 | #define total_distance3i total_distance
36 | #endif
37 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_geometry/ellipsoid.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file ellipsoid.h
3 | * @brief Ellipsoid class
4 | */
5 |
6 | #ifndef DECOMP_ELLIPSOID_H
7 | #define DECOMP_ELLIPSOID_H
8 |
9 | #include
10 | #include
11 | #include
12 |
13 | template
14 | struct Ellipsoid {
15 | Ellipsoid() {}
16 | Ellipsoid(const Matf& C, const Vecf& d) : C_(C), d_(d) {}
17 |
18 | /// Calculate distance to the center
19 | decimal_t dist(const Vecf& pt) const {
20 | return (C_.inverse() * (pt - d_)).norm();
21 | }
22 |
23 | /// Check if the point is inside, non-exclusive
24 | bool inside(const Vecf& pt) const {
25 | return dist(pt) <= 1;
26 | }
27 |
28 | /// Calculate points inside ellipsoid, non-exclusive
29 | vec_Vecf points_inside(const vec_Vecf &O) const {
30 | vec_Vecf new_O;
31 | for (const auto &it : O) {
32 | if (inside(it))
33 | new_O.push_back(it);
34 | }
35 | return new_O;
36 | }
37 |
38 | ///Find the closest point
39 | Vecf closest_point(const vec_Vecf &O) const {
40 | Vecf pt = Vecf::Zero();
41 | decimal_t min_dist = std::numeric_limits::max();
42 | for (const auto &it : O) {
43 | decimal_t d = dist(it);
44 | if (d < min_dist) {
45 | min_dist = d;
46 | pt = it;
47 | }
48 | }
49 | return pt;
50 | }
51 |
52 | ///Find the closest hyperplane from the closest point
53 | Hyperplane closest_hyperplane(const vec_Vecf &O) const {
54 | const auto closest_pt = closest_point(O);
55 | const auto n = C_.inverse() * C_.inverse().transpose() *
56 | (closest_pt - d_);
57 | return Hyperplane(closest_pt, n.normalized());
58 | }
59 |
60 | /// Sample n points along the contour
61 | template
62 | typename std::enable_if>::type
63 | sample(int num) const {
64 | vec_Vecf pts;
65 | decimal_t dyaw = M_PI*2/num;
66 | for(decimal_t yaw = 0; yaw < M_PI*2; yaw+=dyaw) {
67 | Vecf pt;
68 | pt << cos(yaw), sin(yaw);
69 | pts.push_back(C_ * pt + d_);
70 | }
71 | return pts;
72 | }
73 |
74 | void print() const {
75 | std::cout << "C: " << C_ << std::endl;
76 | std::cout << "d: " << d_ << std::endl;
77 | }
78 |
79 | /// Get ellipsoid volume
80 | decimal_t volume() const {
81 | return C_.determinant();
82 | }
83 |
84 | /// Get C matrix
85 | Matf C() const {
86 | return C_;
87 | }
88 |
89 | /// Get center
90 | Vecf d() const {
91 | return d_;
92 | }
93 |
94 | Matf C_;
95 | Vecf d_;
96 | };
97 |
98 | typedef Ellipsoid<2> Ellipsoid2D;
99 |
100 | typedef Ellipsoid<3> Ellipsoid3D;
101 |
102 | #endif
103 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_geometry/polyhedron.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file polygon.h
3 | * @brief Polygon class
4 | */
5 |
6 | #ifndef DECOMP_POLYGON_H
7 | #define DECOMP_POLYGON_H
8 |
9 | #include
10 |
11 | ///Hyperplane class
12 | template
13 | struct Hyperplane {
14 | Hyperplane() {}
15 | Hyperplane(const Vecf& p, const Vecf& n) : p_(p), n_(n) {}
16 |
17 | /// Calculate the signed distance from point
18 | decimal_t signed_dist(const Vecf& pt) const {
19 | return n_.dot(pt - p_);
20 | }
21 |
22 | /// Calculate the distance from point
23 | decimal_t dist(const Vecf& pt) const {
24 | return std::abs(signed_dist(pt));
25 | }
26 |
27 | /// Point on the plane
28 | Vecf p_;
29 | /// Normal of the plane, directional
30 | Vecf n_;
31 | };
32 |
33 | ///Hyperplane2D: first is the point on the hyperplane, second is the normal
34 | typedef Hyperplane<2> Hyperplane2D;
35 | ///Hyperplane3D: first is the point on the hyperplane, second is the normal
36 | typedef Hyperplane<3> Hyperplane3D;
37 |
38 |
39 | ///Polyhedron class
40 | template
41 | struct Polyhedron {
42 | ///Null constructor
43 | Polyhedron() {}
44 | ///Construct from Hyperplane array
45 | Polyhedron(const vec_E>& vs) : vs_(vs) {}
46 |
47 |
48 | ///Append Hyperplane
49 | void add(const Hyperplane& v) {
50 | vs_.push_back(v);
51 | }
52 |
53 | /// Check if the point is inside polyhedron, non-exclusive
54 | bool inside(const Vecf& pt) const {
55 | for (const auto& v : vs_) {
56 | if (v.signed_dist(pt) > epsilon_) {
57 | //printf("rejected pt: (%f, %f), d: %f\n",pt(0), pt(1), v.signed_dist(pt));
58 | return false;
59 | }
60 | }
61 | return true;
62 | }
63 |
64 | /// Calculate points inside polyhedron, non-exclusive
65 | vec_Vecf points_inside(const vec_Vecf &O) const {
66 | vec_Vecf new_O;
67 | for (const auto &it : O) {
68 | if (inside(it))
69 | new_O.push_back(it);
70 | }
71 | return new_O;
72 | }
73 |
74 | /// Calculate normals, used for visualization
75 | vec_E, Vecf>> cal_normals() const {
76 | vec_E, Vecf>> ns(vs_.size());
77 | for (size_t i = 0; i < vs_.size(); i++)
78 | ns[i] = std::make_pair(vs_[i].p_, vs_[i].n_); // fist is point, second is normal
79 | return ns;
80 | }
81 |
82 | /// Get the hyperplane array
83 | vec_E> hyperplanes() const {
84 | return vs_;
85 | }
86 |
87 | /// Hyperplane array
88 | vec_E> vs_; // normal must go outside
89 |
90 | };
91 |
92 | ///Polyhedron2D, consists of 2D hyperplane
93 | typedef Polyhedron<2> Polyhedron2D;
94 | ///Polyhedron3D, consists of 3D hyperplane
95 | typedef Polyhedron<3> Polyhedron3D;
96 |
97 | ///[A, b] for \f$Ax < b\f$
98 | template
99 | struct LinearConstraint {
100 | ///Null constructor
101 | LinearConstraint() {}
102 | /// Construct from \f$A, b\f$ directly, s.t \f$Ax < b\f$
103 | LinearConstraint(const MatDNf& A, const VecDf& b) : A_(A), b_(b) {}
104 | /**
105 | * @brief Construct from a inside point and hyperplane array
106 | * @param p0 point that is inside
107 | * @param vs hyperplane array, normal should go outside
108 | */
109 | LinearConstraint(const Vecf p0, const vec_E>& vs) {
110 | const unsigned int size = vs.size();
111 | MatDNf A(size, Dim);
112 | VecDf b(size);
113 |
114 | for (unsigned int i = 0; i < size; i++) {
115 | auto n = vs[i].n_;
116 | decimal_t c = vs[i].p_.dot(n);
117 | if (n.dot(p0) - c > 0) {
118 | n = -n;
119 | c = -c;
120 | }
121 | A.row(i) = n;
122 | b(i) = c;
123 | }
124 |
125 | A_ = A;
126 | b_ = b;
127 | }
128 |
129 | /// Check if the point is inside polyhedron using linear constraint
130 | bool inside(const Vecf &pt) {
131 | VecDf d = A_ * pt - b_;
132 | for (unsigned int i = 0; i < d.rows(); i++) {
133 | if (d(i) > 0)
134 | return false;
135 | }
136 | return true;
137 | }
138 |
139 | /// Get \f$A\f$ matrix
140 | MatDNf A() const { return A_; }
141 |
142 | /// Get \f$b\f$ matrix
143 | VecDf b() const { return b_; }
144 |
145 | MatDNf A_;
146 | VecDf b_;
147 | };
148 |
149 | ///LinearConstraint 2D
150 | typedef LinearConstraint<2> LinearConstraint2D;
151 | ///LinearConstraint 3D
152 | typedef LinearConstraint<3> LinearConstraint3D;
153 |
154 | #endif
155 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_util/decomp_base.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file decomp_base.h
3 | * @brief Decomp Base Class
4 | */
5 | #ifndef DECOMP_BASE_H
6 | #define DECOMP_BASE_H
7 |
8 | #include
9 | #include
10 | //#include
11 |
12 | /**
13 | * @brief Line Segment Class
14 | *
15 | * The basic element in EllipsoidDecomp
16 | */
17 | template
18 | class DecompBase {
19 | public:
20 | ///Null constructor
21 | DecompBase() {}
22 | /**
23 | * @brief Adding local bounding box around line seg
24 | * @param Dim Distance in corresponding axis
25 | *
26 | * This virtual bounding box is parallel to the line segment, the x,y,z axes are not w.r.t the world coordinate system, but instead, x-axis is parallel to the line, y-axis is perpendicular to the line and world z-axis, z-axis is perpendiculat to the line and y-axis
27 | */
28 | void set_local_bbox(const Vecf& bbox) {
29 | local_bbox_ = bbox;
30 | }
31 |
32 | ///Import obstacle points
33 | void set_obs(const vec_Vecf &obs) {
34 | // only consider points inside local bbox
35 | Polyhedron vs;
36 | add_local_bbox(vs);
37 | obs_ = vs.points_inside(obs);
38 | }
39 |
40 | ///Get obstacel points
41 | vec_Vecf get_obs() const { return obs_; }
42 |
43 | ///Get ellipsoid
44 | Ellipsoid get_ellipsoid() const { return ellipsoid_; }
45 |
46 | ///Get polyhedron
47 | Polyhedron get_polyhedron() const { return polyhedron_; }
48 |
49 | /**
50 | * @brief Inflate the line segment
51 | * @param radius the offset added to the long semi-axis
52 | */
53 | virtual void dilate(decimal_t radius = 0) = 0;
54 |
55 | /**
56 | * @brief Shrink the polyhedron
57 | * @param shrink_distance Shrink distance
58 | */
59 | virtual void shrink(double shrink_distance) {}
60 | protected:
61 | virtual void add_local_bbox(Polyhedron &Vs) = 0;
62 |
63 | void find_polyhedron() {
64 | //**** find half-space
65 | Polyhedron Vs;
66 | vec_Vecf obs_remain = obs_;
67 | while (!obs_remain.empty()) {
68 | const auto v = ellipsoid_.closest_hyperplane(obs_remain);
69 | Vs.add(v);
70 | vec_Vecf obs_tmp;
71 | for (const auto &it : obs_remain) {
72 | if (v.signed_dist(it) < 0)
73 | obs_tmp.push_back(it);
74 | }
75 | obs_remain = obs_tmp;
76 | /*
77 | std::cout << "a: " << a.transpose() << std::endl;
78 | std::cout << "b: " << b << std::endl;
79 | */
80 | }
81 |
82 | polyhedron_ = Vs;
83 | }
84 |
85 | /// Obstacles, input
86 | vec_Vecf obs_;
87 |
88 | /// Output ellipsoid
89 | Ellipsoid ellipsoid_;
90 | /// Output polyhedron
91 | Polyhedron polyhedron_;
92 |
93 | /// Local bounding box along the line segment
94 | Vecf local_bbox_{Vecf::Zero()};
95 | };
96 | #endif
97 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_util/ellipsoid_decomp.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file ellipsoid_decomp.h
3 | * @brief EllipsoidDecomp Class
4 | */
5 | #ifndef ELLIPSOID_DECOMP_H
6 | #define ELLIPSOID_DECOMP_H
7 |
8 | #include
9 | #include
10 |
11 | /**
12 | * @brief EllipsoidDecomp Class
13 | *
14 | * EllipsoidDecomp takes input as a given path and find the Safe Flight Corridor around it using Ellipsoids
15 | */
16 | template
17 | class EllipsoidDecomp {
18 | public:
19 | ///Simple constructor
20 | EllipsoidDecomp() {}
21 | /**
22 | * @brief Basic constructor
23 | * @param origin The origin of the global bounding box
24 | * @param dim The dimension of the global bounding box
25 | */
26 | EllipsoidDecomp(const Vecf &origin, const Vecf &dim) {
27 | global_bbox_min_ = origin;
28 | global_bbox_max_ = origin + dim;
29 | }
30 |
31 | ///Set obstacle points
32 | void set_obs(const vec_Vecf &obs) { obs_ = &obs; }
33 |
34 | ///Set dimension of bounding box
35 | void set_local_bbox(const Vecf& bbox) { local_bbox_ = bbox; }
36 |
37 | ///Get the path that is used for dilation
38 | vec_Vecf get_path() const { return path_; }
39 |
40 | ///Get the Safe Flight Corridor
41 | vec_E> get_polyhedrons() const { return polyhedrons_; }
42 |
43 | ///Get the ellipsoids
44 | vec_E> get_ellipsoids() const { return ellipsoids_; }
45 |
46 | ///Get the constraints of SFC as \f$Ax\leq b \f$
47 | vec_E> get_constraints() const {
48 | vec_E> constraints;
49 | constraints.resize(polyhedrons_.size());
50 | for (unsigned int i = 0; i < polyhedrons_.size(); i++){
51 | const Vecf pt = (path_[i] + path_[i+1])/2;
52 | constraints[i] = LinearConstraint(pt, polyhedrons_[i].hyperplanes());
53 | }
54 | return constraints;
55 | }
56 |
57 | /**
58 | * @brief Decomposition thread
59 | * @param path The path to dilate
60 | * @param offset_x offset added to the long semi-axis, default is 0
61 | */
62 | void dilate(const vec_Vecf &path, double offset_x = 0) {
63 | const unsigned int N = path.size() - 1;
64 | lines_.resize(N);
65 | ellipsoids_.resize(N);
66 | polyhedrons_.resize(N);
67 |
68 | for (unsigned int i = 0; i < N; i++) {
69 | lines_[i] = std::make_shared>(path[i], path[i+1]);
70 | lines_[i]->set_local_bbox(local_bbox_);
71 | lines_[i]->set_obs(*obs_);
72 | lines_[i]->dilate(offset_x);
73 |
74 | ellipsoids_[i] = lines_[i]->get_ellipsoid();
75 | polyhedrons_[i] = lines_[i]->get_polyhedron();
76 | }
77 |
78 |
79 | path_ = path;
80 |
81 | if(global_bbox_min_.norm() != 0 || global_bbox_max_.norm() != 0) {
82 | for(auto& it: polyhedrons_)
83 | add_global_bbox(it);
84 | }
85 |
86 | }
87 |
88 | protected:
89 | template
90 | typename std::enable_if::type
91 | add_global_bbox(Polyhedron &Vs) {
92 | //**** add bound along X, Y axis
93 |
94 | //*** X
95 | Vs.add(Hyperplane2D(Vec2f(global_bbox_max_(0), 0), Vec2f(1, 0)));
96 | Vs.add(Hyperplane2D(Vec2f(global_bbox_min_(0), 0), Vec2f(-1, 0)));
97 | //*** Y
98 | Vs.add(Hyperplane2D(Vec2f(0, global_bbox_max_(1)), Vec2f(0, 1)));
99 | Vs.add(Hyperplane2D(Vec2f(0, global_bbox_min_(1)), Vec2f(0, -1)));
100 | }
101 |
102 | template
103 | typename std::enable_if::type
104 | add_global_bbox(Polyhedron &Vs) {
105 | //**** add bound along X, Y, Z axis
106 | //*** Z
107 | Vs.add(Hyperplane3D(Vec3f(0, 0, global_bbox_max_(2)), Vec3f(0, 0, 1)));
108 | Vs.add(Hyperplane3D(Vec3f(0, 0, global_bbox_min_(2)), Vec3f(0, 0, -1)));
109 |
110 | //*** X
111 | Vs.add(Hyperplane3D(Vec3f(global_bbox_max_(0), 0, 0), Vec3f(1, 0, 0)));
112 | Vs.add(Hyperplane3D(Vec3f(global_bbox_min_(0), 0, 0), Vec3f(-1, 0, 0)));
113 | //*** Y
114 | Vs.add(Hyperplane3D(Vec3f(0, global_bbox_max_(1), 0), Vec3f(0, 1, 0)));
115 | Vs.add(Hyperplane3D(Vec3f(0, global_bbox_max_(1), 0), Vec3f(0, -1, 0)));
116 | }
117 |
118 | vec_Vecf path_;
119 | const vec_Vecf *obs_;
120 |
121 | vec_E> ellipsoids_;
122 | vec_E> polyhedrons_;
123 | std::vector>> lines_;
124 |
125 | Vecf local_bbox_{Vecf::Zero()};
126 | Vecf global_bbox_min_{Vecf::Zero()}; // bounding box params
127 | Vecf global_bbox_max_{Vecf::Zero()};
128 |
129 | };
130 |
131 | typedef EllipsoidDecomp<2> EllipsoidDecomp2D;
132 |
133 | typedef EllipsoidDecomp<3> EllipsoidDecomp3D;
134 | #endif
135 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_util/iterative_decomp.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file iterative_decomp.h
3 | * @brief IterativeDecomp Class
4 | */
5 | #ifndef ITERATIVE_DECOMP_H
6 | #define ITERATIVE_DECOMP_H
7 |
8 | #include
9 |
10 | /**
11 | * @brief IterativeDecomp Class
12 | *
13 | * Iteratively calls ElliseDecomp to form a safer Safe Flight Corridor that is away from obstacles
14 | */
15 | template
16 | class IterativeDecomp : public EllipsoidDecomp
17 | {
18 | public:
19 | ///Simple constructor
20 | IterativeDecomp() {}
21 | /**
22 | * @brief Basic constructor
23 | * @param origin The origin of the global bounding box
24 | * @param dim The dimension of the global bounding box
25 | */
26 | IterativeDecomp(const Vecf &origin, const Vecf &dim) :
27 | EllipsoidDecomp(origin, dim) {}
28 | /**
29 | * @brief Decomposition thread
30 | * @param path_raw The path to dilate
31 | * @param iter_num Max iteration number
32 | * @param offset_x offset added to the long semi-axis, default is 0
33 | * @param res Resolution to downsample the path
34 | */
35 | void dilate_iter(const vec_Vecf &path_raw, int iter_num = 5,
36 | decimal_t res = 0, decimal_t offset_x = 0) {
37 | vec_Vecf path = res > 0 ? downsample(path_raw, res) : path_raw;
38 | this->dilate(path, offset_x);
39 | vec_Vecf new_path = simplify(path);
40 | for (int i = 0; i < iter_num; i++) {
41 | if (new_path.size() == path.size())
42 | break;
43 | else {
44 | path = new_path;
45 | this->dilate(path, offset_x);
46 | new_path = simplify(path);
47 | }
48 | }
49 | }
50 |
51 | protected:
52 | /// Uniformly sample path into many segments
53 | vec_Vecf downsample(const vec_Vecf &ps, decimal_t d) {
54 | // subdivide according to length
55 | if (ps.size() < 2)
56 | return ps;
57 | vec_Vecf path;
58 | for (unsigned int i = 1; i < ps.size(); i++) {
59 | decimal_t dist = (ps[i] - ps[i - 1]).norm();
60 | int cnt = std::ceil(dist / d);
61 | for (int j = 0; j < cnt; j++)
62 | path.push_back(ps[i - 1] + j * (ps[i] - ps[i - 1]) / cnt);
63 | }
64 | path.push_back(ps.back());
65 | return path;
66 | }
67 |
68 | /// Get closest distance
69 | decimal_t cal_closest_dist(const Vecf& pt, const Polyhedron& vs){
70 | decimal_t dist = std::numeric_limits::infinity();
71 | for(const auto& it: vs.hyperplanes()){
72 | decimal_t d = std::abs(it.n_.dot(pt - it.p_));
73 | if(d < dist)
74 | dist = d;
75 | }
76 | return dist;
77 | }
78 |
79 | /// Remove redundant waypoints
80 | vec_Vecf simplify(const vec_Vecf& path) {
81 | if(path.size() <= 2)
82 | return path;
83 |
84 | Vecf ref_pt = path.front();
85 | vec_Vecf new_path;
86 | new_path.push_back(ref_pt);
87 |
88 | for(size_t i = 2; i < path.size(); i ++){
89 | if(this->polyhedrons_[i-1].inside(ref_pt) &&
90 | cal_closest_dist(ref_pt, this->polyhedrons_[i-1]) > 0.1) {
91 | }
92 | else{
93 | ref_pt = path[i-1];
94 | new_path.push_back(ref_pt);
95 | }
96 | }
97 | new_path.push_back(path.back());
98 | return new_path;
99 | }
100 | };
101 |
102 | typedef IterativeDecomp<2> IterativeDecomp2D;
103 |
104 | typedef IterativeDecomp<3> IterativeDecomp3D;
105 | #endif
106 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/include/decomp_util/seed_decomp.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file seed_decomp.h
3 | * @brief SeedDecomp Class
4 | */
5 | #ifndef SEED_DECOMP_H
6 | #define SEED_DECOMP_H
7 |
8 | #include
9 |
10 | /**
11 | * @brief Seed Decomp Class
12 | *
13 | * Dilate around the given point
14 | */
15 | template
16 | class SeedDecomp : public DecompBase {
17 | public:
18 | ///Simple constructor
19 | SeedDecomp() {};
20 | /**
21 | * @brief Basic constructor
22 | * @param p1 One end of the line seg
23 | * @param p2 The other end of the line seg
24 | */
25 | SeedDecomp(const Vecf &p) : p_(p) {}
26 | /**
27 | * @brief Inflate the seed with a sphere
28 | * @param radius Robot radius
29 | */
30 | void dilate(decimal_t radius) {
31 | this->ellipsoid_ = Ellipsoid(radius * Matf::Identity(), p_);
32 | this->find_polyhedron();
33 | add_local_bbox(this->polyhedron_);
34 | }
35 |
36 | /// Get the center
37 | Vecf get_seed() const {
38 | return p_;
39 | }
40 |
41 | protected:
42 | ///Add the bounding box
43 | void add_local_bbox(Polyhedron &Vs) {
44 | if(this->local_bbox_.norm() == 0)
45 | return;
46 |
47 | //**** virtual walls x-y-z
48 | Vecf dir = Vecf::UnitX();
49 | Vecf dir_h = Vecf::UnitY();
50 |
51 | Vecf pp1 = p_ + dir_h * this->local_bbox_(1);
52 | Vecf pp2 = p_ - dir_h * this->local_bbox_(1);
53 | Vs.add(Hyperplane(pp1, dir_h));
54 | Vs.add(Hyperplane(pp2, -dir_h));
55 |
56 | // along y
57 | Vecf pp3 = p_ + dir * this->local_bbox_(0);
58 | Vecf pp4 = p_ - dir * this->local_bbox_(0);
59 | Vs.add(Hyperplane(pp3, dir));
60 | Vs.add(Hyperplane(pp4, -dir));
61 |
62 | // along z
63 | if(Dim > 2) {
64 | Vecf dir_v = Vecf::UnitZ();
65 | Vecf pp5 = p_ + dir_v * this->local_bbox_(2);
66 | Vecf pp6 = p_ - dir_v * this->local_bbox_(2);
67 | Vs.add(Hyperplane(pp5, dir_v));
68 | Vs.add(Hyperplane(pp6, -dir_v));
69 | }
70 | }
71 |
72 | ///Seed location
73 | Vecf p_;
74 | };
75 |
76 | typedef SeedDecomp<2> SeedDecomp2D;
77 |
78 | typedef SeedDecomp<3> SeedDecomp3D;
79 |
80 | #endif
81 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | decomp_util
4 | 1.0.0
5 | The decomp_util package
6 |
7 | sikang
8 |
9 | BSD 3-Clause
10 |
11 | catkin
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/test/test_ellipsoid_decomp.cpp:
--------------------------------------------------------------------------------
1 | #include "txt_reader.hpp"
2 | #include
3 | #include
4 |
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 |
11 | int main(int argc, char **argv) {
12 | if (argc != 2) {
13 | printf(ANSI_COLOR_RED "Input txt file required!\n" ANSI_COLOR_RESET);
14 | return -1;
15 | }
16 |
17 | // Read obstacles
18 | vec_Vec2f obs;
19 | if(!read_obs<2>(argv[1], obs)) {
20 | printf(ANSI_COLOR_RED "Cannot find input file [%s]!\n" ANSI_COLOR_RESET,
21 | argv[1]);
22 | return -1;
23 | }
24 |
25 | // Set map size
26 | const Vec2f origin(-2, -2);
27 | const Vec2f range(4, 4);
28 |
29 | // Path to dilate
30 | vec_Vec2f path;
31 | path.push_back(Vec2f(1, 1.0));
32 | path.push_back(Vec2f(0.0, 0.0));
33 | path.push_back(Vec2f(-1, 1.0));
34 |
35 | // Initialize SeedDecomp2D
36 | EllipsoidDecomp2D decomp(origin, range);
37 | decomp.set_obs(obs);
38 | decomp.set_local_bbox(Vec2f(2, 2));
39 | decomp.dilate(path, 0);
40 |
41 | // Plot the result in svg image
42 | typedef boost::geometry::model::d2::point_xy point_2d;
43 | std::ofstream svg("output.svg");
44 | // Declare a stream and an SVG mapper
45 | boost::geometry::svg_mapper mapper(svg, 1000, 1000);
46 |
47 | // Draw the canvas 4 x 4m
48 | boost::geometry::model::polygon bound;
49 | std::vector points;
50 | points.push_back(point_2d(origin(0), origin(1)));
51 | points.push_back(point_2d(origin(0), origin(1) + range(1)));
52 | points.push_back(point_2d(origin(0) + range(0), origin(1) + range(1)));
53 | points.push_back(point_2d(origin(0) + range(0), origin(1)));
54 | points.push_back(point_2d(origin(0), origin(1)));
55 | boost::geometry::assign_points(bound, points);
56 | boost::geometry::correct(bound);
57 |
58 | mapper.add(bound);
59 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);"
60 | "stroke-width:2"); // White
61 | // Draw obstacles
62 | for(const auto& it: obs) {
63 | point_2d pt;
64 | boost::geometry::assign_values(pt, it(0), it(1));
65 | mapper.add(pt);
66 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red
67 | }
68 |
69 | // Draw ellispoid
70 | {
71 | for(const auto& E: decomp.get_ellipsoids()) {
72 | int num = 40; // number of points on trajectory to draw
73 | boost::geometry::model::linestring line;
74 | for (const auto& it: E.sample(num))
75 | line.push_back(point_2d(it(0), it(1)));
76 | line.push_back(line.front());
77 | mapper.add(line);
78 | mapper.map(line,
79 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5");
80 | }
81 | }
82 |
83 | // Draw polygon
84 | {
85 | for(const auto& poly: decomp.get_polyhedrons()) {
86 | const auto vertices = cal_vertices(poly);
87 | std::string ss("POLYGON((");
88 | for (size_t i = 0; i < vertices.size(); i++) {
89 | ss += std::to_string(vertices[i](0)) + " " +
90 | std::to_string(vertices[i](1));
91 | if(i == vertices.size() - 1)
92 | ss += "))";
93 | else
94 | ss += ",";
95 | }
96 |
97 | boost::geometry::model::polygon p;
98 | boost::geometry::read_wkt(ss, p);
99 | mapper.add(p);
100 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
101 | }
102 | }
103 |
104 | // Draw path
105 | {
106 | boost::geometry::model::linestring line;
107 | for(const auto& it: path)
108 | line.push_back(point_2d(it(0), it(1)));
109 | mapper.add(line);
110 | mapper.map(line,
111 | "opacity:0.8;fill:none;stroke:rgb(255,0,0);stroke-width:5");
112 | }
113 |
114 |
115 | // Write title at the lower right corner on canvas
116 | mapper.text(point_2d(1.0, -1.8), "test_ellipsoid_decomp",
117 | "fill-opacity:1.0;fill:rgb(10,10,250);");
118 |
119 | return 0;
120 | }
121 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/test/test_iterative_decomp.cpp:
--------------------------------------------------------------------------------
1 | #include "txt_reader.hpp"
2 | #include
3 | #include
4 |
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 |
11 | int main(int argc, char **argv) {
12 | if (argc != 2) {
13 | printf(ANSI_COLOR_RED "Input txt file required!\n" ANSI_COLOR_RESET);
14 | return -1;
15 | }
16 |
17 | // Read obstacles
18 | vec_Vec2f obs;
19 | if(!read_obs<2>(argv[1], obs)) {
20 | printf(ANSI_COLOR_RED "Cannot find input file [%s]!\n" ANSI_COLOR_RESET,
21 | argv[1]);
22 | return -1;
23 | }
24 |
25 | // Set map size
26 | const Vec2f origin(-2, -2);
27 | const Vec2f range(4, 4);
28 |
29 | // Path to dilate
30 | vec_Vec2f path;
31 | path.push_back(Vec2f(-1.5, 0.0));
32 | path.push_back(Vec2f(1.5, 0.3));
33 |
34 | // Initialize SeedDecomp2D
35 | IterativeDecomp2D decomp(origin, range);
36 | decomp.set_obs(obs);
37 | decomp.set_local_bbox(Vec2f(2, 2));
38 | decomp.dilate_iter(path, 5, 0.3, 0.0);
39 |
40 | // Plot the result in svg image
41 | typedef boost::geometry::model::d2::point_xy point_2d;
42 | std::ofstream svg("output.svg");
43 | // Declare a stream and an SVG mapper
44 | boost::geometry::svg_mapper mapper(svg, 1000, 1000);
45 |
46 | // Draw the canvas 4 x 4m
47 | boost::geometry::model::polygon bound;
48 | std::vector points;
49 | points.push_back(point_2d(origin(0), origin(1)));
50 | points.push_back(point_2d(origin(0), origin(1) + range(1)));
51 | points.push_back(point_2d(origin(0) + range(0), origin(1) + range(1)));
52 | points.push_back(point_2d(origin(0) + range(0), origin(1)));
53 | points.push_back(point_2d(origin(0), origin(1)));
54 | boost::geometry::assign_points(bound, points);
55 | boost::geometry::correct(bound);
56 |
57 | mapper.add(bound);
58 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);"
59 | "stroke-width:2"); // White
60 | // Draw obstacles
61 | for(const auto& it: obs) {
62 | point_2d pt;
63 | boost::geometry::assign_values(pt, it(0), it(1));
64 | mapper.add(pt);
65 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red
66 | }
67 |
68 | // Draw ellispoid
69 | {
70 | for(const auto& E: decomp.get_ellipsoids()) {
71 | int num = 40; // number of points on trajectory to draw
72 | boost::geometry::model::linestring line;
73 | for (const auto& it: E.sample(num))
74 | line.push_back(point_2d(it(0), it(1)));
75 | line.push_back(line.front());
76 | mapper.add(line);
77 | mapper.map(line,
78 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5");
79 | }
80 | }
81 |
82 | // Draw polygon
83 | {
84 | for(const auto& poly: decomp.get_polyhedrons()) {
85 | const auto vertices = cal_vertices(poly);
86 | std::string ss("POLYGON((");
87 | for (size_t i = 0; i < vertices.size(); i++) {
88 | ss += std::to_string(vertices[i](0)) + " " +
89 | std::to_string(vertices[i](1));
90 | if(i == vertices.size() - 1)
91 | ss += "))";
92 | else
93 | ss += ",";
94 | }
95 |
96 | boost::geometry::model::polygon p;
97 | boost::geometry::read_wkt(ss, p);
98 | mapper.add(p);
99 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
100 | }
101 | }
102 |
103 | // Draw path
104 | {
105 | boost::geometry::model::linestring line;
106 | for(const auto& it: path)
107 | line.push_back(point_2d(it(0), it(1)));
108 | mapper.add(line);
109 | mapper.map(line,
110 | "opacity:0.8;fill:none;stroke:rgb(255,0,0);stroke-width:5");
111 | }
112 |
113 |
114 | // Write title at the lower right corner on canvas
115 | mapper.text(point_2d(1.0, -1.8), "test_iterative_decomp",
116 | "fill-opacity:1.0;fill:rgb(10,10,250);");
117 |
118 | return 0;
119 | }
120 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/test/test_line_segment.cpp:
--------------------------------------------------------------------------------
1 | #include "txt_reader.hpp"
2 | #include
3 | #include
4 |
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 |
11 | int main(int argc, char **argv) {
12 | if (argc != 2) {
13 | printf(ANSI_COLOR_RED "Input txt file required!\n" ANSI_COLOR_RESET);
14 | return -1;
15 | }
16 |
17 | // Read obstacles
18 | vec_Vec2f obs;
19 | if(!read_obs<2>(argv[1], obs)) {
20 | printf(ANSI_COLOR_RED "Cannot find input file [%s]!\n" ANSI_COLOR_RESET,
21 | argv[1]);
22 | return -1;
23 | }
24 |
25 |
26 | // Seed
27 | const Vec2f pos1(-1.5, 0.0);
28 | const Vec2f pos2(1.5, 0.3);
29 |
30 | // Initialize SeedDecomp2D
31 | LineSegment2D decomp(pos1, pos2);
32 | decomp.set_obs(obs);
33 | decomp.set_local_bbox(Vec2f(2, 2));
34 | decomp.dilate(0);
35 |
36 | // Plot the result in svg image
37 | typedef boost::geometry::model::d2::point_xy point_2d;
38 | std::ofstream svg("output.svg");
39 | // Declare a stream and an SVG mapper
40 | boost::geometry::svg_mapper mapper(svg, 1000, 1000);
41 |
42 |
43 | // Draw the canvas 4 x 4m
44 | boost::geometry::model::polygon bound;
45 | const double origin_x = -2;
46 | const double origin_y = -2;
47 | const double range_x = 4;
48 | const double range_y = 4;
49 | std::vector points;
50 | points.push_back(point_2d(origin_x, origin_y));
51 | points.push_back(point_2d(origin_x, origin_y + range_y));
52 | points.push_back(point_2d(origin_x + range_x, origin_y + range_y));
53 | points.push_back(point_2d(origin_x + range_x, origin_y));
54 | points.push_back(point_2d(origin_x, origin_y));
55 | boost::geometry::assign_points(bound, points);
56 | boost::geometry::correct(bound);
57 |
58 | mapper.add(bound);
59 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);"
60 | "stroke-width:2"); // White
61 | // Draw obstacles
62 | for(const auto& it: obs) {
63 | point_2d pt;
64 | boost::geometry::assign_values(pt, it(0), it(1));
65 | mapper.add(pt);
66 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red
67 | }
68 |
69 | // Draw ellispoid
70 | {
71 | const auto E = decomp.get_ellipsoid();
72 | int num = 40; // number of points on trajectory to draw
73 | boost::geometry::model::linestring line;
74 | for (const auto& it: E.sample(num))
75 | line.push_back(point_2d(it(0), it(1)));
76 | line.push_back(line.front());
77 | mapper.add(line);
78 | mapper.map(line,
79 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5");
80 | }
81 |
82 | // Draw polygon
83 | {
84 | const auto poly = decomp.get_polyhedron();
85 | const auto vertices = cal_vertices(poly);
86 | std::string ss("POLYGON((");
87 | for (size_t i = 0; i < vertices.size(); i++) {
88 | ss += std::to_string(vertices[i](0)) + " " +
89 | std::to_string(vertices[i](1));
90 | if(i == vertices.size() - 1)
91 | ss += "))";
92 | else
93 | ss += ",";
94 | }
95 |
96 | boost::geometry::model::polygon p;
97 | boost::geometry::read_wkt(ss, p);
98 | mapper.add(p);
99 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
100 | }
101 |
102 | // Draw line segment
103 | {
104 | const auto line_segment = decomp.get_line_segment();
105 | boost::geometry::model::linestring line;
106 | for(const auto& it: line_segment)
107 | line.push_back(point_2d(it(0), it(1)));
108 | mapper.add(line);
109 | mapper.map(line,
110 | "opacity:0.8;fill:none;stroke:rgb(255,0,0);stroke-width:5");
111 | }
112 |
113 |
114 | // Write title at the lower right corner on canvas
115 | mapper.text(point_2d(1.0, -1.8), "test_line_segment",
116 | "fill-opacity:1.0;fill:rgb(10,10,250);");
117 |
118 | return 0;
119 | }
120 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/test/test_seed_decomp.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | int main(int argc, char **argv) {
10 | // Obstacles
11 | vec_Vec2f obs;
12 | obs.push_back(Vec2f(-0.2, 1.5));
13 | obs.push_back(Vec2f(1, 0));
14 | obs.push_back(Vec2f(0.8, -1));
15 | obs.push_back(Vec2f(-0.5, -0.5));
16 |
17 | // Seed
18 | const Vec2f pos(0, 0);
19 |
20 | // Initialize SeedDecomp2D
21 | SeedDecomp2D decomp(pos);
22 | decomp.set_obs(obs);
23 | decomp.set_local_bbox(Vec2f(2, 2));
24 | decomp.dilate(.1);
25 |
26 | // Plot the result in svg image
27 | typedef boost::geometry::model::d2::point_xy point_2d;
28 | std::ofstream svg("output.svg");
29 | // Declare a stream and an SVG mapper
30 | boost::geometry::svg_mapper mapper(svg, 1000, 1000);
31 |
32 |
33 | // Draw the canvas 4 x 4m
34 | boost::geometry::model::polygon bound;
35 | const double origin_x = -2;
36 | const double origin_y = -2;
37 | const double range_x = 4;
38 | const double range_y = 4;
39 | std::vector points;
40 | points.push_back(point_2d(origin_x, origin_y));
41 | points.push_back(point_2d(origin_x, origin_y + range_y));
42 | points.push_back(point_2d(origin_x + range_x, origin_y + range_y));
43 | points.push_back(point_2d(origin_x + range_x, origin_y));
44 | points.push_back(point_2d(origin_x, origin_y));
45 | boost::geometry::assign_points(bound, points);
46 | boost::geometry::correct(bound);
47 |
48 | mapper.add(bound);
49 | mapper.map(bound, "fill-opacity:1.0;fill:rgb(255,255,255);stroke:rgb(0,0,0);"
50 | "stroke-width:2"); // White
51 | // Draw obstacles
52 | for(const auto& it: obs) {
53 | point_2d pt;
54 | boost::geometry::assign_values(pt, it(0), it(1));
55 | mapper.add(pt);
56 | mapper.map(pt, "fill-opacity:1.0;fill:rgb(255,0,0);", 10); // Red
57 | }
58 |
59 | // Draw ellispoid
60 | {
61 | const auto E = decomp.get_ellipsoid();
62 | int num = 40; // number of points on trajectory to draw
63 | boost::geometry::model::linestring line;
64 | for (const auto& it: E.sample(num))
65 | line.push_back(point_2d(it(0), it(1)));
66 | line.push_back(line.front());
67 | mapper.add(line);
68 | mapper.map(line,
69 | "opacity:0.4;fill:none;stroke:rgb(118,215,234);stroke-width:5");
70 | }
71 |
72 | // Draw polygon
73 | {
74 | const auto poly = decomp.get_polyhedron();
75 | const auto vertices = cal_vertices(poly);
76 | std::string ss("POLYGON((");
77 | for (size_t i = 0; i < vertices.size(); i++) {
78 | ss += std::to_string(vertices[i](0)) + " " +
79 | std::to_string(vertices[i](1));
80 | if(i == vertices.size() - 1)
81 | ss += "))";
82 | else
83 | ss += ",";
84 | }
85 |
86 | boost::geometry::model::polygon p;
87 | boost::geometry::read_wkt(ss, p);
88 | //boost::geometry::read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", p);
89 | mapper.add(p);
90 | mapper.map(p, "fill-opacity:0.2;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
91 | }
92 |
93 |
94 | // Write title at the lower right corner on canvas
95 | mapper.text(point_2d(1.0, -1.8), "test_seed_decomp",
96 | "fill-opacity:1.0;fill:rgb(10,10,250);");
97 |
98 | return 0;
99 | }
100 |
--------------------------------------------------------------------------------
/src/DecompROS/DecompUtil/test/txt_reader.hpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 |
6 | template
7 | bool read_obs(std::string file_name, vec_Vecf& obs) {
8 | std::ifstream myfile(file_name);
9 | if (!myfile) {
10 | std::cout << "Unable to open file: " << file_name << std::endl;
11 | return false;
12 | }
13 |
14 | if (myfile.is_open()) {
15 | std::string line;
16 | while ( getline (myfile,line) ) {
17 | ///Seperate the line by single space
18 | std::istringstream buf(line);
19 | std::istream_iterator beg(buf), end;
20 |
21 | std::vector tokens(beg, end);
22 |
23 | if(tokens.size() != Dim) {
24 | std::cout << "Invalid format!" << std::endl;
25 | std::cout << line << '\n';
26 | return false;
27 | }
28 |
29 | ///Extract the digit value
30 | Vecf