From 09b5dc05cb91a53e2381eea3ad66babd734dfed7 Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Mon, 30 Dec 2024 14:04:20 -0800 Subject: [PATCH 01/11] Release 1.0 Features and Docs --- include/signals/Integration.h | 26 ++++++- include/signals/Models.h | 40 +++------- include/signals/Signal.h | 74 +++++++----------- include/signals/State.h | 138 +++++++++++----------------------- tests/IntegrationTest.cpp | 26 +++++++ 5 files changed, 132 insertions(+), 172 deletions(-) diff --git a/include/signals/Integration.h b/include/signals/Integration.h index 7105ea9..7afe8b0 100644 --- a/include/signals/Integration.h +++ b/include/signals/Integration.h @@ -70,11 +70,29 @@ struct TrapezoidalIntegratorSpec const bool& insertIntoHistory) { double dt = tf - t0; - return xInt.update(tf, xInt() + (xInt.dot() + x(tf)) * dt / 2.0, x(tf), insertIntoHistory); + return xInt.update(tf, xInt() + (x(t0) + x(tf)) * dt / 2.0, x(tf), insertIntoHistory); } }; -// TODO SimpsonIntegratorSpec +struct SimpsonIntegratorSpec +{ + template + static bool integrate(Signal& xInt, + const Signal& x, + const double& t0, + const double& tf, + const bool& insertIntoHistory) + { + double dt = tf - t0; + return xInt.update(tf, + xInt() + (x(t0) + 4.0 * x((t0 + tf) / 2.0) + x(tf)) * dt / 6.0, + x(tf), + insertIntoHistory); + } +}; + +#define MAKE_INTEGRATOR(IntegratorName) typedef Integrator IntegratorName##Integrator; -typedef Integrator EulerIntegrator; -typedef Integrator TrapezoidalIntegrator; +MAKE_INTEGRATOR(Euler) +MAKE_INTEGRATOR(Trapezoidal) +MAKE_INTEGRATOR(Simpson) diff --git a/include/signals/Models.h b/include/signals/Models.h index ec318b8..200b7ae 100644 --- a/include/signals/Models.h +++ b/include/signals/Models.h @@ -356,31 +356,15 @@ struct RigidBodyDynamics6DOF } }; -template -using Translational1DOFModel = Model>; - -template -using Translational2DOFModel = Model>; - -template -using Translational3DOFModel = Model>; - -template -using Rotational1DOFModel = Model>; - -template -using Rotational3DOFModel = Model>; - -template -using RigidBody3DOFModel = Model>; - -template -using RigidBody6DOFModel = Model>; - -typedef Translational1DOFModel Translational1DOFModeld; -typedef Translational2DOFModel Translational2DOFModeld; -typedef Translational3DOFModel Translational3DOFModeld; -typedef Rotational1DOFModel Rotational1DOFModeld; -typedef Rotational3DOFModel Rotational3DOFModeld; -typedef RigidBody3DOFModel RigidBody3DOFModeld; -typedef RigidBody6DOFModel RigidBody6DOFModeld; +#define MAKE_MODEL(ModelBaseName, ModelDOF) \ + template \ + using ModelBaseName##ModelDOF##Model = Model>; \ + typedef ModelBaseName##ModelDOF##Model ModelBaseName##ModelDOF##Modeld; + +MAKE_MODEL(Translational, 1DOF) +MAKE_MODEL(Translational, 2DOF) +MAKE_MODEL(Translational, 3DOF) +MAKE_MODEL(Rotational, 1DOF) +MAKE_MODEL(Rotational, 3DOF) +MAKE_MODEL(RigidBody, 3DOF) +MAKE_MODEL(RigidBody, 6DOF) diff --git a/include/signals/Signal.h b/include/signals/Signal.h index 292b0ea..7f029f9 100644 --- a/include/signals/Signal.h +++ b/include/signals/Signal.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include #include #include @@ -635,7 +636,7 @@ struct VectorSignalSpec } static Type NansType() { - return Type::Zero(); // TODO fix + return Type::Constant(std::numeric_limits::quiet_NaN()); } }; @@ -649,7 +650,7 @@ struct ManifoldSignalSpec } static Type NansType() { - return Type::identity(); // TODO fix + return Type::nans(); } }; @@ -683,47 +684,28 @@ inline std::ostream& operator<<(std::ostream& os, const ManifoldSignal -using Vector1Signal = VectorSignal; -template -using Vector2Signal = VectorSignal; -template -using Vector3Signal = VectorSignal; -template -using Vector4Signal = VectorSignal; -template -using Vector5Signal = VectorSignal; -template -using Vector6Signal = VectorSignal; -template -using Vector7Signal = VectorSignal; -template -using Vector8Signal = VectorSignal; -template -using Vector9Signal = VectorSignal; -template -using Vector10Signal = VectorSignal; -template -using SO2Signal = ManifoldSignal, 1>; -template -using SO3Signal = ManifoldSignal, 3>; -template -using SE2Signal = ManifoldSignal, 3>; -template -using SE3Signal = ManifoldSignal, 6>; - -typedef ScalarSignal ScalardSignal; -typedef Vector1Signal Vector1dSignal; -typedef Vector2Signal Vector2dSignal; -typedef Vector3Signal Vector3dSignal; -typedef Vector4Signal Vector4dSignal; -typedef Vector5Signal Vector5dSignal; -typedef Vector6Signal Vector6dSignal; -typedef Vector7Signal Vector7dSignal; -typedef Vector8Signal Vector8dSignal; -typedef Vector9Signal Vector9dSignal; -typedef Vector10Signal Vector10dSignal; -typedef SO2Signal SO2dSignal; -typedef SO3Signal SO3dSignal; -typedef SE2Signal SE2dSignal; -typedef SE3Signal SE3dSignal; +#define MAKE_VECTOR_SIGNAL(Dimension) \ + template \ + using Vector##Dimension##Signal = VectorSignal; \ + typedef Vector##Dimension##Signal Vector##Dimension##dSignal; + +#define MAKE_MANIF_SIGNAL(Manif, Dimension) \ + template \ + using Manif##Signal = ManifoldSignal, Dimension>; \ + typedef Manif##Signal Manif##dSignal; + +typedef ScalarSignal ScalardSignal; +MAKE_VECTOR_SIGNAL(1) +MAKE_VECTOR_SIGNAL(2) +MAKE_VECTOR_SIGNAL(3) +MAKE_VECTOR_SIGNAL(4) +MAKE_VECTOR_SIGNAL(5) +MAKE_VECTOR_SIGNAL(6) +MAKE_VECTOR_SIGNAL(7) +MAKE_VECTOR_SIGNAL(8) +MAKE_VECTOR_SIGNAL(9) +MAKE_VECTOR_SIGNAL(10) +MAKE_MANIF_SIGNAL(SO2, 1) +MAKE_MANIF_SIGNAL(SO3, 3) +MAKE_MANIF_SIGNAL(SE2, 3) +MAKE_MANIF_SIGNAL(SE3, 6) diff --git a/include/signals/State.h b/include/signals/State.h index 84008be..b6e86d9 100644 --- a/include/signals/State.h +++ b/include/signals/State.h @@ -30,6 +30,14 @@ struct State return x; } + static State nans() + { + State x; + x.pose = PoseTypeSpec::NansType(); + x.twist = TwistTypeSpec::NansType(); + return x; + } + State& operator*=(const double& s) { pose *= s; @@ -130,37 +138,6 @@ inline std::ostream& operator<<(std::ostream& os, const ManifoldStateType -using ScalarState = ScalarStateType; -template -using Vector1State = VectorStateType; -template -using Vector2State = VectorStateType; -template -using Vector3State = VectorStateType; -template -using Vector4State = VectorStateType; -template -using Vector5State = VectorStateType; -template -using Vector6State = VectorStateType; -template -using Vector7State = VectorStateType; -template -using Vector8State = VectorStateType; -template -using Vector9State = VectorStateType; -template -using Vector10State = VectorStateType; -template -using SO2State = ManifoldStateType, 2, 1>; -template -using SO3State = ManifoldStateType, 4, 3>; -template -using SE2State = ManifoldStateType, 4, 3>; -template -using SE3State = ManifoldStateType, 7, 6>; - template struct ScalarStateSignalSpec { @@ -171,7 +148,7 @@ struct ScalarStateSignalSpec } static Type NansType() { - return Type::identity(); // TODO fix + return Type::nans(); } }; @@ -185,7 +162,7 @@ struct VectorStateSignalSpec } static Type NansType() { - return Type::identity(); // TODO fix + return Type::nans(); } }; @@ -199,7 +176,7 @@ struct ManifoldStateSignalSpec } static Type NansType() { - return Type::identity(); // TODO fix + return Type::nans(); } }; @@ -234,64 +211,37 @@ inline std::ostream& operator<<(std::ostream& os, const ManifoldStateSignal \ + using Vector##Dimension##State = VectorStateType; \ + template \ + using Vector##Dimension##StateSignal = VectorStateSignal; \ + typedef Vector##Dimension##State Vector##Dimension##dState; \ + typedef Vector##Dimension##StateSignal Vector##Dimension##dStateSignal; + +#define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension) \ + template \ + using Manif##State = ManifoldStateType, Dimension, TangentDimension>; \ + template \ + using Manif##StateSignal = ManifoldStateSignal, Dimension, TangentDimension>; \ + typedef Manif##State Manif##dState; \ + typedef Manif##StateSignal Manif##dStateSignal; + template -using Vector1StateSignal = VectorStateSignal; -template -using Vector2StateSignal = VectorStateSignal; -template -using Vector3StateSignal = VectorStateSignal; -template -using Vector4StateSignal = VectorStateSignal; -template -using Vector5StateSignal = VectorStateSignal; -template -using Vector6StateSignal = VectorStateSignal; -template -using Vector7StateSignal = VectorStateSignal; -template -using Vector8StateSignal = VectorStateSignal; -template -using Vector9StateSignal = VectorStateSignal; -template -using Vector10StateSignal = VectorStateSignal; -template -using SO2StateSignal = ManifoldStateSignal, 2, 1>; -template -using SO3StateSignal = ManifoldStateSignal, 4, 3>; -template -using SE2StateSignal = ManifoldStateSignal, 4, 3>; -template -using SE3StateSignal = ManifoldStateSignal, 7, 6>; - -// TODO Macro-ize all these types of declarations and put them in Signals.h? -typedef ScalarState ScalardState; -typedef Vector1State Vector1dState; -typedef Vector2State Vector2dState; -typedef Vector3State Vector3dState; -typedef Vector4State Vector4dState; -typedef Vector5State Vector5dState; -typedef Vector6State Vector6dState; -typedef Vector7State Vector7dState; -typedef Vector8State Vector8dState; -typedef Vector9State Vector9dState; -typedef Vector10State Vector10dState; -typedef SO2State SO2dState; -typedef SO3State SO3dState; -typedef SE2State SE2dState; -typedef SE3State SE3dState; - -typedef ScalarStateSignal ScalardStateSignal; -typedef Vector1StateSignal Vector1dStateSignal; -typedef Vector2StateSignal Vector2dStateSignal; -typedef Vector3StateSignal Vector3dStateSignal; -typedef Vector4StateSignal Vector4dStateSignal; -typedef Vector5StateSignal Vector5dStateSignal; -typedef Vector6StateSignal Vector6dStateSignal; -typedef Vector7StateSignal Vector7dStateSignal; -typedef Vector8StateSignal Vector8dStateSignal; -typedef Vector9StateSignal Vector9dStateSignal; -typedef Vector10StateSignal Vector10dStateSignal; -typedef SO2StateSignal SO2dStateSignal; -typedef SO3StateSignal SO3dStateSignal; -typedef SE2StateSignal SE2dStateSignal; -typedef SE3StateSignal SE3dStateSignal; +using ScalarState = ScalarStateType; +typedef ScalarState ScalardState; +typedef ScalarStateSignal ScalardStateSignal; +MAKE_VECTOR_STATES(1) +MAKE_VECTOR_STATES(2) +MAKE_VECTOR_STATES(3) +MAKE_VECTOR_STATES(4) +MAKE_VECTOR_STATES(5) +MAKE_VECTOR_STATES(6) +MAKE_VECTOR_STATES(7) +MAKE_VECTOR_STATES(8) +MAKE_VECTOR_STATES(9) +MAKE_VECTOR_STATES(10) +MAKE_MANIF_STATES(SO2, 2, 1) +MAKE_MANIF_STATES(SO3, 4, 3) +MAKE_MANIF_STATES(SE2, 4, 3) +MAKE_MANIF_STATES(SE3, 7, 6) diff --git a/tests/IntegrationTest.cpp b/tests/IntegrationTest.cpp index df9f5ab..3562b50 100644 --- a/tests/IntegrationTest.cpp +++ b/tests/IntegrationTest.cpp @@ -58,4 +58,30 @@ BOOST_AUTO_TEST_CASE(TestTrapezoidalIntegrator) BOOST_CHECK_CLOSE(v_int(3. * M_PI / 4.), v_ref(3. * M_PI / 4.), 1.); } +BOOST_AUTO_TEST_CASE(TestSimpsonIntegrator) +{ + const double dt = 0.001; + double t = 0.; + double tf = 5. * M_PI / 4.; + + ScalardSignal v_ref, v_int; + + while (t <= tf) + { + BOOST_CHECK(v_ref.update(t, sin(t), cos(t), true)); + t += dt; + } + + ScalardSignal v_ref_dot = v_ref.dotSignal(); + + BOOST_CHECK(v_int.update(0., 0.)); + + BOOST_CHECK(SimpsonIntegrator::integrate(v_int, v_ref_dot, t, dt, true)); + + BOOST_CHECK_CLOSE(v_int(0.), v_ref(0.), 1.); + BOOST_CHECK_CLOSE(v_int(M_PI / 4.), v_ref(M_PI / 4.), 1.); + BOOST_CHECK_CLOSE(v_int(M_PI / 2.), v_ref(M_PI / 2.), 1.); + BOOST_CHECK_CLOSE(v_int(3. * M_PI / 4.), v_ref(3. * M_PI / 4.), 1.); +} + BOOST_AUTO_TEST_SUITE_END() From 48a392ea2ac586a147a94de7979fe4d57ce31722 Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Mon, 30 Dec 2024 19:47:31 -0800 Subject: [PATCH 02/11] add docs base --- Doxyfile | 24 + README.md | 75 +- docs/Integration_8h.html | 188 ++ docs/Integration_8h_source.html | 230 ++ docs/Models_8h.html | 473 ++++ docs/Models_8h_source.html | 583 +++++ docs/Signal_8h.html | 1028 ++++++++ docs/Signal_8h_source.html | 956 +++++++ docs/Signals_8h.html | 100 + docs/Signals_8h_source.html | 110 + docs/State_8h.html | 1692 +++++++++++++ docs/State_8h_source.html | 439 ++++ docs/Utils_8h.html | 111 + docs/Utils_8h_source.html | 122 + docs/annotated.html | 116 + docs/bc_s.png | Bin 0 -> 676 bytes docs/bc_sd.png | Bin 0 -> 635 bytes docs/classModel-members.html | 106 + docs/classModel.html | 464 ++++ docs/classSignal-members.html | 121 + docs/classSignal.html | 935 +++++++ docs/classes.html | 114 + docs/clipboard.js | 61 + docs/closed.png | Bin 0 -> 132 bytes docs/cookie.js | 58 + .../dir_661483514bb8dea267426763b771558e.html | 110 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 100 + docs/doc.svg | 12 + docs/docd.svg | 12 + docs/doxygen.css | 2225 +++++++++++++++++ docs/doxygen.svg | 28 + docs/doxygen_crawl.html | 154 ++ docs/dynsections.js | 194 ++ docs/files.html | 102 + docs/folderclosed.svg | 11 + docs/folderclosedd.svg | 11 + docs/folderopen.svg | 17 + docs/folderopend.svg | 12 + docs/functions.html | 207 ++ docs/functions_func.html | 156 ++ docs/functions_rela.html | 92 + docs/functions_type.html | 120 + docs/functions_vars.html | 101 + docs/globals.html | 282 +++ docs/globals_defs.html | 95 + docs/globals_enum.html | 92 + docs/globals_eval.html | 97 + docs/globals_func.html | 94 + docs/globals_type.html | 228 ++ docs/index.html | 104 + docs/jquery.js | 34 + docs/menu.js | 134 + docs/menudata.js | 102 + docs/minus.svg | 8 + docs/minusd.svg | 8 + docs/namespacemembers.html | 90 + docs/namespacemembers_func.html | 90 + docs/namespaces.html | 95 + docs/namespacesignal__utils.html | 138 + docs/nav_f.png | Bin 0 -> 153 bytes docs/nav_fd.png | Bin 0 -> 169 bytes docs/nav_g.png | Bin 0 -> 95 bytes docs/nav_h.png | Bin 0 -> 98 bytes docs/nav_hd.png | Bin 0 -> 114 bytes docs/open.png | Bin 0 -> 123 bytes docs/plus.svg | 9 + docs/plusd.svg | 9 + docs/search/all_0.js | 4 + docs/search/all_1.js | 6 + docs/search/all_10.js | 20 + docs/search/all_11.js | 5 + docs/search/all_12.js | 68 + docs/search/all_13.js | 5 + docs/search/all_14.js | 6 + docs/search/all_2.js | 9 + docs/search/all_3.js | 7 + docs/search/all_4.js | 4 + docs/search/all_5.js | 5 + docs/search/all_6.js | 4 + docs/search/all_7.js | 13 + docs/search/all_8.js | 4 + docs/search/all_9.js | 5 + docs/search/all_a.js | 17 + docs/search/all_b.js | 6 + docs/search/all_c.js | 11 + docs/search/all_d.js | 6 + docs/search/all_e.js | 19 + docs/search/all_f.js | 57 + docs/search/classes_0.js | 4 + docs/search/classes_1.js | 4 + docs/search/classes_2.js | 6 + docs/search/classes_3.js | 10 + docs/search/classes_4.js | 9 + docs/search/classes_5.js | 5 + docs/search/classes_6.js | 5 + docs/search/close.svg | 18 + docs/search/defines_0.js | 9 + docs/search/enums_0.js | 4 + docs/search/enums_1.js | 4 + docs/search/enums_2.js | 4 + docs/search/enumvalues_0.js | 5 + docs/search/enumvalues_1.js | 4 + docs/search/enumvalues_2.js | 4 + docs/search/enumvalues_3.js | 4 + docs/search/enumvalues_4.js | 4 + docs/search/enumvalues_5.js | 5 + docs/search/files_0.js | 4 + docs/search/files_1.js | 4 + docs/search/files_2.js | 6 + docs/search/files_3.js | 4 + docs/search/functions_0.js | 5 + docs/search/functions_1.js | 4 + docs/search/functions_2.js | 4 + docs/search/functions_3.js | 5 + docs/search/functions_4.js | 4 + docs/search/functions_5.js | 5 + docs/search/functions_6.js | 11 + docs/search/functions_7.js | 7 + docs/search/functions_8.js | 10 + docs/search/functions_9.js | 4 + docs/search/functions_a.js | 4 + docs/search/functions_b.js | 4 + docs/search/mag.svg | 24 + docs/search/mag_d.svg | 24 + docs/search/mag_sel.svg | 31 + docs/search/mag_seld.svg | 31 + docs/search/namespaces_0.js | 4 + docs/search/pages_0.js | 4 + docs/search/pages_1.js | 4 + docs/search/pages_2.js | 4 + docs/search/pages_3.js | 4 + docs/search/related_0.js | 6 + docs/search/search.css | 291 +++ docs/search/search.js | 694 +++++ docs/search/searchdata.js | 48 + docs/search/typedefs_0.js | 4 + docs/search/typedefs_1.js | 4 + docs/search/typedefs_2.js | 5 + docs/search/typedefs_3.js | 6 + docs/search/typedefs_4.js | 5 + docs/search/typedefs_5.js | 11 + docs/search/typedefs_6.js | 40 + docs/search/typedefs_7.js | 16 + docs/search/typedefs_8.js | 66 + docs/search/variables_0.js | 4 + docs/search/variables_1.js | 4 + docs/search/variables_2.js | 4 + docs/search/variables_3.js | 4 + docs/search/variables_4.js | 4 + docs/search/variables_5.js | 4 + docs/search/variables_6.js | 4 + docs/search/variables_7.js | 4 + docs/search/variables_8.js | 5 + docs/search/variables_9.js | 5 + docs/splitbar.png | Bin 0 -> 314 bytes docs/splitbard.png | Bin 0 -> 282 bytes docs/structEulerIntegratorSpec-members.html | 94 + docs/structEulerIntegratorSpec.html | 152 ++ docs/structIntegrator-members.html | 95 + docs/structIntegrator.html | 200 ++ docs/structManifoldSignalSpec-members.html | 96 + docs/structManifoldSignalSpec.html | 184 ++ ...structManifoldStateSignalSpec-members.html | 96 + docs/structManifoldStateSignalSpec.html | 184 ++ docs/structRigidBodyDynamics3DOF-members.html | 102 + docs/structRigidBodyDynamics3DOF.html | 315 +++ docs/structRigidBodyDynamics6DOF-members.html | 102 + docs/structRigidBodyDynamics6DOF.html | 315 +++ docs/structRigidBodyParams1D-members.html | 96 + docs/structRigidBodyParams1D.html | 167 ++ docs/structRigidBodyParams2D-members.html | 97 + docs/structRigidBodyParams2D.html | 183 ++ docs/structRigidBodyParams3D-members.html | 97 + docs/structRigidBodyParams3D.html | 183 ++ .../structRotationalDynamics1DOF-members.html | 102 + docs/structRotationalDynamics1DOF.html | 315 +++ .../structRotationalDynamics3DOF-members.html | 102 + docs/structRotationalDynamics3DOF.html | 315 +++ docs/structScalarSignalSpec-members.html | 96 + docs/structScalarSignalSpec.html | 184 ++ docs/structScalarStateSignalSpec-members.html | 96 + docs/structScalarStateSignalSpec.html | 184 ++ docs/structSignal_1_1SignalDP-members.html | 100 + docs/structSignal_1_1SignalDP.html | 161 ++ docs/structSimpsonIntegratorSpec-members.html | 94 + docs/structSimpsonIntegratorSpec.html | 152 ++ docs/structState-members.html | 104 + docs/structState.html | 396 +++ ...ructTranslationalDynamicsBase-members.html | 102 + docs/structTranslationalDynamicsBase.html | 315 +++ ...ructTrapezoidalIntegratorSpec-members.html | 94 + docs/structTrapezoidalIntegratorSpec.html | 152 ++ docs/structVectorSignalSpec-members.html | 96 + docs/structVectorSignalSpec.html | 184 ++ docs/structVectorStateSignalSpec-members.html | 96 + docs/structVectorStateSignalSpec.html | 184 ++ docs/sync_off.png | Bin 0 -> 853 bytes docs/sync_on.png | Bin 0 -> 845 bytes docs/tab_a.png | Bin 0 -> 142 bytes docs/tab_ad.png | Bin 0 -> 135 bytes docs/tab_b.png | Bin 0 -> 169 bytes docs/tab_bd.png | Bin 0 -> 173 bytes docs/tab_h.png | Bin 0 -> 177 bytes docs/tab_hd.png | Bin 0 -> 180 bytes docs/tab_s.png | Bin 0 -> 184 bytes docs/tab_sd.png | Bin 0 -> 188 bytes docs/tabs.css | 1 + include/signals/Signals.h | 24 + scripts/check_dockstrings.sh | 9 + 209 files changed, 21678 insertions(+), 59 deletions(-) create mode 100644 Doxyfile create mode 100644 docs/Integration_8h.html create mode 100644 docs/Integration_8h_source.html create mode 100644 docs/Models_8h.html create mode 100644 docs/Models_8h_source.html create mode 100644 docs/Signal_8h.html create mode 100644 docs/Signal_8h_source.html create mode 100644 docs/Signals_8h.html create mode 100644 docs/Signals_8h_source.html create mode 100644 docs/State_8h.html create mode 100644 docs/State_8h_source.html create mode 100644 docs/Utils_8h.html create mode 100644 docs/Utils_8h_source.html create mode 100644 docs/annotated.html create mode 100644 docs/bc_s.png create mode 100644 docs/bc_sd.png create mode 100644 docs/classModel-members.html create mode 100644 docs/classModel.html create mode 100644 docs/classSignal-members.html create mode 100644 docs/classSignal.html create mode 100644 docs/classes.html create mode 100644 docs/clipboard.js create mode 100644 docs/closed.png create mode 100644 docs/cookie.js create mode 100644 docs/dir_661483514bb8dea267426763b771558e.html create mode 100644 docs/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 docs/doc.svg create mode 100644 docs/docd.svg create mode 100644 docs/doxygen.css create mode 100644 docs/doxygen.svg create mode 100644 docs/doxygen_crawl.html create mode 100644 docs/dynsections.js create mode 100644 docs/files.html create mode 100644 docs/folderclosed.svg create mode 100644 docs/folderclosedd.svg create mode 100644 docs/folderopen.svg create mode 100644 docs/folderopend.svg create mode 100644 docs/functions.html create mode 100644 docs/functions_func.html create mode 100644 docs/functions_rela.html create mode 100644 docs/functions_type.html create mode 100644 docs/functions_vars.html create mode 100644 docs/globals.html create mode 100644 docs/globals_defs.html create mode 100644 docs/globals_enum.html create mode 100644 docs/globals_eval.html create mode 100644 docs/globals_func.html create mode 100644 docs/globals_type.html create mode 100644 docs/index.html create mode 100644 docs/jquery.js create mode 100644 docs/menu.js create mode 100644 docs/menudata.js create mode 100644 docs/minus.svg create mode 100644 docs/minusd.svg create mode 100644 docs/namespacemembers.html create mode 100644 docs/namespacemembers_func.html create mode 100644 docs/namespaces.html create mode 100644 docs/namespacesignal__utils.html create mode 100644 docs/nav_f.png create mode 100644 docs/nav_fd.png create mode 100644 docs/nav_g.png create mode 100644 docs/nav_h.png create mode 100644 docs/nav_hd.png create mode 100644 docs/open.png create mode 100644 docs/plus.svg create mode 100644 docs/plusd.svg create mode 100644 docs/search/all_0.js create mode 100644 docs/search/all_1.js create mode 100644 docs/search/all_10.js create mode 100644 docs/search/all_11.js create mode 100644 docs/search/all_12.js create mode 100644 docs/search/all_13.js create mode 100644 docs/search/all_14.js create mode 100644 docs/search/all_2.js create mode 100644 docs/search/all_3.js create mode 100644 docs/search/all_4.js create mode 100644 docs/search/all_5.js create mode 100644 docs/search/all_6.js create mode 100644 docs/search/all_7.js create mode 100644 docs/search/all_8.js create mode 100644 docs/search/all_9.js create mode 100644 docs/search/all_a.js create mode 100644 docs/search/all_b.js create mode 100644 docs/search/all_c.js create mode 100644 docs/search/all_d.js create mode 100644 docs/search/all_e.js create mode 100644 docs/search/all_f.js create mode 100644 docs/search/classes_0.js create mode 100644 docs/search/classes_1.js create mode 100644 docs/search/classes_2.js create mode 100644 docs/search/classes_3.js create mode 100644 docs/search/classes_4.js create mode 100644 docs/search/classes_5.js create mode 100644 docs/search/classes_6.js create mode 100644 docs/search/close.svg create mode 100644 docs/search/defines_0.js create mode 100644 docs/search/enums_0.js create mode 100644 docs/search/enums_1.js create mode 100644 docs/search/enums_2.js create mode 100644 docs/search/enumvalues_0.js create mode 100644 docs/search/enumvalues_1.js create mode 100644 docs/search/enumvalues_2.js create mode 100644 docs/search/enumvalues_3.js create mode 100644 docs/search/enumvalues_4.js create mode 100644 docs/search/enumvalues_5.js create mode 100644 docs/search/files_0.js create mode 100644 docs/search/files_1.js create mode 100644 docs/search/files_2.js create mode 100644 docs/search/files_3.js create mode 100644 docs/search/functions_0.js create mode 100644 docs/search/functions_1.js create mode 100644 docs/search/functions_2.js create mode 100644 docs/search/functions_3.js create mode 100644 docs/search/functions_4.js create mode 100644 docs/search/functions_5.js create mode 100644 docs/search/functions_6.js create mode 100644 docs/search/functions_7.js create mode 100644 docs/search/functions_8.js create mode 100644 docs/search/functions_9.js create mode 100644 docs/search/functions_a.js create mode 100644 docs/search/functions_b.js create mode 100644 docs/search/mag.svg create mode 100644 docs/search/mag_d.svg create mode 100644 docs/search/mag_sel.svg create mode 100644 docs/search/mag_seld.svg create mode 100644 docs/search/namespaces_0.js create mode 100644 docs/search/pages_0.js create mode 100644 docs/search/pages_1.js create mode 100644 docs/search/pages_2.js create mode 100644 docs/search/pages_3.js create mode 100644 docs/search/related_0.js create mode 100644 docs/search/search.css create mode 100644 docs/search/search.js create mode 100644 docs/search/searchdata.js create mode 100644 docs/search/typedefs_0.js create mode 100644 docs/search/typedefs_1.js create mode 100644 docs/search/typedefs_2.js create mode 100644 docs/search/typedefs_3.js create mode 100644 docs/search/typedefs_4.js create mode 100644 docs/search/typedefs_5.js create mode 100644 docs/search/typedefs_6.js create mode 100644 docs/search/typedefs_7.js create mode 100644 docs/search/typedefs_8.js create mode 100644 docs/search/variables_0.js create mode 100644 docs/search/variables_1.js create mode 100644 docs/search/variables_2.js create mode 100644 docs/search/variables_3.js create mode 100644 docs/search/variables_4.js create mode 100644 docs/search/variables_5.js create mode 100644 docs/search/variables_6.js create mode 100644 docs/search/variables_7.js create mode 100644 docs/search/variables_8.js create mode 100644 docs/search/variables_9.js create mode 100644 docs/splitbar.png create mode 100644 docs/splitbard.png create mode 100644 docs/structEulerIntegratorSpec-members.html create mode 100644 docs/structEulerIntegratorSpec.html create mode 100644 docs/structIntegrator-members.html create mode 100644 docs/structIntegrator.html create mode 100644 docs/structManifoldSignalSpec-members.html create mode 100644 docs/structManifoldSignalSpec.html create mode 100644 docs/structManifoldStateSignalSpec-members.html create mode 100644 docs/structManifoldStateSignalSpec.html create mode 100644 docs/structRigidBodyDynamics3DOF-members.html create mode 100644 docs/structRigidBodyDynamics3DOF.html create mode 100644 docs/structRigidBodyDynamics6DOF-members.html create mode 100644 docs/structRigidBodyDynamics6DOF.html create mode 100644 docs/structRigidBodyParams1D-members.html create mode 100644 docs/structRigidBodyParams1D.html create mode 100644 docs/structRigidBodyParams2D-members.html create mode 100644 docs/structRigidBodyParams2D.html create mode 100644 docs/structRigidBodyParams3D-members.html create mode 100644 docs/structRigidBodyParams3D.html create mode 100644 docs/structRotationalDynamics1DOF-members.html create mode 100644 docs/structRotationalDynamics1DOF.html create mode 100644 docs/structRotationalDynamics3DOF-members.html create mode 100644 docs/structRotationalDynamics3DOF.html create mode 100644 docs/structScalarSignalSpec-members.html create mode 100644 docs/structScalarSignalSpec.html create mode 100644 docs/structScalarStateSignalSpec-members.html create mode 100644 docs/structScalarStateSignalSpec.html create mode 100644 docs/structSignal_1_1SignalDP-members.html create mode 100644 docs/structSignal_1_1SignalDP.html create mode 100644 docs/structSimpsonIntegratorSpec-members.html create mode 100644 docs/structSimpsonIntegratorSpec.html create mode 100644 docs/structState-members.html create mode 100644 docs/structState.html create mode 100644 docs/structTranslationalDynamicsBase-members.html create mode 100644 docs/structTranslationalDynamicsBase.html create mode 100644 docs/structTrapezoidalIntegratorSpec-members.html create mode 100644 docs/structTrapezoidalIntegratorSpec.html create mode 100644 docs/structVectorSignalSpec-members.html create mode 100644 docs/structVectorSignalSpec.html create mode 100644 docs/structVectorStateSignalSpec-members.html create mode 100644 docs/structVectorStateSignalSpec.html create mode 100644 docs/sync_off.png create mode 100644 docs/sync_on.png create mode 100644 docs/tab_a.png create mode 100644 docs/tab_ad.png create mode 100644 docs/tab_b.png create mode 100644 docs/tab_bd.png create mode 100644 docs/tab_h.png create mode 100644 docs/tab_hd.png create mode 100644 docs/tab_s.png create mode 100644 docs/tab_sd.png create mode 100644 docs/tabs.css create mode 100644 scripts/check_dockstrings.sh diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..f5d9334 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,24 @@ +# Project-related information +PROJECT_NAME = "signals-cpp" +OUTPUT_DIRECTORY = "docs" # Directory where the docs are generated +RECURSIVE = YES # Recursively scan all subdirectories +EXTRACT_ALL = YES # Extract all code comments + +# HTML output settings +GENERATE_HTML = YES # Enable HTML documentation +GENERATE_LATEX = NO # Disable LaTeX documentation +HTML_OUTPUT = . # Specify HTML output directory + +# MathJax integration (for math rendering) +USE_MATHJAX = YES # Enable MathJax support for math rendering + +# Input settings (multiple directories) +INPUT = include # Include both C++ and Python directories for parsing + +# File patterns +FILE_PATTERNS = *.cpp *.h *.py # Specify the file types to be parsed + +# Additional settings for LaTeX-style math +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = NO \ No newline at end of file diff --git a/README.md b/README.md index 4086328..340705d 100644 --- a/README.md +++ b/README.md @@ -4,73 +4,30 @@ Header-only templated C++ library implementing rigid-body dynamics, derivatives, integrals, and interpolation. -**Under construction** +View the library documentation [HERE](https://andrewtorgesen.com/signals-cpp). -## Implemented Types +## Installation -### Signal Types +This code is meant to be built as a static library with CMake. It should be compatible with the latest versions of +Eigen and Boost (unit test framework only). +The library [manif-geom-cpp](https://github.com/goromal/manif-geom-cpp) must also be installed. -Scalar signal type: +Install with -```cpp -ScalarSignal x; +```bash +mkdir build +cd build +cmake .. +make # or make install ``` -Vector signal types: +By default, building will also build and run the unit tests, but this can be turned off with the CMake option `BUILD_TESTS`. -```cpp -Vector1Signal x; -Vector2Signal x; -Vector3Signal x; -Vector4Signal x; -Vector5Signal x; -Vector6Signal x; -Vector7Signal x; -Vector8Signal x; -Vector9Signal x; -Vector10Signal x; -``` - -Manifold signal types: - -``` -SO3Signal x; -SE3Signal x; -``` - -### Integrators +## Docs Generation -Euler integrator: +Generate updated docs in the `docs/` directory with -```cpp -IntegrateEuler f; -f(SignalType &xInt, TangentSignalType x, double t, bool insertHistory = false); -f(SignalType &xInt, TangentSignalType x, double t, double dt, bool insertHistory = false); +```bash +doxygen Doxyfile ``` -Trapezoidal integrator: - -```cpp -IntegrateTrapezoidal f; -f(SignalType &xInt, TangentSignalType x, double t, bool insertHistory = false); -f(SignalType &xInt, TangentSignalType x, double t, double dt, bool insertHistory = false); -``` - -### Models - -*Pending implementations:* - -- `TranslationalDynamics1DOF` - - Point mass system confined to a straight line. -- `TranslationalDynamics2DOF` - - Point mass system confined to a plane. -- `TranslationalDynamics3DOF` - - Point mass system in a 3-dimensional space. -- `RotationalDynamics1DOF` - - Single-axis rotating mass system fixed in space. -- `RotationalDynamics3DOF` - - Rotating mass fixed in 3D space. -- `RigidBodyDynamics3DOF` - - Rigid body system confined to a plane (unicycle model). -- `RigidBodyDynamics6DOF` - - Rigid body system in 3D space. diff --git a/docs/Integration_8h.html b/docs/Integration_8h.html new file mode 100644 index 0000000..4648ad5 --- /dev/null +++ b/docs/Integration_8h.html @@ -0,0 +1,188 @@ + + + + + + + +signals-cpp: include/signals/Integration.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
Integration.h File Reference
+
+
+
#include "signals/Signal.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

struct  Integrator< IntegratorType >
 
struct  EulerIntegratorSpec
 
struct  TrapezoidalIntegratorSpec
 
struct  SimpsonIntegratorSpec
 
+ + + +

+Macros

#define MAKE_INTEGRATOR(IntegratorName)   typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator;
 
+ + + + + + + +

+Typedefs

typedef Integrator< EulerIntegratorSpecEulerIntegrator
 
typedef Integrator< TrapezoidalIntegratorSpecTrapezoidalIntegrator
 
typedef Integrator< SimpsonIntegratorSpecSimpsonIntegrator
 
+

Macro Definition Documentation

+ +

◆ MAKE_INTEGRATOR

+ +
+
+ + + + + + + +
#define MAKE_INTEGRATOR( IntegratorName)   typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator;
+
+ +
+
+

Typedef Documentation

+ +

◆ EulerIntegrator

+ +
+
+ +
+
+ +

◆ SimpsonIntegrator

+ +
+
+ +
+
+ +

◆ TrapezoidalIntegrator

+ + +
+ + + + diff --git a/docs/Integration_8h_source.html b/docs/Integration_8h_source.html new file mode 100644 index 0000000..8fab850 --- /dev/null +++ b/docs/Integration_8h_source.html @@ -0,0 +1,230 @@ + + + + + + + +signals-cpp: include/signals/Integration.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Integration.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include "signals/Signal.h"
+
3
+
4template<typename IntegratorType>
+
+ +
6{
+
7 template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ + +
10 const double& tf,
+
11 const bool& insertIntoHistory = false)
+
12 {
+
13 double t0 = xInt.t();
+
14 double dt;
+
15 if (!signal_utils::getTimeDelta(dt, t0, tf))
+
16 {
+
17 return false;
+
18 }
+
19 return IntegratorType::integrate(xInt, x, t0, tf, insertIntoHistory);
+
20 }
+
+
21
+
22 template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ + +
25 const double& tf,
+
26 const double& dt,
+
27 const bool& insertIntoHistory = false)
+
28 {
+
29 double t_k = xInt.t();
+
30 bool success = true;
+
31 while (t_k < tf && success)
+
32 {
+
33 double dt_k;
+
34 if (signal_utils::getTimeDelta(dt_k, t_k, tf, dt))
+
35 {
+
36 double t_kp1 = t_k + dt_k;
+
37 success &= IntegratorType::integrate(xInt, x, t_k, t_kp1, insertIntoHistory);
+
38 t_k = t_kp1;
+
39 }
+
40 else
+
41 {
+
42 success = false;
+
43 }
+
44 }
+
45 return success;
+
46 }
+
+
47};
+
+
48
+
+ +
50{
+
51 template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ + +
54 const double& t0,
+
55 const double& tf,
+
56 const bool& insertIntoHistory)
+
57 {
+
58 double dt = tf - t0;
+
59 return xInt.update(tf, xInt() + x(tf) * dt, x(tf), insertIntoHistory);
+
60 }
+
+
61};
+
+
62
+
+ +
64{
+
65 template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ + +
68 const double& t0,
+
69 const double& tf,
+
70 const bool& insertIntoHistory)
+
71 {
+
72 double dt = tf - t0;
+
73 return xInt.update(tf, xInt() + (x(t0) + x(tf)) * dt / 2.0, x(tf), insertIntoHistory);
+
74 }
+
+
75};
+
+
76
+
+ +
78{
+
79 template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ + +
82 const double& t0,
+
83 const double& tf,
+
84 const bool& insertIntoHistory)
+
85 {
+
86 double dt = tf - t0;
+
87 return xInt.update(tf,
+
88 xInt() + (x(t0) + 4.0 * x((t0 + tf) / 2.0) + x(tf)) * dt / 6.0,
+
89 x(tf),
+
90 insertIntoHistory);
+
91 }
+
+
92};
+
+
93
+
94#define MAKE_INTEGRATOR(IntegratorName) typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator;
+
95
+ +
97MAKE_INTEGRATOR(Trapezoidal)
+ +
#define MAKE_INTEGRATOR(IntegratorName)
Definition Integration.h:94
+ +
Definition Signal.h:35
+
double t() const
Definition Signal.h:102
+
bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
Definition Signal.h:171
+
bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
Definition Utils.h:7
+
Definition Integration.h:50
+
static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
Definition Integration.h:52
+
Definition Integration.h:6
+
static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)
Definition Integration.h:23
+
static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)
Definition Integration.h:8
+
Definition Integration.h:78
+
static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
Definition Integration.h:80
+
Definition Integration.h:64
+
static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
Definition Integration.h:66
+
+ + + + diff --git a/docs/Models_8h.html b/docs/Models_8h.html new file mode 100644 index 0000000..8de9538 --- /dev/null +++ b/docs/Models_8h.html @@ -0,0 +1,473 @@ + + + + + + + +signals-cpp: include/signals/Models.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
Models.h File Reference
+
+
+
#include <optional>
+#include "signals/State.h"
+#include "signals/Integration.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Classes

class  Model< DynamicsType >
 
struct  RigidBodyParams1D
 
struct  RigidBodyParams2D
 
struct  RigidBodyParams3D
 
struct  TranslationalDynamicsBase< IST, SST, SDST, d, PT >
 
struct  RotationalDynamics1DOF< T >
 
struct  RotationalDynamics3DOF< T >
 
struct  RigidBodyDynamics3DOF< T >
 
struct  RigidBodyDynamics6DOF< T >
 
+ + + +

+Macros

#define MAKE_MODEL(ModelBaseName, ModelDOF)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<typename T >
using TranslationalDynamics1DOF
 
template<typename T >
using TranslationalDynamics2DOF
 
template<typename T >
using TranslationalDynamics3DOF
 
template<typename T >
using Translational1DOFModel = Model< TranslationalDynamics1DOF <T>>
 
typedef Translational1DOFModel< double > Translational1DOFModeld
 
template<typename T >
using Translational2DOFModel = Model< TranslationalDynamics2DOF <T>>
 
typedef Translational2DOFModel< double > Translational2DOFModeld
 
template<typename T >
using Translational3DOFModel = Model< TranslationalDynamics3DOF <T>>
 
typedef Translational3DOFModel< double > Translational3DOFModeld
 
template<typename T >
using Rotational1DOFModel = Model< RotationalDynamics1DOF <T>>
 
typedef Rotational1DOFModel< double > Rotational1DOFModeld
 
template<typename T >
using Rotational3DOFModel = Model< RotationalDynamics3DOF <T>>
 
typedef Rotational3DOFModel< double > Rotational3DOFModeld
 
template<typename T >
using RigidBody3DOFModel = Model< RigidBodyDynamics3DOF <T>>
 
typedef RigidBody3DOFModel< double > RigidBody3DOFModeld
 
template<typename T >
using RigidBody6DOFModel = Model< RigidBodyDynamics6DOF <T>>
 
typedef RigidBody6DOFModel< double > RigidBody6DOFModeld
 
+

Macro Definition Documentation

+ +

◆ MAKE_MODEL

+ +
+
+ + + + + + + + + + + +
#define MAKE_MODEL( ModelBaseName,
ModelDOF )
+
+Value:
template<typename T> \
+
using ModelBaseName##ModelDOF##Model = Model<ModelBaseName##Dynamics##ModelDOF<T>>; \
+
typedef ModelBaseName##ModelDOF##Model<double> ModelBaseName##ModelDOF##Modeld;
+
Definition Models.h:10
+
+
+
+

Typedef Documentation

+ +

◆ RigidBody3DOFModel

+ +
+
+
+template<typename T >
+ + + + +
using RigidBody3DOFModel = Model< RigidBodyDynamics3DOF <T>>
+
+ +
+
+ +

◆ RigidBody3DOFModeld

+ +
+
+ + + + +
typedef RigidBody3DOFModel<double> RigidBody3DOFModeld
+
+ +
+
+ +

◆ RigidBody6DOFModel

+ +
+
+
+template<typename T >
+ + + + +
using RigidBody6DOFModel = Model< RigidBodyDynamics6DOF <T>>
+
+ +
+
+ +

◆ RigidBody6DOFModeld

+ +
+
+ + + + +
typedef RigidBody6DOFModel<double> RigidBody6DOFModeld
+
+ +
+
+ +

◆ Rotational1DOFModel

+ +
+
+
+template<typename T >
+ + + + +
using Rotational1DOFModel = Model< RotationalDynamics1DOF <T>>
+
+ +
+
+ +

◆ Rotational1DOFModeld

+ +
+
+ + + + +
typedef Rotational1DOFModel<double> Rotational1DOFModeld
+
+ +
+
+ +

◆ Rotational3DOFModel

+ +
+
+
+template<typename T >
+ + + + +
using Rotational3DOFModel = Model< RotationalDynamics3DOF <T>>
+
+ +
+
+ +

◆ Rotational3DOFModeld

+ +
+
+ + + + +
typedef Rotational3DOFModel<double> Rotational3DOFModeld
+
+ +
+
+ +

◆ Translational1DOFModel

+ +
+
+
+template<typename T >
+ + + + +
using Translational1DOFModel = Model< TranslationalDynamics1DOF <T>>
+
+ +
+
+ +

◆ Translational1DOFModeld

+ +
+
+ + + + +
typedef Translational1DOFModel<double> Translational1DOFModeld
+
+ +
+
+ +

◆ Translational2DOFModel

+ +
+
+
+template<typename T >
+ + + + +
using Translational2DOFModel = Model< TranslationalDynamics2DOF <T>>
+
+ +
+
+ +

◆ Translational2DOFModeld

+ +
+
+ + + + +
typedef Translational2DOFModel<double> Translational2DOFModeld
+
+ +
+
+ +

◆ Translational3DOFModel

+ +
+
+
+template<typename T >
+ + + + +
using Translational3DOFModel = Model< TranslationalDynamics3DOF <T>>
+
+ +
+
+ +

◆ Translational3DOFModeld

+ +
+
+ + + + +
typedef Translational3DOFModel<double> Translational3DOFModeld
+
+ +
+
+ +

◆ TranslationalDynamics1DOF

+ +
+
+
+template<typename T >
+ + + + +
using TranslationalDynamics1DOF
+
+Initial value: +
+
+ +

◆ TranslationalDynamics2DOF

+ +
+
+
+template<typename T >
+ + + + +
using TranslationalDynamics2DOF
+
+
+ +

◆ TranslationalDynamics3DOF

+ +
+
+
+template<typename T >
+ + + + +
using TranslationalDynamics3DOF
+
+
+
+ + + + diff --git a/docs/Models_8h_source.html b/docs/Models_8h_source.html new file mode 100644 index 0000000..594d48b --- /dev/null +++ b/docs/Models_8h_source.html @@ -0,0 +1,583 @@ + + + + + + + +signals-cpp: include/signals/Models.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Models.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include <optional>
+
3#include "signals/State.h"
+ +
5
+
6using namespace Eigen;
+
7
+
8template<typename DynamicsType>
+
+
9class Model
+
10{
+
11public:
+
12 using InputSignalType = typename DynamicsType::InputSignalType;
+
13 using StateDotSignalType = typename DynamicsType::StateDotSignalType;
+
14 using StateSignalType = typename DynamicsType::StateSignalType;
+
15 using ParamsType = typename DynamicsType::ParamsType;
+
16
+ + +
19
+
+
20 Model() : params_{std::nullopt}
+
21 {
+
22 reset();
+
23 }
+
+
24
+
+
25 void setParams(const ParamsType& params)
+
26 {
+
27 params_ = params;
+
28 }
+
+
29
+
+
30 bool hasParams()
+
31 {
+
32 return params_.has_value();
+
33 }
+
+
34
+
+
35 void reset()
+
36 {
+
37 x.reset();
+
38 xdot.reset();
+
39 }
+
+
40
+
+
41 double t() const
+
42 {
+
43 return x.t();
+
44 }
+
+
45
+
46 template<typename IntegratorType>
+
+ +
48 const double& tf,
+
49 const bool& insertIntoHistory = false,
+
50 const bool& calculateXddot = false)
+
51 {
+
52 if (!hasParams())
+
53 return false;
+
54 double t0 = x.t();
+
55 double dt;
+
56 if (!signal_utils::getTimeDelta(dt, t0, tf))
+
57 {
+
58 return false;
+
59 }
+
60 if (!DynamicsType::update(xdot, x, u, t0, tf, params_.value(), insertIntoHistory, calculateXddot))
+
61 {
+
62 return false;
+
63 }
+
64 if (!IntegratorType::integrate(x, xdot, tf, insertIntoHistory))
+
65 {
+
66 return false;
+
67 }
+
68 return true;
+
69 }
+
+
70
+
71 template<typename IntegratorType>
+
+ +
73 const double& tf,
+
74 const double& dt,
+
75 const bool& insertIntoHistory = false,
+
76 const bool& calculateXddot = false)
+
77 {
+
78 if (!hasParams())
+
79 return false;
+
80 double t_k = x.t();
+
81 while (t_k < tf)
+
82 {
+
83 double dt_k;
+
84 if (!signal_utils::getTimeDelta(dt_k, t_k, tf, dt))
+
85 {
+
86 return false;
+
87 }
+
88 double t_kp1 = t_k + dt_k;
+
89 if (!DynamicsType::update(xdot, x, u, t_k, t_kp1, params_.value(), insertIntoHistory, calculateXddot))
+
90 {
+
91 return false;
+
92 }
+
93 if (!IntegratorType::integrate(x, xdot, t_kp1, insertIntoHistory))
+
94 {
+
95 return false;
+
96 }
+
97 t_k = t_kp1;
+
98 }
+
99 return true;
+
100 }
+
+
101
+
102private:
+
103 std::optional<ParamsType> params_;
+
104};
+
+
105
+
+ +
107{
+
108 RigidBodyParams1D() : m(1), g(0) {}
+
109 double m;
+
110 double g;
+
111};
+
+
112
+
+ +
114{
+
115 RigidBodyParams2D() : m(1), J(1), g(Vector2d::Zero()) {}
+
116 double m;
+
117 double J;
+
118 Vector2d g;
+
119};
+
+
120
+
+ +
122{
+
123 RigidBodyParams3D() : m(1), J(Matrix3d::Identity()), g(Vector3d::Zero()) {}
+
124 double m;
+
125 Matrix3d J;
+
126 Vector3d g;
+
127};
+
+
128
+
129template<typename IST, typename SST, typename SDST, size_t d, typename PT>
+
+ +
131{
+
132 using InputSignalType = IST;
+ +
134 using StateSignalType = SDST;
+
135
+
136 using InputType = typename InputSignalType::BaseType;
+
137 using StateType = typename StateSignalType::BaseType;
+
138 using StateDotType = typename StateDotSignalType::BaseType;
+
139 using StateDotDotType = typename StateDotSignalType::TangentType;
+
140
+
141 using ParamsType = PT;
+
142
+
+
143 static bool update(StateDotSignalType& xdot,
+
144 const StateSignalType& x,
+
145 const InputSignalType& u,
+
146 const double& t0,
+
147 const double& tf,
+
148 const ParamsType& params,
+
149 const bool& insertIntoHistory = false,
+
150 const bool& calculateXddot = false)
+
151 {
+
152 InputType u_k = u(t0);
+
153 StateType x_k = x(t0);
+
154
+
155 StateDotType xdot_k;
+
156 xdot_k.pose = x_k.twist;
+
157 xdot_k.twist = -params.g + u_k / params.m;
+
158
+
159 if (calculateXddot)
+
160 {
+
161 return xdot.update(tf, xdot_k, insertIntoHistory);
+
162 }
+
163 else
+
164 {
+
165 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
+
166 }
+
167 }
+
+
168};
+
+
169
+
170template<typename T>
+ + +
173
+
174template<typename T>
+ + +
177
+
178template<typename T>
+ + +
181
+
182template<typename T>
+
+ +
184{
+ + + +
188
+ + + + +
193
+ +
195
+
+
196 static bool update(StateDotSignalType& xdot,
+
197 const StateSignalType& x,
+
198 const InputSignalType& u,
+
199 const double& t0,
+
200 const double& tf,
+
201 const ParamsType& params,
+
202 const bool& insertIntoHistory = false,
+
203 const bool& calculateXddot = false)
+
204 {
+
205 InputType u_k = u(t0);
+
206 StateType x_k = x(t0);
+
207
+
208 StateDotType xdot_k;
+
209 xdot_k.pose = x_k.twist;
+
210 xdot_k.twist = u_k / params.J;
+
211
+
212 if (calculateXddot)
+
213 {
+
214 return xdot.update(tf, xdot_k, insertIntoHistory);
+
215 }
+
216 else
+
217 {
+
218 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
+
219 }
+
220 }
+
+
221};
+
+
222
+
223template<typename T>
+
+ +
225{
+ + + +
229
+ + + + +
234
+ +
236
+
+
237 static bool update(StateDotSignalType& xdot,
+
238 const StateSignalType& x,
+
239 const InputSignalType& u,
+
240 const double& t0,
+
241 const double& tf,
+
242 const ParamsType& params,
+
243 const bool& insertIntoHistory = false,
+
244 const bool& calculateXddot = false)
+
245 {
+
246 InputType u_k = u(t0);
+
247 StateType x_k = x(t0);
+
248
+
249 StateDotType xdot_k;
+
250 xdot_k.pose = x_k.twist;
+
251 xdot_k.twist = params.J.inverse() * (-x_k.twist.cross(params.J * x_k.twist) + u_k);
+
252
+
253 if (calculateXddot)
+
254 {
+
255 return xdot.update(tf, xdot_k, insertIntoHistory);
+
256 }
+
257 else
+
258 {
+
259 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
+
260 }
+
261 }
+
+
262};
+
+
263
+
264template<typename T>
+
+ +
266{
+ + + +
270
+ + + + +
275
+ +
277
+
+
278 static bool update(StateDotSignalType& xdot,
+
279 const StateSignalType& x,
+
280 const InputSignalType& u,
+
281 const double& t0,
+
282 const double& tf,
+
283 const ParamsType& params,
+
284 const bool& insertIntoHistory = false,
+
285 const bool& calculateXddot = false)
+
286 {
+
287 InputType u_k = u(t0);
+
288 StateType x_k = x(t0);
+
289
+
290 StateDotType xdot_k;
+
291 xdot_k.pose = x_k.twist;
+
292 xdot_k.twist.template block<2, 1>(0, 0) = -(x_k.pose.q().inverse() * params.g) -
+
293 x_k.twist(2) * Matrix<T, 2, 1>(-x_k.twist(1), x_k.twist(0)) +
+
294 1.0 / params.m * u_k.template block<2, 1>(0, 0);
+
295 xdot_k.twist(2) = u_k(2) / params.J;
+
296
+
297 if (calculateXddot)
+
298 {
+
299 return xdot.update(tf, xdot_k, insertIntoHistory);
+
300 }
+
301 else
+
302 {
+
303 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
+
304 }
+
305 }
+
+
306};
+
+
307
+
308template<typename T>
+
+ +
310{
+ + + +
314
+ + + + +
319
+ +
321
+
+
322 static bool update(StateDotSignalType& xdot,
+
323 const StateSignalType& x,
+
324 const InputSignalType& u,
+
325 const double& t0,
+
326 const double& tf,
+
327 const ParamsType& params,
+
328 const bool& insertIntoHistory = false,
+
329 const bool& calculateXddot = false)
+
330 {
+
331 InputType u_k = u(t0);
+
332 StateType x_k = x(t0);
+
333
+
334 // The entire xdot vector is in the body-frame, since we're using it as a local perturbation
+
335 // vector for the oplus and ominus operations from SE(3). i.e., we increment the translation
+
336 // vector and attitude jointly, unlike with many filter/controller implementations.
+
337 StateDotType xdot_k;
+
338 xdot_k.pose = x_k.twist;
+
339 xdot_k.twist.template block<3, 1>(0, 0) =
+
340 -(x_k.pose.q().inverse() * params.g) -
+
341 x_k.twist.template block<3, 1>(3, 0).cross(x_k.twist.template block<3, 1>(0, 0)) +
+
342 1.0 / params.m * u_k.template block<3, 1>(0, 0);
+
343 xdot_k.twist.template block<3, 1>(3, 0) =
+
344 params.J.inverse() *
+
345 (-x_k.twist.template block<3, 1>(3, 0).cross(params.J * x_k.twist.template block<3, 1>(3, 0)) +
+
346 u_k.template block<3, 1>(3, 0));
+
347
+
348 if (calculateXddot)
+
349 {
+
350 return xdot.update(tf, xdot_k, insertIntoHistory);
+
351 }
+
352 else
+
353 {
+
354 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
+
355 }
+
356 }
+
+
357};
+
+
358
+
+
359#define MAKE_MODEL(ModelBaseName, ModelDOF) \
+
360 template<typename T> \
+
361 using ModelBaseName##ModelDOF##Model = Model<ModelBaseName##Dynamics##ModelDOF<T>>; \
+
362 typedef ModelBaseName##ModelDOF##Model<double> ModelBaseName##ModelDOF##Modeld;
+
+
363
+
364MAKE_MODEL(Translational, 1DOF)
+
365MAKE_MODEL(Translational, 2DOF)
+
366MAKE_MODEL(Translational, 3DOF)
+
367MAKE_MODEL(Rotational, 1DOF)
+
368MAKE_MODEL(Rotational, 3DOF)
+
369MAKE_MODEL(RigidBody, 3DOF)
+
370MAKE_MODEL(RigidBody, 6DOF)
+ +
#define MAKE_MODEL(ModelBaseName, ModelDOF)
Definition Models.h:359
+ +
Definition Models.h:10
+
Model()
Definition Models.h:20
+
bool hasParams()
Definition Models.h:30
+
typename DynamicsType::StateSignalType StateSignalType
Definition Models.h:14
+
double t() const
Definition Models.h:41
+
void reset()
Definition Models.h:35
+
typename DynamicsType::StateDotSignalType StateDotSignalType
Definition Models.h:13
+
void setParams(const ParamsType &params)
Definition Models.h:25
+
StateDotSignalType xdot
Definition Models.h:18
+
StateSignalType x
Definition Models.h:17
+
bool simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
Definition Models.h:72
+
bool simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
Definition Models.h:47
+
typename DynamicsType::InputSignalType InputSignalType
Definition Models.h:12
+
typename DynamicsType::ParamsType ParamsType
Definition Models.h:15
+
Definition Signal.h:35
+
typename BaseSignalSpec::Type BaseType
Definition Signal.h:37
+
typename TangentSignalSpec::Type TangentType
Definition Signal.h:38
+
bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
Definition Signal.h:171
+
bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
Definition Utils.h:7
+
Definition Models.h:266
+
typename StateSignalType::BaseType StateType
Definition Models.h:272
+
typename StateDotSignalType::TangentType StateDotDotType
Definition Models.h:274
+
typename StateDotSignalType::BaseType StateDotType
Definition Models.h:273
+
typename InputSignalType::BaseType InputType
Definition Models.h:271
+
static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
Definition Models.h:278
+
Definition Models.h:310
+
typename StateDotSignalType::TangentType StateDotDotType
Definition Models.h:318
+
typename StateDotSignalType::BaseType StateDotType
Definition Models.h:317
+
typename InputSignalType::BaseType InputType
Definition Models.h:315
+
typename StateSignalType::BaseType StateType
Definition Models.h:316
+
static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
Definition Models.h:322
+
Definition Models.h:107
+
double m
Definition Models.h:109
+
double g
Definition Models.h:110
+
RigidBodyParams1D()
Definition Models.h:108
+
Definition Models.h:114
+
double m
Definition Models.h:116
+
RigidBodyParams2D()
Definition Models.h:115
+
double J
Definition Models.h:117
+
Vector2d g
Definition Models.h:118
+
Definition Models.h:122
+
Matrix3d J
Definition Models.h:125
+
Vector3d g
Definition Models.h:126
+
RigidBodyParams3D()
Definition Models.h:123
+
double m
Definition Models.h:124
+
Definition Models.h:184
+
static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
Definition Models.h:196
+
typename StateDotSignalType::TangentType StateDotDotType
Definition Models.h:192
+
typename StateDotSignalType::BaseType StateDotType
Definition Models.h:191
+
typename StateSignalType::BaseType StateType
Definition Models.h:190
+
typename InputSignalType::BaseType InputType
Definition Models.h:189
+
Definition Models.h:225
+
typename StateDotSignalType::BaseType StateDotType
Definition Models.h:232
+
typename StateDotSignalType::TangentType StateDotDotType
Definition Models.h:233
+
typename StateSignalType::BaseType StateType
Definition Models.h:231
+
typename InputSignalType::BaseType InputType
Definition Models.h:230
+
static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
Definition Models.h:237
+
Definition Models.h:131
+
SDST StateSignalType
Definition Models.h:134
+
typename StateDotSignalType::BaseType StateDotType
Definition Models.h:138
+
SST StateDotSignalType
Definition Models.h:133
+
static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
Definition Models.h:143
+
typename StateDotSignalType::TangentType StateDotDotType
Definition Models.h:139
+
PT ParamsType
Definition Models.h:141
+
typename StateSignalType::BaseType StateType
Definition Models.h:137
+
IST InputSignalType
Definition Models.h:132
+
typename InputSignalType::BaseType InputType
Definition Models.h:136
+
+ + + + diff --git a/docs/Signal_8h.html b/docs/Signal_8h.html new file mode 100644 index 0000000..e4570d2 --- /dev/null +++ b/docs/Signal_8h.html @@ -0,0 +1,1028 @@ + + + + + + + +signals-cpp: include/signals/Signal.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
Signal.h File Reference
+
+
+
#include <algorithm>
+#include <limits>
+#include <Eigen/Core>
+#include <SO2.h>
+#include <SO3.h>
+#include <SE2.h>
+#include <SE3.h>
+#include "Utils.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

class  Signal< BaseSignalSpec, TangentSignalSpec >
 
struct  Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP
 
struct  ScalarSignalSpec< T >
 
struct  VectorSignalSpec< T, d >
 
struct  ManifoldSignalSpec< ManifoldType >
 
+ + + + + +

+Macros

#define MAKE_VECTOR_SIGNAL(Dimension)
 
#define MAKE_MANIF_SIGNAL(Manif, Dimension)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<typename T >
using ScalarSignal = Signal<ScalarSignalSpec<T>, ScalarSignalSpec<T>>
 
template<typename T , size_t d>
using VectorSignal = Signal<VectorSignalSpec<T, d>, VectorSignalSpec<T, d>>
 
template<typename T , typename ManifoldType , size_t d>
using ManifoldSignal = Signal<ManifoldSignalSpec<ManifoldType>, VectorSignalSpec<T, d>>
 
typedef ScalarSignal< double > ScalardSignal
 
template<typename T >
using Vector1Signal = VectorSignal<T, 1 >
 
typedef Vector1Signal< double > Vector1dSignal
 
template<typename T >
using Vector2Signal = VectorSignal<T, 2 >
 
typedef Vector2Signal< double > Vector2dSignal
 
template<typename T >
using Vector3Signal = VectorSignal<T, 3 >
 
typedef Vector3Signal< double > Vector3dSignal
 
template<typename T >
using Vector4Signal = VectorSignal<T, 4 >
 
typedef Vector4Signal< double > Vector4dSignal
 
template<typename T >
using Vector5Signal = VectorSignal<T, 5 >
 
typedef Vector5Signal< double > Vector5dSignal
 
template<typename T >
using Vector6Signal = VectorSignal<T, 6 >
 
typedef Vector6Signal< double > Vector6dSignal
 
template<typename T >
using Vector7Signal = VectorSignal<T, 7 >
 
typedef Vector7Signal< double > Vector7dSignal
 
template<typename T >
using Vector8Signal = VectorSignal<T, 8 >
 
typedef Vector8Signal< double > Vector8dSignal
 
template<typename T >
using Vector9Signal = VectorSignal<T, 9 >
 
typedef Vector9Signal< double > Vector9dSignal
 
template<typename T >
using Vector10Signal = VectorSignal<T, 10 >
 
typedef Vector10Signal< double > Vector10dSignal
 
template<typename T >
using SO2Signal = ManifoldSignal<T, SO2 <T>, 1 >
 
typedef SO2Signal< double > SO2dSignal
 
template<typename T >
using SO3Signal = ManifoldSignal<T, SO3 <T>, 3 >
 
typedef SO3Signal< double > SO3dSignal
 
template<typename T >
using SE2Signal = ManifoldSignal<T, SE2 <T>, 3 >
 
typedef SE2Signal< double > SE2dSignal
 
template<typename T >
using SE3Signal = ManifoldSignal<T, SE3 <T>, 6 >
 
typedef SE3Signal< double > SE3dSignal
 
+ + + + + + + +

+Enumerations

enum  InterpolationMethod { ZERO_ORDER_HOLD +, LINEAR +, CUBIC_SPLINE + }
 
enum  ExtrapolationMethod { NANS +, ZEROS +, CLOSEST + }
 
enum  DerivativeMethod { DIRTY +, FINITE_DIFF + }
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename BaseSignalSpec , typename TangentSignalSpec >
Signal< BaseSignalSpec, TangentSignalSpec > operator+ (const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< TangentSignalSpec, TangentSignalSpec > &r)
 
template<typename BaseSignalSpec , typename TangentSignalSpec >
Signal< TangentSignalSpec, TangentSignalSpec > operator- (const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r)
 
template<typename BaseSignalSpec , typename TangentSignalSpec >
Signal< BaseSignalSpec, TangentSignalSpec > operator* (const double &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r)
 
template<typename BaseSignalSpec , typename TangentSignalSpec >
Signal< BaseSignalSpec, TangentSignalSpec > operator* (const Signal< BaseSignalSpec, TangentSignalSpec > &l, const double &r)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const ScalarSignal< T > &x)
 
template<typename T , size_t d>
std::ostream & operator<< (std::ostream &os, const VectorSignal< T, d > &x)
 
template<typename T , typename ManifoldType , size_t d>
std::ostream & operator<< (std::ostream &os, const ManifoldSignal< T, ManifoldType, d > &x)
 
+

Macro Definition Documentation

+ +

◆ MAKE_MANIF_SIGNAL

+ +
+
+ + + + + + + + + + + +
#define MAKE_MANIF_SIGNAL( Manif,
Dimension )
+
+Value:
template<typename T> \
+
using Manif##Signal = ManifoldSignal<T, Manif<T>, Dimension>; \
+
typedef Manif##Signal<double> Manif##dSignal;
+
Definition Signal.h:35
+
+
+
+ +

◆ MAKE_VECTOR_SIGNAL

+ +
+
+ + + + + + + +
#define MAKE_VECTOR_SIGNAL( Dimension)
+
+Value:
template<typename T> \
+
using Vector##Dimension##Signal = VectorSignal<T, Dimension>; \
+
typedef Vector##Dimension##Signal<double> Vector##Dimension##dSignal;
+
+
+
+

Typedef Documentation

+ +

◆ ManifoldSignal

+ +
+
+
+template<typename T , typename ManifoldType , size_t d>
+ + + + +
using ManifoldSignal = Signal<ManifoldSignalSpec<ManifoldType>, VectorSignalSpec<T, d>>
+
+ +
+
+ +

◆ ScalardSignal

+ +
+
+ + + + +
typedef ScalarSignal<double> ScalardSignal
+
+ +
+
+ +

◆ ScalarSignal

+ +
+
+
+template<typename T >
+ + + + +
using ScalarSignal = Signal<ScalarSignalSpec<T>, ScalarSignalSpec<T>>
+
+ +
+
+ +

◆ SE2dSignal

+ +
+
+ + + + +
typedef SE2Signal<double> SE2dSignal
+
+ +
+
+ +

◆ SE2Signal

+ +
+
+
+template<typename T >
+ + + + +
using SE2Signal = ManifoldSignal<T, SE2 <T>, 3 >
+
+ +
+
+ +

◆ SE3dSignal

+ +
+
+ + + + +
typedef SE3Signal<double> SE3dSignal
+
+ +
+
+ +

◆ SE3Signal

+ +
+
+
+template<typename T >
+ + + + +
using SE3Signal = ManifoldSignal<T, SE3 <T>, 6 >
+
+ +
+
+ +

◆ SO2dSignal

+ +
+
+ + + + +
typedef SO2Signal<double> SO2dSignal
+
+ +
+
+ +

◆ SO2Signal

+ +
+
+
+template<typename T >
+ + + + +
using SO2Signal = ManifoldSignal<T, SO2 <T>, 1 >
+
+ +
+
+ +

◆ SO3dSignal

+ +
+
+ + + + +
typedef SO3Signal<double> SO3dSignal
+
+ +
+
+ +

◆ SO3Signal

+ +
+
+
+template<typename T >
+ + + + +
using SO3Signal = ManifoldSignal<T, SO3 <T>, 3 >
+
+ +
+
+ +

◆ Vector10dSignal

+ +
+
+ + + + +
typedef Vector10Signal<double> Vector10dSignal
+
+ +
+
+ +

◆ Vector10Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector10Signal = VectorSignal<T, 10 >
+
+ +
+
+ +

◆ Vector1dSignal

+ +
+
+ + + + +
typedef Vector1Signal<double> Vector1dSignal
+
+ +
+
+ +

◆ Vector1Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector1Signal = VectorSignal<T, 1 >
+
+ +
+
+ +

◆ Vector2dSignal

+ +
+
+ + + + +
typedef Vector2Signal<double> Vector2dSignal
+
+ +
+
+ +

◆ Vector2Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector2Signal = VectorSignal<T, 2 >
+
+ +
+
+ +

◆ Vector3dSignal

+ +
+
+ + + + +
typedef Vector3Signal<double> Vector3dSignal
+
+ +
+
+ +

◆ Vector3Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector3Signal = VectorSignal<T, 3 >
+
+ +
+
+ +

◆ Vector4dSignal

+ +
+
+ + + + +
typedef Vector4Signal<double> Vector4dSignal
+
+ +
+
+ +

◆ Vector4Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector4Signal = VectorSignal<T, 4 >
+
+ +
+
+ +

◆ Vector5dSignal

+ +
+
+ + + + +
typedef Vector5Signal<double> Vector5dSignal
+
+ +
+
+ +

◆ Vector5Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector5Signal = VectorSignal<T, 5 >
+
+ +
+
+ +

◆ Vector6dSignal

+ +
+
+ + + + +
typedef Vector6Signal<double> Vector6dSignal
+
+ +
+
+ +

◆ Vector6Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector6Signal = VectorSignal<T, 6 >
+
+ +
+
+ +

◆ Vector7dSignal

+ +
+
+ + + + +
typedef Vector7Signal<double> Vector7dSignal
+
+ +
+
+ +

◆ Vector7Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector7Signal = VectorSignal<T, 7 >
+
+ +
+
+ +

◆ Vector8dSignal

+ +
+
+ + + + +
typedef Vector8Signal<double> Vector8dSignal
+
+ +
+
+ +

◆ Vector8Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector8Signal = VectorSignal<T, 8 >
+
+ +
+
+ +

◆ Vector9dSignal

+ +
+
+ + + + +
typedef Vector9Signal<double> Vector9dSignal
+
+ +
+
+ +

◆ Vector9Signal

+ +
+
+
+template<typename T >
+ + + + +
using Vector9Signal = VectorSignal<T, 9 >
+
+ +
+
+ +

◆ VectorSignal

+ +
+
+
+template<typename T , size_t d>
+ + + + +
using VectorSignal = Signal<VectorSignalSpec<T, d>, VectorSignalSpec<T, d>>
+
+ +
+
+

Enumeration Type Documentation

+ +

◆ DerivativeMethod

+ +
+
+ + + + +
enum DerivativeMethod
+
+ + + +
Enumerator
DIRTY 
FINITE_DIFF 
+ +
+
+ +

◆ ExtrapolationMethod

+ +
+
+ + + + +
enum ExtrapolationMethod
+
+ + + + +
Enumerator
NANS 
ZEROS 
CLOSEST 
+ +
+
+ +

◆ InterpolationMethod

+ +
+
+ + + + +
enum InterpolationMethod
+
+ + + + +
Enumerator
ZERO_ORDER_HOLD 
LINEAR 
CUBIC_SPLINE 
+ +
+
+

Function Documentation

+ +

◆ operator*() [1/2]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + + + + + + + +
Signal< BaseSignalSpec, TangentSignalSpec > operator* (const double & l,
const Signal< BaseSignalSpec, TangentSignalSpec > & r )
+
+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + + + + + + + +
Signal< BaseSignalSpec, TangentSignalSpec > operator* (const Signal< BaseSignalSpec, TangentSignalSpec > & l,
const double & r )
+
+ +
+
+ +

◆ operator+()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + + + + + + + +
Signal< BaseSignalSpec, TangentSignalSpec > operator+ (const Signal< BaseSignalSpec, TangentSignalSpec > & l,
const Signal< TangentSignalSpec, TangentSignalSpec > & r )
+
+ +
+
+ +

◆ operator-()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + + + + + + + +
Signal< TangentSignalSpec, TangentSignalSpec > operator- (const Signal< BaseSignalSpec, TangentSignalSpec > & l,
const Signal< BaseSignalSpec, TangentSignalSpec > & r )
+
+ +
+
+ +

◆ operator<<() [1/3]

+ +
+
+
+template<typename T , typename ManifoldType , size_t d>
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const ManifoldSignal< T, ManifoldType, d > & x )
+
+inline
+
+ +
+
+ +

◆ operator<<() [2/3]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const ScalarSignal< T > & x )
+
+inline
+
+ +
+
+ +

◆ operator<<() [3/3]

+ +
+
+
+template<typename T , size_t d>
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const VectorSignal< T, d > & x )
+
+inline
+
+ +
+
+
+ + + + diff --git a/docs/Signal_8h_source.html b/docs/Signal_8h_source.html new file mode 100644 index 0000000..28d929d --- /dev/null +++ b/docs/Signal_8h_source.html @@ -0,0 +1,956 @@ + + + + + + + +signals-cpp: include/signals/Signal.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Signal.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include <algorithm>
+
3#include <limits>
+
4#include <Eigen/Core>
+
5#include <SO2.h>
+
6#include <SO3.h>
+
7#include <SE2.h>
+
8#include <SE3.h>
+
9#include "Utils.h"
+
10
+
11using namespace Eigen;
+
12
+ +
19
+
+ +
21{
+ + + +
25};
+
+
26
+
+ +
28{
+ + +
31};
+
+
32
+
33template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+
34class Signal
+
35{
+
36public:
+
37 using BaseType = typename BaseSignalSpec::Type;
+
38 using TangentType = typename TangentSignalSpec::Type;
+
39
+
+
40 struct SignalDP
+
41 {
+
42 double t;
+ + +
45 };
+
+
46
+
47 struct
+
48 {
+
49 bool operator()(SignalDP a, SignalDP b) const
+
50 {
+
51 return a.t < b.t;
+
52 }
+ +
54
+ + + +
58
+ +
66
+
+
67 Signal(const Signal& other)
+
68 {
+
69 this->interpolationMethod = other.interpolationMethod;
+
70 this->extrapolationMethod = other.extrapolationMethod;
+
71 this->derivativeMethod = other.derivativeMethod;
+
72 this->t_ = other.t_;
+
73 this->x_ = other.x_;
+
74 this->xdot_ = other.xdot_;
+
75 this->signalHistory_ = other.signalHistory_;
+
76 this->needsSort_ = other.needsSort_;
+
77 }
+
+
78
+
+ +
80 {
+ +
82 for (auto signalDP : signalHistory_)
+
83 {
+
84 signalDot.update(signalDP.t, signalDP.xdot, true);
+
85 }
+
86 signalDot.update(t(), dot());
+
87 return signalDot;
+
88 }
+
+
89
+
90 template<typename BSS, typename TSS>
+ +
92
+
93 template<typename BSS, typename TSS>
+ +
95
+
96 template<typename BSS, typename TSS>
+
97 friend Signal<BSS, TSS> operator*(const double& l, const Signal<BSS, TSS>& r);
+
98
+
99 template<typename BSS, typename TSS>
+
100 friend Signal<BSS, TSS> operator*(const Signal<BSS, TSS>& l, const double& r);
+
101
+
+
102 double t() const
+
103 {
+
104 return t_;
+
105 }
+
+
106
+
+ +
108 {
+
109 return x_;
+
110 }
+
+
111
+
+ +
113 {
+
114 return xdot_;
+
115 }
+
+
116
+
+
117 BaseType operator()(const double& t) const
+
118 {
+
119 return xAt(t);
+
120 }
+
+
121
+
+
122 TangentType dot(const double& t) const
+
123 {
+
124 return xDotAt(t);
+
125 }
+
+
126
+
+
127 std::vector<BaseType> operator()(const std::vector<double>& t) const
+
128 {
+
129 std::vector<BaseType> xInterp;
+
130 for (size_t i = 0; i < t.size(); i++)
+
131 {
+
132 xInterp.push_back(xAt(t[i]));
+
133 }
+
134 return xInterp;
+
135 }
+
+
136
+
+
137 std::vector<TangentType> dot(const std::vector<double>& t) const
+
138 {
+
139 std::vector<TangentType> xDotInterp;
+
140 for (size_t i = 0; i < t.size(); i++)
+
141 {
+
142 xDotInterp.push_back(xDotAt(t[i]));
+
143 }
+
144 return xDotInterp;
+
145 }
+
+
146
+
+ +
148 {
+
149 interpolationMethod = method;
+
150 }
+
+
151
+
+ +
153 {
+
154 extrapolationMethod = method;
+
155 }
+
+
156
+
+ +
158 {
+
159 derivativeMethod = method;
+
160 }
+
+
161
+
+
162 void reset()
+
163 {
+
164 t_ = -1.0;
+
165 x_ = BaseSignalSpec::ZeroType();
+
166 xdot_ = TangentSignalSpec::ZeroType();
+
167 signalHistory_.clear();
+
168 needsSort_ = false;
+
169 }
+
+
170
+
+
171 bool update(const double& _t, const BaseType& _x, bool insertHistory = false)
+
172 {
+
173 TangentType _xdot;
+
174 if (!calculateDerivative(_t, _x, _xdot))
+
175 {
+
176 return false;
+
177 }
+
178 return update(_t, _x, _xdot, insertHistory);
+
179 }
+
+
180
+
+
181 bool update(const double& _t, const BaseType& _x, const TangentType& _xdot, bool insertHistory = false)
+
182 {
+
183 t_ = _t;
+
184 x_ = _x;
+
185 xdot_ = _xdot;
+
186 if (insertHistory)
+
187 {
+
188 if (insertIntoHistory(_t, _x, _xdot))
+
189 {
+
190 if (needsSort_)
+
191 {
+
192 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
+
193 needsSort_ = false;
+
194 }
+
195 return true;
+
196 }
+
197 else
+
198 {
+
199 return false;
+
200 }
+
201 }
+
202 return true;
+
203 }
+
+
204
+
+
205 bool update(const std::vector<double>& _tHistory, const std::vector<BaseType>& _xHistory)
+
206 {
+
207 size_t nTH = _tHistory.size();
+
208 size_t nXH = _xHistory.size();
+
209 if (nTH != nXH)
+
210 {
+
211 return false;
+
212 }
+
213 for (size_t i = 0; i < nXH; i++)
+
214 {
+
215 TangentType _xdot;
+
216 if (!calculateDerivative(_tHistory[i], _xHistory[i], _xdot))
+
217 {
+
218 return false;
+
219 }
+
220 if (!insertIntoHistory(_tHistory[i], _xHistory[i], _xdot))
+
221 {
+
222 return false;
+
223 }
+
224 }
+
225 if (needsSort_)
+
226 {
+
227 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
+
228 needsSort_ = false;
+
229 }
+
230 return true;
+
231 }
+
+
232
+
+
233 bool update(const std::vector<double>& _tHistory,
+
234 const std::vector<BaseType>& _xHistory,
+
235 const std::vector<TangentType>& _xdotHistory)
+
236 {
+
237 size_t nTH = _tHistory.size();
+
238 size_t nXH = _xHistory.size();
+
239 size_t nXDH = _xdotHistory.size();
+
240 if (nXH != nXDH || nXDH != nTH)
+
241 {
+
242 return false;
+
243 }
+
244 for (size_t i = 0; i < nXH; i++)
+
245 {
+
246 if (!insertIntoHistory(_tHistory[i], _xHistory[i], _xdotHistory[i]))
+
247 {
+
248 return false;
+
249 }
+
250 }
+
251 if (needsSort_)
+
252 {
+
253 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
+
254 needsSort_ = false;
+
255 }
+
256 return true;
+
257 }
+
+
258
+
259private:
+
260 double t_;
+
261 BaseType x_;
+
262 TangentType xdot_;
+
263 std::vector<SignalDP> signalHistory_;
+
264 bool needsSort_;
+
265
+
266 bool insertIntoHistory(const double& _t, const BaseType& _x, const TangentType& _xdot)
+
267 {
+
268 if (_t > t_)
+
269 {
+
270 t_ = _t;
+
271 x_ = _x;
+
272 xdot_ = _xdot;
+
273 }
+
274 if (signalHistory_.size() > 0)
+
275 {
+
276 double mostRecentTime = signalHistory_[signalHistory_.size() - 1].t;
+
277 if (_t == mostRecentTime)
+
278 {
+
279 return false;
+
280 }
+
281 else if (_t < mostRecentTime)
+
282 {
+
283 needsSort_ = true;
+
284 }
+
285 }
+
286 signalHistory_.push_back({_t, _x, _xdot});
+
287 return true;
+
288 }
+
289
+
290 BaseType xAt(const double& t) const
+
291 {
+
292 if (t == t_)
+
293 {
+
294 return x_;
+
295 }
+
296 else if (signalHistory_.size() > 0)
+
297 {
+
298 int idx = getInterpIndex(t);
+
299 if (idx < 0 || idx >= static_cast<int>(signalHistory_.size()))
+
300 {
+
301 switch (extrapolationMethod)
+
302 {
+ +
304 return BaseSignalSpec::NansType();
+
305 break;
+ +
307 if (idx < 0)
+
308 {
+
309 return signalHistory_[0].x;
+
310 }
+
311 else
+
312 {
+
313 return signalHistory_[signalHistory_.size() - 1].x;
+
314 }
+
315 break;
+ +
317 default:
+
318 return BaseSignalSpec::ZeroType();
+
319 break;
+
320 }
+
321 }
+
322 else
+
323 {
+
324 BaseType y = xAtIdx(idx);
+
325 TangentType dy;
+
326 switch (interpolationMethod)
+
327 {
+ +
329 dy = TangentSignalSpec::ZeroType();
+
330 break;
+
331 }
+ +
333 double t1 = tAtIdx(idx);
+
334 double t2 = tAtIdx(idx + 1);
+
335 BaseType y1 = xAtIdx(idx);
+
336 BaseType y2 = xAtIdx(idx + 1);
+
337 dy = (t - t1) / (t2 - t1) * (y2 - y1);
+
338 break;
+
339 }
+ +
341 double t0 = tAtIdx(idx - 1);
+
342 double t1 = tAtIdx(idx);
+
343 double t2 = tAtIdx(idx + 1);
+
344 double t3 = tAtIdx(idx + 2);
+
345 BaseType y0 = xAtIdx(idx - 1);
+
346 BaseType y1 = xAtIdx(idx);
+
347 BaseType y2 = xAtIdx(idx + 1);
+
348 BaseType y3 = xAtIdx(idx + 2);
+
349 dy =
+
350 (t - t1) / (t2 - t1) *
+
351 ((y2 - y1) + (t2 - t) / (2. * (t2 - t1) * (t2 - t1)) *
+
352 (((t2 - t) * (t2 * (y1 - y0) + t0 * (y2 - y1) - t1 * (y2 - y0))) / (t1 - t0) +
+
353 ((t - t1) * (t3 * (y2 - y1) + t2 * (y3 - y1) - t1 * (y3 - y2))) / (t3 - t2)));
+
354 break;
+
355 }
+
356 }
+
357 return y + dy;
+
358 }
+
359 }
+
360 else
+
361 {
+
362 return BaseSignalSpec::ZeroType();
+
363 }
+
364 }
+
365
+
366 TangentType xDotAt(const double& t) const
+
367 {
+
368 if (t == t_)
+
369 {
+
370 return xdot_;
+
371 }
+
372 else if (signalHistory_.size() > 0)
+
373 {
+
374 int idx = getInterpIndex(t);
+
375 if (idx < 0 || idx >= static_cast<int>(signalHistory_.size()))
+
376 {
+
377 switch (extrapolationMethod)
+
378 {
+ +
380 return TangentSignalSpec::NansType();
+
381 break;
+ +
383 if (idx < 0)
+
384 {
+
385 return signalHistory_[0].xdot;
+
386 }
+
387 else
+
388 {
+
389 return signalHistory_[signalHistory_.size() - 1].xdot;
+
390 }
+
391 break;
+ +
393 default:
+
394 return TangentSignalSpec::ZeroType();
+
395 break;
+
396 }
+
397 }
+
398 else
+
399 {
+
400 TangentType y = xDotAtIdx(idx);
+
401 TangentType dy;
+
402 switch (interpolationMethod)
+
403 {
+ +
405 dy = TangentSignalSpec::ZeroType();
+
406 break;
+
407 }
+ +
409 double t1 = tAtIdx(idx);
+
410 double t2 = tAtIdx(idx + 1);
+
411 TangentType y1 = xDotAtIdx(idx);
+
412 TangentType y2 = xDotAtIdx(idx + 1);
+
413 dy = (t - t1) / (t2 - t1) * (y2 - y1);
+
414 break;
+
415 }
+ +
417 double t0 = tAtIdx(idx - 1);
+
418 double t1 = tAtIdx(idx);
+
419 double t2 = tAtIdx(idx + 1);
+
420 double t3 = tAtIdx(idx + 2);
+
421 TangentType y0 = xDotAtIdx(idx - 1);
+
422 TangentType y1 = xDotAtIdx(idx);
+
423 TangentType y2 = xDotAtIdx(idx + 1);
+
424 TangentType y3 = xDotAtIdx(idx + 2);
+
425 dy =
+
426 (t - t1) / (t2 - t1) *
+
427 ((y2 - y1) + (t2 - t) / (2. * (t2 - t1) * (t2 - t1)) *
+
428 (((t2 - t) * (t2 * (y1 - y0) + t0 * (y2 - y1) - t1 * (y2 - y0))) / (t1 - t0) +
+
429 ((t - t1) * (t3 * (y2 - y1) + t2 * (y3 - y1) - t1 * (y3 - y2))) / (t3 - t2)));
+
430 break;
+
431 }
+
432 }
+
433 return y + dy;
+
434 }
+
435 }
+
436 else
+
437 {
+
438 return TangentSignalSpec::ZeroType();
+
439 }
+
440 }
+
441
+
442 // Implementation note: signal history size must > 0
+
443 int getInterpIndex(const double& t) const
+
444 {
+
445 if (t < signalHistory_[0].t)
+
446 {
+
447 return -1;
+
448 }
+
449 else if (t > signalHistory_[signalHistory_.size() - 1].t)
+
450 {
+
451 return static_cast<int>(signalHistory_.size());
+
452 }
+
453 else
+
454 {
+
455 for (size_t i = 0; i < signalHistory_.size(); i++)
+
456 {
+
457 double t_i = signalHistory_[i].t;
+
458 double t_ip1 = tAtIdx(i + 1);
+
459 if (t_i <= t && t_ip1 > t)
+
460 {
+
461 return static_cast<int>(i);
+
462 }
+
463 }
+
464 return -1;
+
465 }
+
466 }
+
467
+
468 double tAtIdx(const int& idx) const
+
469 {
+
470 if (idx < 0)
+
471 {
+
472 return signalHistory_[0].t + static_cast<double>(idx);
+
473 }
+
474 else if (idx >= signalHistory_.size())
+
475 {
+
476 return signalHistory_[signalHistory_.size() - 1].t +
+
477 static_cast<double>(idx - static_cast<int>(signalHistory_.size() - 1));
+
478 }
+
479 else
+
480 {
+
481 return signalHistory_[idx].t;
+
482 }
+
483 }
+
484
+
485 BaseType xAtIdx(const int& idx) const
+
486 {
+
487 if (idx < 0)
+
488 {
+
489 return signalHistory_[0].x;
+
490 }
+
491 else if (idx >= signalHistory_.size())
+
492 {
+
493 return signalHistory_[signalHistory_.size() - 1].x;
+
494 }
+
495 else
+
496 {
+
497 return signalHistory_[idx].x;
+
498 }
+
499 }
+
500
+
501 TangentType xDotAtIdx(const int& idx) const
+
502 {
+
503 if (idx < 0)
+
504 {
+
505 return signalHistory_[0].xdot;
+
506 }
+
507 else if (idx >= signalHistory_.size())
+
508 {
+
509 return signalHistory_[signalHistory_.size() - 1].xdot;
+
510 }
+
511 else
+
512 {
+
513 return signalHistory_[idx].xdot;
+
514 }
+
515 }
+
516
+
517 // Implementation note: should always be followed by a call to update()
+
518 bool calculateDerivative(const double& _t, const BaseType& _x, TangentType& _xdot)
+
519 {
+
520 const static double sigma = 0.05;
+
521 if (_t <= t_)
+
522 {
+
523 return false;
+
524 }
+
525 if (t_ >= 0)
+
526 {
+
527 const double dt = _t - t_;
+
528 const TangentType dx = _x - x_;
+
529 switch (derivativeMethod)
+
530 {
+ +
532 _xdot = (2. * sigma - dt) / (2. * sigma + dt) * xdot_ + 2. / (2. * sigma + dt) * dx;
+
533 break;
+ +
535 _xdot = dx / dt;
+
536 break;
+
537 }
+
538 }
+
539 else
+
540 {
+
541 _xdot = TangentSignalSpec::ZeroType();
+
542 }
+
543 return true;
+
544 }
+
545};
+
+
546
+
547template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ + +
550{
+ +
552 lpr.x_ += r(l.t());
+
553 lpr.xdot_ += r.dot(l.t());
+
554 for (auto& signalDP : lpr.signalHistory_)
+
555 {
+
556 signalDP.x += r(signalDP.t);
+
557 signalDP.xdot += r.dot(signalDP.t);
+
558 }
+
559 return lpr;
+
560}
+
+
561
+
562template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ + +
565{
+ + + + +
570 lmr.needsSort_ = l.needsSort_;
+
571 lmr.t_ = l.t();
+
572 lmr.x_ = l() - r(l.t());
+
573 lmr.xdot_ = l.dot() - r.dot(l.t());
+
574 std::vector<double> tHistory;
+
575 std::vector<typename TangentSignalSpec::Type> xHistory;
+
576 std::vector<typename TangentSignalSpec::Type> xdotHistory;
+
577 for (auto& signalDP : l.signalHistory_)
+
578 {
+
579 tHistory.push_back(signalDP.t);
+
580 xHistory.push_back(signalDP.x - r(signalDP.t));
+
581 xdotHistory.push_back(signalDP.xdot - r.dot(signalDP.t));
+
582 }
+
583 lmr.update(tHistory, xHistory, xdotHistory);
+
584 return lmr;
+
585}
+
+
586
+
587template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ +
589{
+ +
591 lr.x_ *= l;
+
592 lr.xdot_ *= l;
+
593 for (auto& signalDP : lr.signalHistory_)
+
594 {
+
595 signalDP.x *= l;
+
596 signalDP.xdot *= l;
+
597 }
+
598 return lr;
+
599}
+
+
600
+
601template<typename BaseSignalSpec, typename TangentSignalSpec>
+
+ +
603{
+ +
605 lr.x_ *= r;
+
606 lr.xdot_ *= r;
+
607 for (auto& signalDP : lr.signalHistory_)
+
608 {
+
609 signalDP.x *= r;
+
610 signalDP.xdot *= r;
+
611 }
+
612 return lr;
+
613}
+
+
614
+
615template<typename T>
+
+ +
617{
+
618 using Type = T;
+
+
619 static Type ZeroType()
+
620 {
+
621 return (T)0.0;
+
622 }
+
+
+
623 static Type NansType()
+
624 {
+
625 return (T)1. / 0.;
+
626 }
+
+
627};
+
+
628
+
629template<typename T, size_t d>
+
+ +
631{
+
632 using Type = Matrix<T, d, 1>;
+
+
633 static Type ZeroType()
+
634 {
+
635 return Type::Zero();
+
636 }
+
+
+
637 static Type NansType()
+
638 {
+
639 return Type::Constant(std::numeric_limits<T>::quiet_NaN());
+
640 }
+
+
641};
+
+
642
+
643template<typename ManifoldType>
+
+ +
645{
+
646 using Type = ManifoldType;
+
+
647 static Type ZeroType()
+
648 {
+
649 return Type::identity();
+
650 }
+
+
+
651 static Type NansType()
+
652 {
+
653 return Type::nans();
+
654 }
+
+
655};
+
+
656
+
657template<typename T>
+ +
659
+
660template<typename T>
+
+
661inline std::ostream& operator<<(std::ostream& os, const ScalarSignal<T>& x)
+
662{
+
663 os << "ScalarSignal at t=" << x.t() << ": " << x();
+
664 return os;
+
665}
+
+
666
+
667template<typename T, size_t d>
+ +
669
+
670template<typename T, size_t d>
+
+
671inline std::ostream& operator<<(std::ostream& os, const VectorSignal<T, d>& x)
+
672{
+
673 os << "VectorSignal at t=" << x.t() << ": " << x().transpose();
+
674 return os;
+
675}
+
+
676
+
677template<typename T, typename ManifoldType, size_t d>
+ +
679
+
680template<typename T, typename ManifoldType, size_t d>
+
+
681inline std::ostream& operator<<(std::ostream& os, const ManifoldSignal<T, ManifoldType, d>& x)
+
682{
+
683 os << "ManifoldSignal at t=" << x.t() << ": " << x();
+
684 return os;
+
685}
+
+
686
+
+
687#define MAKE_VECTOR_SIGNAL(Dimension) \
+
688 template<typename T> \
+
689 using Vector##Dimension##Signal = VectorSignal<T, Dimension>; \
+
690 typedef Vector##Dimension##Signal<double> Vector##Dimension##dSignal;
+
+
691
+
+
692#define MAKE_MANIF_SIGNAL(Manif, Dimension) \
+
693 template<typename T> \
+
694 using Manif##Signal = ManifoldSignal<T, Manif<T>, Dimension>; \
+
695 typedef Manif##Signal<double> Manif##dSignal;
+
+
696
+ + + + + + + + + + + + + + + +
DerivativeMethod
Definition Signal.h:28
+
@ FINITE_DIFF
Definition Signal.h:30
+
@ DIRTY
Definition Signal.h:29
+
#define MAKE_VECTOR_SIGNAL(Dimension)
Definition Signal.h:687
+
std::ostream & operator<<(std::ostream &os, const ScalarSignal< T > &x)
Definition Signal.h:661
+
ScalarSignal< double > ScalardSignal
Definition Signal.h:697
+
ExtrapolationMethod
Definition Signal.h:21
+
@ ZEROS
Definition Signal.h:23
+
@ CLOSEST
Definition Signal.h:24
+
@ NANS
Definition Signal.h:22
+
InterpolationMethod
Definition Signal.h:14
+
@ CUBIC_SPLINE
Definition Signal.h:17
+
@ ZERO_ORDER_HOLD
Definition Signal.h:15
+
@ LINEAR
Definition Signal.h:16
+
Signal< BaseSignalSpec, TangentSignalSpec > operator+(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< TangentSignalSpec, TangentSignalSpec > &r)
Definition Signal.h:548
+
Signal< BaseSignalSpec, TangentSignalSpec > operator*(const double &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r)
Definition Signal.h:588
+
#define MAKE_MANIF_SIGNAL(Manif, Dimension)
Definition Signal.h:692
+
Signal< TangentSignalSpec, TangentSignalSpec > operator-(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r)
Definition Signal.h:563
+ +
Definition Signal.h:35
+
double t() const
Definition Signal.h:102
+
friend Signal< TSS, TSS > operator-(const Signal< BSS, TSS > &l, const Signal< BSS, TSS > &r)
+
BaseType operator()() const
Definition Signal.h:107
+
struct Signal::@0 SignalDPComparator
+
bool update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory)
Definition Signal.h:205
+
bool update(const double &_t, const BaseType &_x, const TangentType &_xdot, bool insertHistory=false)
Definition Signal.h:181
+
bool update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory, const std::vector< TangentType > &_xdotHistory)
Definition Signal.h:233
+
Signal(const Signal &other)
Definition Signal.h:67
+
TangentType dot(const double &t) const
Definition Signal.h:122
+
TangentType dot() const
Definition Signal.h:112
+
Signal()
Definition Signal.h:59
+
void setDerivativeMethod(DerivativeMethod method)
Definition Signal.h:157
+
void reset()
Definition Signal.h:162
+
Signal< TangentSignalSpec, TangentSignalSpec > dotSignal()
Definition Signal.h:79
+
typename BaseSignalSpec::Type BaseType
Definition Signal.h:37
+
typename TangentSignalSpec::Type TangentType
Definition Signal.h:38
+
std::vector< TangentType > dot(const std::vector< double > &t) const
Definition Signal.h:137
+
bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
Definition Signal.h:171
+
std::vector< BaseType > operator()(const std::vector< double > &t) const
Definition Signal.h:127
+
DerivativeMethod derivativeMethod
Definition Signal.h:57
+
void setExtrapolationMethod(ExtrapolationMethod method)
Definition Signal.h:152
+
BaseType operator()(const double &t) const
Definition Signal.h:117
+
friend Signal< BSS, TSS > operator*(const double &l, const Signal< BSS, TSS > &r)
+
InterpolationMethod interpolationMethod
Definition Signal.h:55
+
friend Signal< BSS, TSS > operator*(const Signal< BSS, TSS > &l, const double &r)
+
friend Signal< BSS, TSS > operator+(const Signal< BSS, TSS > &l, const Signal< TSS, TSS > &r)
+
void setInterpolationMethod(InterpolationMethod method)
Definition Signal.h:147
+
ExtrapolationMethod extrapolationMethod
Definition Signal.h:56
+
Definition Signal.h:645
+
static Type ZeroType()
Definition Signal.h:647
+
static Type NansType()
Definition Signal.h:651
+
ManifoldType Type
Definition Signal.h:646
+
Definition Signal.h:617
+
static Type NansType()
Definition Signal.h:623
+
T Type
Definition Signal.h:618
+
static Type ZeroType()
Definition Signal.h:619
+
Definition Signal.h:41
+
TangentType xdot
Definition Signal.h:44
+
BaseType x
Definition Signal.h:43
+
double t
Definition Signal.h:42
+
Definition Signal.h:631
+
static Type NansType()
Definition Signal.h:637
+
static Type ZeroType()
Definition Signal.h:633
+
Matrix< T, d, 1 > Type
Definition Signal.h:632
+
+ + + + diff --git a/docs/Signals_8h.html b/docs/Signals_8h.html new file mode 100644 index 0000000..5bc9d44 --- /dev/null +++ b/docs/Signals_8h.html @@ -0,0 +1,100 @@ + + + + + + + +signals-cpp: include/signals/Signals.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Signals.h File Reference
+
+ + + + + diff --git a/docs/Signals_8h_source.html b/docs/Signals_8h_source.html new file mode 100644 index 0000000..deeb055 --- /dev/null +++ b/docs/Signals_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +signals-cpp: include/signals/Signals.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Signals.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2
+
3#include "signals/Signal.h"
+ +
5#include "signals/State.h"
+
6#include "signals/Models.h"
+
7
+ + + + +
+ + + + diff --git a/docs/State_8h.html b/docs/State_8h.html new file mode 100644 index 0000000..6ed2a73 --- /dev/null +++ b/docs/State_8h.html @@ -0,0 +1,1692 @@ + + + + + + + +signals-cpp: include/signals/State.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
State.h File Reference
+
+
+
#include "signals/Signal.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

struct  State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >
 
struct  ScalarStateSignalSpec< T >
 
struct  VectorStateSignalSpec< T, d >
 
struct  ManifoldStateSignalSpec< T, ManifoldType, PD, TD >
 
+ + + + + +

+Macros

#define MAKE_VECTOR_STATES(Dimension)
 
#define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<typename T >
using ScalarStateType = State<T, ScalarSignalSpec<T>, 1, ScalarSignalSpec<T>, 1>
 
template<typename T , size_t d>
using VectorStateType = State<T, VectorSignalSpec<T, d>, d, VectorSignalSpec<T, d>, d>
 
template<typename T , typename ManifoldType , size_t PD, size_t TD>
using ManifoldStateType = State<T, ManifoldSignalSpec<ManifoldType>, PD, VectorSignalSpec<T, TD>, TD>
 
template<typename T >
using ScalarStateSignal = Signal<ScalarStateSignalSpec<T>, ScalarStateSignalSpec<T>>
 
template<typename T , size_t d>
using VectorStateSignal = Signal<VectorStateSignalSpec<T, d>, VectorStateSignalSpec<T, d>>
 
template<typename T , typename ManifoldType , size_t PD, size_t TD>
using ManifoldStateSignal = Signal<ManifoldStateSignalSpec<T, ManifoldType, PD, TD>, VectorStateSignalSpec<T, TD>>
 
template<typename T >
using ScalarState = ScalarStateType<T>
 
typedef ScalarState< double > ScalardState
 
typedef ScalarStateSignal< double > ScalardStateSignal
 
template<typename T >
using Vector1State = VectorStateType<T, 1 >
 
template<typename T >
using Vector1StateSignal = VectorStateSignal<T, 1 >
 
typedef Vector1State< double > Vector1dState
 
typedef Vector1StateSignal< double > Vector1dStateSignal
 
template<typename T >
using Vector2State = VectorStateType<T, 2 >
 
template<typename T >
using Vector2StateSignal = VectorStateSignal<T, 2 >
 
typedef Vector2State< double > Vector2dState
 
typedef Vector2StateSignal< double > Vector2dStateSignal
 
template<typename T >
using Vector3State = VectorStateType<T, 3 >
 
template<typename T >
using Vector3StateSignal = VectorStateSignal<T, 3 >
 
typedef Vector3State< double > Vector3dState
 
typedef Vector3StateSignal< double > Vector3dStateSignal
 
template<typename T >
using Vector4State = VectorStateType<T, 4 >
 
template<typename T >
using Vector4StateSignal = VectorStateSignal<T, 4 >
 
typedef Vector4State< double > Vector4dState
 
typedef Vector4StateSignal< double > Vector4dStateSignal
 
template<typename T >
using Vector5State = VectorStateType<T, 5 >
 
template<typename T >
using Vector5StateSignal = VectorStateSignal<T, 5 >
 
typedef Vector5State< double > Vector5dState
 
typedef Vector5StateSignal< double > Vector5dStateSignal
 
template<typename T >
using Vector6State = VectorStateType<T, 6 >
 
template<typename T >
using Vector6StateSignal = VectorStateSignal<T, 6 >
 
typedef Vector6State< double > Vector6dState
 
typedef Vector6StateSignal< double > Vector6dStateSignal
 
template<typename T >
using Vector7State = VectorStateType<T, 7 >
 
template<typename T >
using Vector7StateSignal = VectorStateSignal<T, 7 >
 
typedef Vector7State< double > Vector7dState
 
typedef Vector7StateSignal< double > Vector7dStateSignal
 
template<typename T >
using Vector8State = VectorStateType<T, 8 >
 
template<typename T >
using Vector8StateSignal = VectorStateSignal<T, 8 >
 
typedef Vector8State< double > Vector8dState
 
typedef Vector8StateSignal< double > Vector8dStateSignal
 
template<typename T >
using Vector9State = VectorStateType<T, 9 >
 
template<typename T >
using Vector9StateSignal = VectorStateSignal<T, 9 >
 
typedef Vector9State< double > Vector9dState
 
typedef Vector9StateSignal< double > Vector9dStateSignal
 
template<typename T >
using Vector10State = VectorStateType<T, 10 >
 
template<typename T >
using Vector10StateSignal = VectorStateSignal<T, 10 >
 
typedef Vector10State< double > Vector10dState
 
typedef Vector10StateSignal< double > Vector10dStateSignal
 
template<typename T >
using SO2State = ManifoldStateType<T, SO2 <T>, 2 , 1 >
 
template<typename T >
using SO2StateSignal = ManifoldStateSignal<T, SO2 <T>, 2 , 1 >
 
typedef SO2State< double > SO2dState
 
typedef SO2StateSignal< double > SO2dStateSignal
 
template<typename T >
using SO3State = ManifoldStateType<T, SO3 <T>, 4 , 3 >
 
template<typename T >
using SO3StateSignal = ManifoldStateSignal<T, SO3 <T>, 4 , 3 >
 
typedef SO3State< double > SO3dState
 
typedef SO3StateSignal< double > SO3dStateSignal
 
template<typename T >
using SE2State = ManifoldStateType<T, SE2 <T>, 4 , 3 >
 
template<typename T >
using SE2StateSignal = ManifoldStateSignal<T, SE2 <T>, 4 , 3 >
 
typedef SE2State< double > SE2dState
 
typedef SE2StateSignal< double > SE2dStateSignal
 
template<typename T >
using SE3State = ManifoldStateType<T, SE3 <T>, 7 , 6 >
 
template<typename T >
using SE3StateSignal = ManifoldStateSignal<T, SE3 <T>, 7 , 6 >
 
typedef SE3State< double > SE3dState
 
typedef SE3StateSignal< double > SE3dStateSignal
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
State< T, PTS, PD, TTS, TD > operator+ (const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r)
 
template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
State< T, TTS, TD, TTS, TD > operator- (const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r)
 
template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
State< T, PTS, PD, TTS, TD > operator* (const double &l, const State< T, PTS, PD, TTS, TD > &r)
 
template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
State< T, PTS, PD, TTS, TD > operator* (const State< T, PTS, PD, TTS, TD > &l, const double &r)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const ScalarStateType< T > &x)
 
template<typename T >
ScalarStateType< T > operator/ (const ScalarStateType< T > &l, const double &r)
 
template<typename T , size_t d>
std::ostream & operator<< (std::ostream &os, const VectorStateType< T, d > &x)
 
template<typename T , size_t d>
VectorStateType< T, d > operator/ (const VectorStateType< T, d > &l, const double &r)
 
template<typename T , typename ManifoldType , size_t PD, size_t TD>
std::ostream & operator<< (std::ostream &os, const ManifoldStateType< T, ManifoldType, PD, TD > &x)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const ScalarStateSignal< T > &x)
 
template<typename T , size_t d>
std::ostream & operator<< (std::ostream &os, const VectorStateSignal< T, d > &x)
 
template<typename T , typename ManifoldType , size_t PD, size_t TD>
std::ostream & operator<< (std::ostream &os, const ManifoldStateSignal< T, ManifoldType, PD, TD > &x)
 
+

Macro Definition Documentation

+ +

◆ MAKE_MANIF_STATES

+ +
+
+ + + + + + + + + + + + + + + + +
#define MAKE_MANIF_STATES( Manif,
Dimension,
TangentDimension )
+
+Value:
template<typename T> \
+
using Manif##State = ManifoldStateType<T, Manif<T>, Dimension, TangentDimension>; \
+
template<typename T> \
+
using Manif##StateSignal = ManifoldStateSignal<T, Manif<T>, Dimension, TangentDimension>; \
+
typedef Manif##State<double> Manif##dState; \
+
typedef Manif##StateSignal<double> Manif##dStateSignal;
+
Definition Signal.h:35
+
Definition State.h:8
+
+
+
+ +

◆ MAKE_VECTOR_STATES

+ +
+
+ + + + + + + +
#define MAKE_VECTOR_STATES( Dimension)
+
+Value:
template<typename T> \
+
using Vector##Dimension##State = VectorStateType<T, Dimension>; \
+
template<typename T> \
+
using Vector##Dimension##StateSignal = VectorStateSignal<T, Dimension>; \
+
typedef Vector##Dimension##State<double> Vector##Dimension##dState; \
+
typedef Vector##Dimension##StateSignal<double> Vector##Dimension##dStateSignal;
+
+
+
+

Typedef Documentation

+ +

◆ ManifoldStateSignal

+ +
+
+
+template<typename T , typename ManifoldType , size_t PD, size_t TD>
+ + + + +
using ManifoldStateSignal = Signal<ManifoldStateSignalSpec<T, ManifoldType, PD, TD>, VectorStateSignalSpec<T, TD>>
+
+ +
+
+ +

◆ ManifoldStateType

+ +
+
+
+template<typename T , typename ManifoldType , size_t PD, size_t TD>
+ + + + +
using ManifoldStateType = State<T, ManifoldSignalSpec<ManifoldType>, PD, VectorSignalSpec<T, TD>, TD>
+
+ +
+
+ +

◆ ScalardState

+ +
+
+ + + + +
typedef ScalarState<double> ScalardState
+
+ +
+
+ +

◆ ScalardStateSignal

+ +
+
+ + + + +
typedef ScalarStateSignal<double> ScalardStateSignal
+
+ +
+
+ +

◆ ScalarState

+ +
+
+
+template<typename T >
+ + + + +
using ScalarState = ScalarStateType<T>
+
+ +
+
+ +

◆ ScalarStateSignal

+ +
+
+
+template<typename T >
+ + + + +
using ScalarStateSignal = Signal<ScalarStateSignalSpec<T>, ScalarStateSignalSpec<T>>
+
+ +
+
+ +

◆ ScalarStateType

+ +
+
+
+template<typename T >
+ + + + +
using ScalarStateType = State<T, ScalarSignalSpec<T>, 1, ScalarSignalSpec<T>, 1>
+
+ +
+
+ +

◆ SE2dState

+ +
+
+ + + + +
typedef SE2State<double> SE2dState
+
+ +
+
+ +

◆ SE2dStateSignal

+ +
+
+ + + + +
typedef SE2StateSignal<double> SE2dStateSignal
+
+ +
+
+ +

◆ SE2State

+ +
+
+
+template<typename T >
+ + + + +
using SE2State = ManifoldStateType<T, SE2 <T>, 4 , 3 >
+
+ +
+
+ +

◆ SE2StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using SE2StateSignal = ManifoldStateSignal<T, SE2 <T>, 4 , 3 >
+
+ +
+
+ +

◆ SE3dState

+ +
+
+ + + + +
typedef SE3State<double> SE3dState
+
+ +
+
+ +

◆ SE3dStateSignal

+ +
+
+ + + + +
typedef SE3StateSignal<double> SE3dStateSignal
+
+ +
+
+ +

◆ SE3State

+ +
+
+
+template<typename T >
+ + + + +
using SE3State = ManifoldStateType<T, SE3 <T>, 7 , 6 >
+
+ +
+
+ +

◆ SE3StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using SE3StateSignal = ManifoldStateSignal<T, SE3 <T>, 7 , 6 >
+
+ +
+
+ +

◆ SO2dState

+ +
+
+ + + + +
typedef SO2State<double> SO2dState
+
+ +
+
+ +

◆ SO2dStateSignal

+ +
+
+ + + + +
typedef SO2StateSignal<double> SO2dStateSignal
+
+ +
+
+ +

◆ SO2State

+ +
+
+
+template<typename T >
+ + + + +
using SO2State = ManifoldStateType<T, SO2 <T>, 2 , 1 >
+
+ +
+
+ +

◆ SO2StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using SO2StateSignal = ManifoldStateSignal<T, SO2 <T>, 2 , 1 >
+
+ +
+
+ +

◆ SO3dState

+ +
+
+ + + + +
typedef SO3State<double> SO3dState
+
+ +
+
+ +

◆ SO3dStateSignal

+ +
+
+ + + + +
typedef SO3StateSignal<double> SO3dStateSignal
+
+ +
+
+ +

◆ SO3State

+ +
+
+
+template<typename T >
+ + + + +
using SO3State = ManifoldStateType<T, SO3 <T>, 4 , 3 >
+
+ +
+
+ +

◆ SO3StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using SO3StateSignal = ManifoldStateSignal<T, SO3 <T>, 4 , 3 >
+
+ +
+
+ +

◆ Vector10dState

+ +
+
+ + + + +
typedef Vector10State<double> Vector10dState
+
+ +
+
+ +

◆ Vector10dStateSignal

+ +
+
+ + + + +
typedef Vector10StateSignal<double> Vector10dStateSignal
+
+ +
+
+ +

◆ Vector10State

+ +
+
+
+template<typename T >
+ + + + +
using Vector10State = VectorStateType<T, 10 >
+
+ +
+
+ +

◆ Vector10StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector10StateSignal = VectorStateSignal<T, 10 >
+
+ +
+
+ +

◆ Vector1dState

+ +
+
+ + + + +
typedef Vector1State<double> Vector1dState
+
+ +
+
+ +

◆ Vector1dStateSignal

+ +
+
+ + + + +
typedef Vector1StateSignal<double> Vector1dStateSignal
+
+ +
+
+ +

◆ Vector1State

+ +
+
+
+template<typename T >
+ + + + +
using Vector1State = VectorStateType<T, 1 >
+
+ +
+
+ +

◆ Vector1StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector1StateSignal = VectorStateSignal<T, 1 >
+
+ +
+
+ +

◆ Vector2dState

+ +
+
+ + + + +
typedef Vector2State<double> Vector2dState
+
+ +
+
+ +

◆ Vector2dStateSignal

+ +
+
+ + + + +
typedef Vector2StateSignal<double> Vector2dStateSignal
+
+ +
+
+ +

◆ Vector2State

+ +
+
+
+template<typename T >
+ + + + +
using Vector2State = VectorStateType<T, 2 >
+
+ +
+
+ +

◆ Vector2StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector2StateSignal = VectorStateSignal<T, 2 >
+
+ +
+
+ +

◆ Vector3dState

+ +
+
+ + + + +
typedef Vector3State<double> Vector3dState
+
+ +
+
+ +

◆ Vector3dStateSignal

+ +
+
+ + + + +
typedef Vector3StateSignal<double> Vector3dStateSignal
+
+ +
+
+ +

◆ Vector3State

+ +
+
+
+template<typename T >
+ + + + +
using Vector3State = VectorStateType<T, 3 >
+
+ +
+
+ +

◆ Vector3StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector3StateSignal = VectorStateSignal<T, 3 >
+
+ +
+
+ +

◆ Vector4dState

+ +
+
+ + + + +
typedef Vector4State<double> Vector4dState
+
+ +
+
+ +

◆ Vector4dStateSignal

+ +
+
+ + + + +
typedef Vector4StateSignal<double> Vector4dStateSignal
+
+ +
+
+ +

◆ Vector4State

+ +
+
+
+template<typename T >
+ + + + +
using Vector4State = VectorStateType<T, 4 >
+
+ +
+
+ +

◆ Vector4StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector4StateSignal = VectorStateSignal<T, 4 >
+
+ +
+
+ +

◆ Vector5dState

+ +
+
+ + + + +
typedef Vector5State<double> Vector5dState
+
+ +
+
+ +

◆ Vector5dStateSignal

+ +
+
+ + + + +
typedef Vector5StateSignal<double> Vector5dStateSignal
+
+ +
+
+ +

◆ Vector5State

+ +
+
+
+template<typename T >
+ + + + +
using Vector5State = VectorStateType<T, 5 >
+
+ +
+
+ +

◆ Vector5StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector5StateSignal = VectorStateSignal<T, 5 >
+
+ +
+
+ +

◆ Vector6dState

+ +
+
+ + + + +
typedef Vector6State<double> Vector6dState
+
+ +
+
+ +

◆ Vector6dStateSignal

+ +
+
+ + + + +
typedef Vector6StateSignal<double> Vector6dStateSignal
+
+ +
+
+ +

◆ Vector6State

+ +
+
+
+template<typename T >
+ + + + +
using Vector6State = VectorStateType<T, 6 >
+
+ +
+
+ +

◆ Vector6StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector6StateSignal = VectorStateSignal<T, 6 >
+
+ +
+
+ +

◆ Vector7dState

+ +
+
+ + + + +
typedef Vector7State<double> Vector7dState
+
+ +
+
+ +

◆ Vector7dStateSignal

+ +
+
+ + + + +
typedef Vector7StateSignal<double> Vector7dStateSignal
+
+ +
+
+ +

◆ Vector7State

+ +
+
+
+template<typename T >
+ + + + +
using Vector7State = VectorStateType<T, 7 >
+
+ +
+
+ +

◆ Vector7StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector7StateSignal = VectorStateSignal<T, 7 >
+
+ +
+
+ +

◆ Vector8dState

+ +
+
+ + + + +
typedef Vector8State<double> Vector8dState
+
+ +
+
+ +

◆ Vector8dStateSignal

+ +
+
+ + + + +
typedef Vector8StateSignal<double> Vector8dStateSignal
+
+ +
+
+ +

◆ Vector8State

+ +
+
+
+template<typename T >
+ + + + +
using Vector8State = VectorStateType<T, 8 >
+
+ +
+
+ +

◆ Vector8StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector8StateSignal = VectorStateSignal<T, 8 >
+
+ +
+
+ +

◆ Vector9dState

+ +
+
+ + + + +
typedef Vector9State<double> Vector9dState
+
+ +
+
+ +

◆ Vector9dStateSignal

+ +
+
+ + + + +
typedef Vector9StateSignal<double> Vector9dStateSignal
+
+ +
+
+ +

◆ Vector9State

+ +
+
+
+template<typename T >
+ + + + +
using Vector9State = VectorStateType<T, 9 >
+
+ +
+
+ +

◆ Vector9StateSignal

+ +
+
+
+template<typename T >
+ + + + +
using Vector9StateSignal = VectorStateSignal<T, 9 >
+
+ +
+
+ +

◆ VectorStateSignal

+ +
+
+
+template<typename T , size_t d>
+ + + + +
using VectorStateSignal = Signal<VectorStateSignalSpec<T, d>, VectorStateSignalSpec<T, d>>
+
+ +
+
+ +

◆ VectorStateType

+ +
+
+
+template<typename T , size_t d>
+ + + + +
using VectorStateType = State<T, VectorSignalSpec<T, d>, d, VectorSignalSpec<T, d>, d>
+
+ +
+
+

Function Documentation

+ +

◆ operator*() [1/2]

+ +
+
+
+template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
+ + + + + + + + + + + +
State< T, PTS, PD, TTS, TD > operator* (const double & l,
const State< T, PTS, PD, TTS, TD > & r )
+
+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+
+template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
+ + + + + + + + + + + +
State< T, PTS, PD, TTS, TD > operator* (const State< T, PTS, PD, TTS, TD > & l,
const double & r )
+
+ +
+
+ +

◆ operator+()

+ +
+
+
+template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
+ + + + + + + + + + + +
State< T, PTS, PD, TTS, TD > operator+ (const State< T, PTS, PD, TTS, TD > & l,
const State< T, TTS, TD, TTS, TD > & r )
+
+ +
+
+ +

◆ operator-()

+ +
+
+
+template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
+ + + + + + + + + + + +
State< T, TTS, TD, TTS, TD > operator- (const State< T, PTS, PD, TTS, TD > & l,
const State< T, PTS, PD, TTS, TD > & r )
+
+ +
+
+ +

◆ operator/() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + +
ScalarStateType< T > operator/ (const ScalarStateType< T > & l,
const double & r )
+
+ +
+
+ +

◆ operator/() [2/2]

+ +
+
+
+template<typename T , size_t d>
+ + + + + + + + + + + +
VectorStateType< T, d > operator/ (const VectorStateType< T, d > & l,
const double & r )
+
+ +
+
+ +

◆ operator<<() [1/6]

+ +
+
+
+template<typename T , typename ManifoldType , size_t PD, size_t TD>
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const ManifoldStateSignal< T, ManifoldType, PD, TD > & x )
+
+inline
+
+ +
+
+ +

◆ operator<<() [2/6]

+ +
+
+
+template<typename T , typename ManifoldType , size_t PD, size_t TD>
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const ManifoldStateType< T, ManifoldType, PD, TD > & x )
+
+inline
+
+ +
+
+ +

◆ operator<<() [3/6]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const ScalarStateSignal< T > & x )
+
+inline
+
+ +
+
+ +

◆ operator<<() [4/6]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const ScalarStateType< T > & x )
+
+inline
+
+ +
+
+ +

◆ operator<<() [5/6]

+ +
+
+
+template<typename T , size_t d>
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const VectorStateSignal< T, d > & x )
+
+inline
+
+ +
+
+ +

◆ operator<<() [6/6]

+ +
+
+
+template<typename T , size_t d>
+ + + + + +
+ + + + + + + + + + + +
std::ostream & operator<< (std::ostream & os,
const VectorStateType< T, d > & x )
+
+inline
+
+ +
+
+
+ + + + diff --git a/docs/State_8h_source.html b/docs/State_8h_source.html new file mode 100644 index 0000000..a9c8224 --- /dev/null +++ b/docs/State_8h_source.html @@ -0,0 +1,439 @@ + + + + + + + +signals-cpp: include/signals/State.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
State.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include "signals/Signal.h"
+
3
+
4using namespace Eigen;
+
5
+
6template<typename T, typename PoseTypeSpec, size_t PoseDim, typename TwistTypeSpec, size_t TwistDim>
+
+
7struct State
+
8{
+
9 using PoseType = typename PoseTypeSpec::Type;
+
10 using TwistType = typename TwistTypeSpec::Type;
+
11
+ + +
14
+
15 State() {}
+
16
+
17 State(T* arr) : pose(arr), twist(arr + PoseDim) {}
+
18
+
+
19 State(const State& other)
+
20 {
+
21 this->pose = other.pose;
+
22 this->twist = other.twist;
+
23 }
+
+
24
+
+
25 static State identity()
+
26 {
+
27 State x;
+
28 x.pose = PoseTypeSpec::ZeroType();
+
29 x.twist = TwistTypeSpec::ZeroType();
+
30 return x;
+
31 }
+
+
32
+
+
33 static State nans()
+
34 {
+
35 State x;
+
36 x.pose = PoseTypeSpec::NansType();
+
37 x.twist = TwistTypeSpec::NansType();
+
38 return x;
+
39 }
+
+
40
+
+
41 State& operator*=(const double& s)
+
42 {
+
43 pose *= s;
+
44 twist *= s;
+
45 return *this;
+
46 }
+
+
47
+
48 template<typename T2>
+
+ +
50 {
+
51 pose += r.pose;
+
52 twist += r.twist;
+
53 return *this;
+
54 }
+
+
55};
+
+
56
+
57template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
+
+ +
59{
+ +
61 lpr.pose += r.pose;
+
62 lpr.twist += r.twist;
+
63 return lpr;
+
64}
+
+
65
+
66template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
+
+ +
68{
+ +
70 lmr.pose = l.pose - r.pose;
+
71 lmr.twist = l.twist - r.twist;
+
72 return lmr;
+
73}
+
+
74
+
75template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
+
+ +
77{
+ +
79 lr.pose *= l;
+
80 lr.twist *= l;
+
81 return lr;
+
82}
+
+
83
+
84template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
+
+ +
86{
+ +
88 lr.pose *= r;
+
89 lr.twist *= r;
+
90 return lr;
+
91}
+
+
92
+
93template<typename T>
+ +
95
+
96template<typename T>
+
+
97inline std::ostream& operator<<(std::ostream& os, const ScalarStateType<T>& x)
+
98{
+
99 os << "ScalarStateType: pose=" << x.pose << "; twist=" << x.twist;
+
100 return os;
+
101}
+
+
102
+
103template<typename T>
+
+ +
105{
+
106 ScalarStateType<T> lr = l;
+
107 lr.pose /= r;
+
108 lr.twist /= r;
+
109 return lr;
+
110}
+
+
111
+
112template<typename T, size_t d>
+ +
114
+
115template<typename T, size_t d>
+
+
116inline std::ostream& operator<<(std::ostream& os, const VectorStateType<T, d>& x)
+
117{
+
118 os << "VectorStateType: pose=" << x.pose.transpose() << "; twist=" << x.twist.transpose();
+
119 return os;
+
120}
+
+
121
+
122template<typename T, size_t d>
+
+ +
124{
+ +
126 lr.pose /= r;
+
127 lr.twist /= r;
+
128 return lr;
+
129}
+
+
130
+
131template<typename T, typename ManifoldType, size_t PD, size_t TD>
+ +
133
+
134template<typename T, typename ManifoldType, size_t PD, size_t TD>
+
+
135inline std::ostream& operator<<(std::ostream& os, const ManifoldStateType<T, ManifoldType, PD, TD>& x)
+
136{
+
137 os << "VectorStateType: pose=" << x.pose << "; twist=" << x.twist;
+
138 return os;
+
139}
+
+
140
+
141template<typename T>
+
+ +
143{
+ +
+
145 static Type ZeroType()
+
146 {
+
147 return Type::identity();
+
148 }
+
+
+
149 static Type NansType()
+
150 {
+
151 return Type::nans();
+
152 }
+
+
153};
+
+
154
+
155template<typename T, size_t d>
+
+ +
157{
+ +
+
159 static Type ZeroType()
+
160 {
+
161 return Type::identity();
+
162 }
+
+
+
163 static Type NansType()
+
164 {
+
165 return Type::nans();
+
166 }
+
+
167};
+
+
168
+
169template<typename T, typename ManifoldType, size_t PD, size_t TD>
+
+ +
171{
+ +
+
173 static Type ZeroType()
+
174 {
+
175 return Type::identity();
+
176 }
+
+
+
177 static Type NansType()
+
178 {
+
179 return Type::nans();
+
180 }
+
+
181};
+
+
182
+
183template<typename T>
+ +
185
+
186template<typename T>
+
+
187inline std::ostream& operator<<(std::ostream& os, const ScalarStateSignal<T>& x)
+
188{
+
189 os << "ScalarStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
+
190 return os;
+
191}
+
+
192
+
193template<typename T, size_t d>
+ +
195
+
196template<typename T, size_t d>
+
+
197inline std::ostream& operator<<(std::ostream& os, const VectorStateSignal<T, d>& x)
+
198{
+
199 os << "VectorStateSignal at t=" << x.t() << ": pose=" << x().pose.transpose()
+
200 << "; twist=" << x().twist.transpose();
+
201 return os;
+
202}
+
+
203
+
204template<typename T, typename ManifoldType, size_t PD, size_t TD>
+ +
206
+
207template<typename T, typename ManifoldType, size_t PD, size_t TD>
+
+
208inline std::ostream& operator<<(std::ostream& os, const ManifoldStateSignal<T, ManifoldType, PD, TD>& x)
+
209{
+
210 os << "ManifoldStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
+
211 return os;
+
212}
+
+
213
+
+
214#define MAKE_VECTOR_STATES(Dimension) \
+
215 template<typename T> \
+
216 using Vector##Dimension##State = VectorStateType<T, Dimension>; \
+
217 template<typename T> \
+
218 using Vector##Dimension##StateSignal = VectorStateSignal<T, Dimension>; \
+
219 typedef Vector##Dimension##State<double> Vector##Dimension##dState; \
+
220 typedef Vector##Dimension##StateSignal<double> Vector##Dimension##dStateSignal;
+
+
221
+
+
222#define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension) \
+
223 template<typename T> \
+
224 using Manif##State = ManifoldStateType<T, Manif<T>, Dimension, TangentDimension>; \
+
225 template<typename T> \
+
226 using Manif##StateSignal = ManifoldStateSignal<T, Manif<T>, Dimension, TangentDimension>; \
+
227 typedef Manif##State<double> Manif##dState; \
+
228 typedef Manif##StateSignal<double> Manif##dStateSignal;
+
+
229
+
230template<typename T>
+ + + + + + + + + + + + + + + + + + +
#define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension)
Definition State.h:222
+
State< T, PTS, PD, TTS, TD > operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r)
Definition State.h:76
+
ScalarStateSignal< double > ScalardStateSignal
Definition State.h:233
+
ScalarState< double > ScalardState
Definition State.h:232
+
State< T, PTS, PD, TTS, TD > operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r)
Definition State.h:58
+
State< T, TTS, TD, TTS, TD > operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r)
Definition State.h:67
+
std::ostream & operator<<(std::ostream &os, const ScalarStateType< T > &x)
Definition State.h:97
+
#define MAKE_VECTOR_STATES(Dimension)
Definition State.h:214
+
ScalarStateType< T > operator/(const ScalarStateType< T > &l, const double &r)
Definition State.h:104
+
Definition Signal.h:35
+
double t() const
Definition Signal.h:102
+
Definition State.h:171
+
static Type NansType()
Definition State.h:177
+
static Type ZeroType()
Definition State.h:173
+
Definition Signal.h:617
+
Definition State.h:143
+
static Type ZeroType()
Definition State.h:145
+
static Type NansType()
Definition State.h:149
+
Definition State.h:8
+
static State identity()
Definition State.h:25
+
State(T *arr)
Definition State.h:17
+
PoseType pose
Definition State.h:12
+
typename PoseTypeSpec::Type PoseType
Definition State.h:9
+
TwistType twist
Definition State.h:13
+
State & operator+=(const State< T2, TwistTypeSpec, TwistDim, TwistTypeSpec, TwistDim > &r)
Definition State.h:49
+
static State nans()
Definition State.h:33
+
State(const State &other)
Definition State.h:19
+
typename TwistTypeSpec::Type TwistType
Definition State.h:10
+
State()
Definition State.h:15
+
State & operator*=(const double &s)
Definition State.h:41
+
Definition Signal.h:631
+
Definition State.h:157
+
static Type NansType()
Definition State.h:163
+
static Type ZeroType()
Definition State.h:159
+
+ + + + diff --git a/docs/Utils_8h.html b/docs/Utils_8h.html new file mode 100644 index 0000000..ff27c02 --- /dev/null +++ b/docs/Utils_8h.html @@ -0,0 +1,111 @@ + + + + + + + +signals-cpp: include/signals/Utils.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
Utils.h File Reference
+
+
+
#include <algorithm>
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  signal_utils
 
+ + + +

+Functions

bool signal_utils::getTimeDelta (double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
 
+
+ + + + diff --git a/docs/Utils_8h_source.html b/docs/Utils_8h_source.html new file mode 100644 index 0000000..2e7df7b --- /dev/null +++ b/docs/Utils_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +signals-cpp: include/signals/Utils.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Utils.h
+
+
+Go to the documentation of this file.
1#pragma once
+
2#include <algorithm>
+
3
+
+
4namespace signal_utils
+
5{
+
6inline bool
+
+
7getTimeDelta(double& dt, const double& t0, const double& tf, const double& dt_max = std::numeric_limits<double>::max())
+
8{
+
9 if (t0 >= tf || t0 < 0)
+
10 {
+
11 return false;
+
12 }
+
13 dt = std::min(tf - t0, dt_max);
+
14 return true;
+
15}
+
+
16
+
17} // end namespace signal_utils
+
+
Definition Utils.h:5
+
bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
Definition Utils.h:7
+
+ + + + diff --git a/docs/annotated.html b/docs/annotated.html new file mode 100644 index 0000000..ca217f3 --- /dev/null +++ b/docs/annotated.html @@ -0,0 +1,116 @@ + + + + + + + +signals-cpp: Class List + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+ + + + + diff --git a/docs/bc_s.png b/docs/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/bc_sd.png b/docs/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/docs/classModel-members.html b/docs/classModel-members.html new file mode 100644 index 0000000..e731a61 --- /dev/null +++ b/docs/classModel-members.html @@ -0,0 +1,106 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
Model< DynamicsType > Member List
+
+
+ +

This is the complete list of members for Model< DynamicsType >, including all inherited members.

+ + + + + + + + + + + + + + +
hasParams()Model< DynamicsType >inline
InputSignalType typedefModel< DynamicsType >
Model()Model< DynamicsType >inline
ParamsType typedefModel< DynamicsType >
reset()Model< DynamicsType >inline
setParams(const ParamsType &params)Model< DynamicsType >inline
simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)Model< DynamicsType >inline
simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)Model< DynamicsType >inline
StateDotSignalType typedefModel< DynamicsType >
StateSignalType typedefModel< DynamicsType >
t() constModel< DynamicsType >inline
xModel< DynamicsType >
xdotModel< DynamicsType >
+ + + + diff --git a/docs/classModel.html b/docs/classModel.html new file mode 100644 index 0000000..1be564a --- /dev/null +++ b/docs/classModel.html @@ -0,0 +1,464 @@ + + + + + + + +signals-cpp: Model< DynamicsType > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ +
Model< DynamicsType > Class Template Reference
+
+
+ +

#include <Models.h>

+ + + + + + + + + + +

+Public Types

using InputSignalType = typename DynamicsType::InputSignalType
 
using StateDotSignalType = typename DynamicsType::StateDotSignalType
 
using StateSignalType = typename DynamicsType::StateSignalType
 
using ParamsType = typename DynamicsType::ParamsType
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 Model ()
 
void setParams (const ParamsType &params)
 
bool hasParams ()
 
void reset ()
 
double t () const
 
template<typename IntegratorType >
bool simulate (const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
 
template<typename IntegratorType >
bool simulate (const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
 
+ + + + + +

+Public Attributes

StateSignalType x
 
StateDotSignalType xdot
 
+

Member Typedef Documentation

+ +

◆ InputSignalType

+ +
+
+
+template<typename DynamicsType >
+ + + + +
using Model< DynamicsType >::InputSignalType = typename DynamicsType::InputSignalType
+
+ +
+
+ +

◆ ParamsType

+ +
+
+
+template<typename DynamicsType >
+ + + + +
using Model< DynamicsType >::ParamsType = typename DynamicsType::ParamsType
+
+ +
+
+ +

◆ StateDotSignalType

+ +
+
+
+template<typename DynamicsType >
+ + + + +
using Model< DynamicsType >::StateDotSignalType = typename DynamicsType::StateDotSignalType
+
+ +
+
+ +

◆ StateSignalType

+ +
+
+
+template<typename DynamicsType >
+ + + + +
using Model< DynamicsType >::StateSignalType = typename DynamicsType::StateSignalType
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Model()

+ +
+
+
+template<typename DynamicsType >
+ + + + + +
+ + + + + + + +
Model< DynamicsType >::Model ()
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ hasParams()

+ +
+
+
+template<typename DynamicsType >
+ + + + + +
+ + + + + + + +
bool Model< DynamicsType >::hasParams ()
+
+inline
+
+ +
+
+ +

◆ reset()

+ +
+
+
+template<typename DynamicsType >
+ + + + + +
+ + + + + + + +
void Model< DynamicsType >::reset ()
+
+inline
+
+ +
+
+ +

◆ setParams()

+ +
+
+
+template<typename DynamicsType >
+ + + + + +
+ + + + + + + +
void Model< DynamicsType >::setParams (const ParamsType & params)
+
+inline
+
+ +
+
+ +

◆ simulate() [1/2]

+ +
+
+
+template<typename DynamicsType >
+
+template<typename IntegratorType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
bool Model< DynamicsType >::simulate (const InputSignalType & u,
const double & tf,
const bool & insertIntoHistory = false,
const bool & calculateXddot = false )
+
+inline
+
+ +
+
+ +

◆ simulate() [2/2]

+ +
+
+
+template<typename DynamicsType >
+
+template<typename IntegratorType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool Model< DynamicsType >::simulate (const InputSignalType & u,
const double & tf,
const double & dt,
const bool & insertIntoHistory = false,
const bool & calculateXddot = false )
+
+inline
+
+ +
+
+ +

◆ t()

+ +
+
+
+template<typename DynamicsType >
+ + + + + +
+ + + + + + + +
double Model< DynamicsType >::t () const
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ x

+ +
+
+
+template<typename DynamicsType >
+ + + + +
StateSignalType Model< DynamicsType >::x
+
+ +
+
+ +

◆ xdot

+ +
+
+
+template<typename DynamicsType >
+ + + + +
StateDotSignalType Model< DynamicsType >::xdot
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/classSignal-members.html b/docs/classSignal-members.html new file mode 100644 index 0000000..ba2ead0 --- /dev/null +++ b/docs/classSignal-members.html @@ -0,0 +1,121 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
Signal< BaseSignalSpec, TangentSignalSpec > Member List
+
+
+ +

This is the complete list of members for Signal< BaseSignalSpec, TangentSignalSpec >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BaseType typedefSignal< BaseSignalSpec, TangentSignalSpec >
derivativeMethodSignal< BaseSignalSpec, TangentSignalSpec >
dot() constSignal< BaseSignalSpec, TangentSignalSpec >inline
dot(const double &t) constSignal< BaseSignalSpec, TangentSignalSpec >inline
dot(const std::vector< double > &t) constSignal< BaseSignalSpec, TangentSignalSpec >inline
dotSignal()Signal< BaseSignalSpec, TangentSignalSpec >inline
extrapolationMethodSignal< BaseSignalSpec, TangentSignalSpec >
interpolationMethodSignal< BaseSignalSpec, TangentSignalSpec >
operator()() constSignal< BaseSignalSpec, TangentSignalSpec >inline
operator()(const double &t) constSignal< BaseSignalSpec, TangentSignalSpec >inline
operator()(const std::vector< double > &t) constSignal< BaseSignalSpec, TangentSignalSpec >inline
operator*Signal< BaseSignalSpec, TangentSignalSpec >friend
operator*Signal< BaseSignalSpec, TangentSignalSpec >friend
operator+Signal< BaseSignalSpec, TangentSignalSpec >friend
operator-Signal< BaseSignalSpec, TangentSignalSpec >friend
reset()Signal< BaseSignalSpec, TangentSignalSpec >inline
setDerivativeMethod(DerivativeMethod method)Signal< BaseSignalSpec, TangentSignalSpec >inline
setExtrapolationMethod(ExtrapolationMethod method)Signal< BaseSignalSpec, TangentSignalSpec >inline
setInterpolationMethod(InterpolationMethod method)Signal< BaseSignalSpec, TangentSignalSpec >inline
Signal()Signal< BaseSignalSpec, TangentSignalSpec >inline
Signal(const Signal &other)Signal< BaseSignalSpec, TangentSignalSpec >inline
SignalDPComparatorSignal< BaseSignalSpec, TangentSignalSpec >
t() constSignal< BaseSignalSpec, TangentSignalSpec >inline
TangentType typedefSignal< BaseSignalSpec, TangentSignalSpec >
update(const double &_t, const BaseType &_x, bool insertHistory=false)Signal< BaseSignalSpec, TangentSignalSpec >inline
update(const double &_t, const BaseType &_x, const TangentType &_xdot, bool insertHistory=false)Signal< BaseSignalSpec, TangentSignalSpec >inline
update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory)Signal< BaseSignalSpec, TangentSignalSpec >inline
update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory, const std::vector< TangentType > &_xdotHistory)Signal< BaseSignalSpec, TangentSignalSpec >inline
+ + + + diff --git a/docs/classSignal.html b/docs/classSignal.html new file mode 100644 index 0000000..7017f94 --- /dev/null +++ b/docs/classSignal.html @@ -0,0 +1,935 @@ + + + + + + + +signals-cpp: Signal< BaseSignalSpec, TangentSignalSpec > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ +
Signal< BaseSignalSpec, TangentSignalSpec > Class Template Reference
+
+
+ +

#include <Signal.h>

+ + + + +

+Classes

struct  SignalDP
 
+ + + + + +

+Public Types

using BaseType = typename BaseSignalSpec::Type
 
using TangentType = typename TangentSignalSpec::Type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Signal ()
 
 Signal (const Signal &other)
 
Signal< TangentSignalSpec, TangentSignalSpec > dotSignal ()
 
double t () const
 
BaseType operator() () const
 
TangentType dot () const
 
BaseType operator() (const double &t) const
 
TangentType dot (const double &t) const
 
std::vector< BaseTypeoperator() (const std::vector< double > &t) const
 
std::vector< TangentTypedot (const std::vector< double > &t) const
 
void setInterpolationMethod (InterpolationMethod method)
 
void setExtrapolationMethod (ExtrapolationMethod method)
 
void setDerivativeMethod (DerivativeMethod method)
 
void reset ()
 
bool update (const double &_t, const BaseType &_x, bool insertHistory=false)
 
bool update (const double &_t, const BaseType &_x, const TangentType &_xdot, bool insertHistory=false)
 
bool update (const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory)
 
bool update (const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory, const std::vector< TangentType > &_xdotHistory)
 
+ + + + + + + + + + + +

+Public Attributes

struct { 
 
SignalDPComparator 
 
InterpolationMethod interpolationMethod
 
ExtrapolationMethod extrapolationMethod
 
DerivativeMethod derivativeMethod
 
+ + + + + + + + + + + + + +

+Friends

template<typename BSS , typename TSS >
Signal< BSS, TSS > operator+ (const Signal< BSS, TSS > &l, const Signal< TSS, TSS > &r)
 
template<typename BSS , typename TSS >
Signal< TSS, TSS > operator- (const Signal< BSS, TSS > &l, const Signal< BSS, TSS > &r)
 
template<typename BSS , typename TSS >
Signal< BSS, TSS > operator* (const double &l, const Signal< BSS, TSS > &r)
 
template<typename BSS , typename TSS >
Signal< BSS, TSS > operator* (const Signal< BSS, TSS > &l, const double &r)
 
+

Member Typedef Documentation

+ +

◆ BaseType

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + +
using Signal< BaseSignalSpec, TangentSignalSpec >::BaseType = typename BaseSignalSpec::Type
+
+ +
+
+ +

◆ TangentType

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + +
using Signal< BaseSignalSpec, TangentSignalSpec >::TangentType = typename TangentSignalSpec::Type
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Signal() [1/2]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
Signal< BaseSignalSpec, TangentSignalSpec >::Signal ()
+
+inline
+
+ +
+
+ +

◆ Signal() [2/2]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
Signal< BaseSignalSpec, TangentSignalSpec >::Signal (const Signal< BaseSignalSpec, TangentSignalSpec > & other)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ dot() [1/3]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
TangentType Signal< BaseSignalSpec, TangentSignalSpec >::dot () const
+
+inline
+
+ +
+
+ +

◆ dot() [2/3]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
TangentType Signal< BaseSignalSpec, TangentSignalSpec >::dot (const double & t) const
+
+inline
+
+ +
+
+ +

◆ dot() [3/3]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
std::vector< TangentType > Signal< BaseSignalSpec, TangentSignalSpec >::dot (const std::vector< double > & t) const
+
+inline
+
+ +
+
+ +

◆ dotSignal()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
Signal< TangentSignalSpec, TangentSignalSpec > Signal< BaseSignalSpec, TangentSignalSpec >::dotSignal ()
+
+inline
+
+ +
+
+ +

◆ operator()() [1/3]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
BaseType Signal< BaseSignalSpec, TangentSignalSpec >::operator() () const
+
+inline
+
+ +
+
+ +

◆ operator()() [2/3]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
BaseType Signal< BaseSignalSpec, TangentSignalSpec >::operator() (const double & t) const
+
+inline
+
+ +
+
+ +

◆ operator()() [3/3]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
std::vector< BaseType > Signal< BaseSignalSpec, TangentSignalSpec >::operator() (const std::vector< double > & t) const
+
+inline
+
+ +
+
+ +

◆ reset()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
void Signal< BaseSignalSpec, TangentSignalSpec >::reset ()
+
+inline
+
+ +
+
+ +

◆ setDerivativeMethod()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
void Signal< BaseSignalSpec, TangentSignalSpec >::setDerivativeMethod (DerivativeMethod method)
+
+inline
+
+ +
+
+ +

◆ setExtrapolationMethod()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
void Signal< BaseSignalSpec, TangentSignalSpec >::setExtrapolationMethod (ExtrapolationMethod method)
+
+inline
+
+ +
+
+ +

◆ setInterpolationMethod()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
void Signal< BaseSignalSpec, TangentSignalSpec >::setInterpolationMethod (InterpolationMethod method)
+
+inline
+
+ +
+
+ +

◆ t()

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + +
double Signal< BaseSignalSpec, TangentSignalSpec >::t () const
+
+inline
+
+ +
+
+ +

◆ update() [1/4]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool Signal< BaseSignalSpec, TangentSignalSpec >::update (const double & _t,
const BaseType & _x,
bool insertHistory = false )
+
+inline
+
+ +
+
+ +

◆ update() [2/4]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
bool Signal< BaseSignalSpec, TangentSignalSpec >::update (const double & _t,
const BaseType & _x,
const TangentType & _xdot,
bool insertHistory = false )
+
+inline
+
+ +
+
+ +

◆ update() [3/4]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + + + + + +
bool Signal< BaseSignalSpec, TangentSignalSpec >::update (const std::vector< double > & _tHistory,
const std::vector< BaseType > & _xHistory )
+
+inline
+
+ +
+
+ +

◆ update() [4/4]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool Signal< BaseSignalSpec, TangentSignalSpec >::update (const std::vector< double > & _tHistory,
const std::vector< BaseType > & _xHistory,
const std::vector< TangentType > & _xdotHistory )
+
+inline
+
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator* [1/2]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+
+template<typename BSS , typename TSS >
+ + + + + +
+ + + + + + + + + + + +
Signal< BSS, TSS > operator* (const double & l,
const Signal< BSS, TSS > & r )
+
+friend
+
+ +
+
+ +

◆ operator* [2/2]

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+
+template<typename BSS , typename TSS >
+ + + + + +
+ + + + + + + + + + + +
Signal< BSS, TSS > operator* (const Signal< BSS, TSS > & l,
const double & r )
+
+friend
+
+ +
+
+ +

◆ operator+

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+
+template<typename BSS , typename TSS >
+ + + + + +
+ + + + + + + + + + + +
Signal< BSS, TSS > operator+ (const Signal< BSS, TSS > & l,
const Signal< TSS, TSS > & r )
+
+friend
+
+ +
+
+ +

◆ operator-

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+
+template<typename BSS , typename TSS >
+ + + + + +
+ + + + + + + + + + + +
Signal< TSS, TSS > operator- (const Signal< BSS, TSS > & l,
const Signal< BSS, TSS > & r )
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ derivativeMethod

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + +
DerivativeMethod Signal< BaseSignalSpec, TangentSignalSpec >::derivativeMethod
+
+ +
+
+ +

◆ extrapolationMethod

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + +
ExtrapolationMethod Signal< BaseSignalSpec, TangentSignalSpec >::extrapolationMethod
+
+ +
+
+ +

◆ interpolationMethod

+ +
+
+
+template<typename BaseSignalSpec , typename TangentSignalSpec >
+ + + + +
InterpolationMethod Signal< BaseSignalSpec, TangentSignalSpec >::interpolationMethod
+
+ +
+
+ +

◆ [struct]

+ +
+
+ + + + +
struct { ... } Signal< BaseSignalSpec, TangentSignalSpec >::SignalDPComparator
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/classes.html b/docs/classes.html new file mode 100644 index 0000000..3b5a072 --- /dev/null +++ b/docs/classes.html @@ -0,0 +1,114 @@ + + + + + + + +signals-cpp: Class Index + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+ + + + + diff --git a/docs/clipboard.js b/docs/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/docs/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/docs/closed.png b/docs/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/cookie.js b/docs/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/docs/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/docs/dir_661483514bb8dea267426763b771558e.html b/docs/dir_661483514bb8dea267426763b771558e.html new file mode 100644 index 0000000..8cec3ea --- /dev/null +++ b/docs/dir_661483514bb8dea267426763b771558e.html @@ -0,0 +1,110 @@ + + + + + + + +signals-cpp: include/signals Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
signals Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Files

 Integration.h
 
 Models.h
 
 Signal.h
 
 Signals.h
 
 State.h
 
 Utils.h
 
+
+ + + + diff --git a/docs/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..626c3c3 --- /dev/null +++ b/docs/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,100 @@ + + + + + + + +signals-cpp: include Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
include Directory Reference
+
+
+ + + + +

+Directories

 signals
 
+
+ + + + diff --git a/docs/doc.svg b/docs/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/docs/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/docd.svg b/docs/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docs/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/doxygen.css b/docs/doxygen.css new file mode 100644 index 0000000..7b7d851 --- /dev/null +++ b/docs/doxygen.css @@ -0,0 +1,2225 @@ +/* The standard CSS for doxygen 1.10.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: var(--memdef-param-name-color); + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: var(--font-family-monospace); +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/docs/doxygen.svg b/docs/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/docs/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/doxygen_crawl.html b/docs/doxygen_crawl.html new file mode 100644 index 0000000..1c0b116 --- /dev/null +++ b/docs/doxygen_crawl.html @@ -0,0 +1,154 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/dynsections.js b/docs/dynsections.js new file mode 100644 index 0000000..8f49326 --- /dev/null +++ b/docs/dynsections.js @@ -0,0 +1,194 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/docs/files.html b/docs/files.html new file mode 100644 index 0000000..e120c17 --- /dev/null +++ b/docs/files.html @@ -0,0 +1,102 @@ + + + + + + + +signals-cpp: File List + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 123]
+ + + + + + + + +
  include
  signals
 Integration.h
 Models.h
 Signal.h
 Signals.h
 State.h
 Utils.h
+
+
+ + + + diff --git a/docs/folderclosed.svg b/docs/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/docs/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/folderclosedd.svg b/docs/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/docs/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/folderopen.svg b/docs/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/docs/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/folderopend.svg b/docs/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/docs/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/functions.html b/docs/functions.html new file mode 100644 index 0000000..fa5aa84 --- /dev/null +++ b/docs/functions.html @@ -0,0 +1,207 @@ + + + + + + + +signals-cpp: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- x -

+ + +

- z -

+
+ + + + diff --git a/docs/functions_func.html b/docs/functions_func.html new file mode 100644 index 0000000..f2b636e --- /dev/null +++ b/docs/functions_func.html @@ -0,0 +1,156 @@ + + + + + + + +signals-cpp: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- d -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- z -

+
+ + + + diff --git a/docs/functions_rela.html b/docs/functions_rela.html new file mode 100644 index 0000000..056b1eb --- /dev/null +++ b/docs/functions_rela.html @@ -0,0 +1,92 @@ + + + + + + + +signals-cpp: Class Members - Related Symbols + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all related symbols with links to the classes they belong to:
+
+ + + + diff --git a/docs/functions_type.html b/docs/functions_type.html new file mode 100644 index 0000000..12c447f --- /dev/null +++ b/docs/functions_type.html @@ -0,0 +1,120 @@ + + + + + + + +signals-cpp: Class Members - Typedefs + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all typedefs with links to the classes they belong to:
+ +

- b -

+ + +

- i -

+ + +

- p -

+ + +

- s -

+ + +

- t -

+
+ + + + diff --git a/docs/functions_vars.html b/docs/functions_vars.html new file mode 100644 index 0000000..c294f30 --- /dev/null +++ b/docs/functions_vars.html @@ -0,0 +1,101 @@ + + + + + + + +signals-cpp: Class Members - Variables + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/docs/globals.html b/docs/globals.html new file mode 100644 index 0000000..fc0a7b6 --- /dev/null +++ b/docs/globals.html @@ -0,0 +1,282 @@ + + + + + + + +signals-cpp: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- z -

+
+ + + + diff --git a/docs/globals_defs.html b/docs/globals_defs.html new file mode 100644 index 0000000..7610812 --- /dev/null +++ b/docs/globals_defs.html @@ -0,0 +1,95 @@ + + + + + + + +signals-cpp: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all macros with links to the files they belong to:
+
+ + + + diff --git a/docs/globals_enum.html b/docs/globals_enum.html new file mode 100644 index 0000000..fc3bf81 --- /dev/null +++ b/docs/globals_enum.html @@ -0,0 +1,92 @@ + + + + + + + +signals-cpp: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enums with links to the files they belong to:
+
+ + + + diff --git a/docs/globals_eval.html b/docs/globals_eval.html new file mode 100644 index 0000000..22d3902 --- /dev/null +++ b/docs/globals_eval.html @@ -0,0 +1,97 @@ + + + + + + + +signals-cpp: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enum values with links to the files they belong to:
+
+ + + + diff --git a/docs/globals_func.html b/docs/globals_func.html new file mode 100644 index 0000000..6f04047 --- /dev/null +++ b/docs/globals_func.html @@ -0,0 +1,94 @@ + + + + + + + +signals-cpp: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+
+ + + + diff --git a/docs/globals_type.html b/docs/globals_type.html new file mode 100644 index 0000000..ecfb225 --- /dev/null +++ b/docs/globals_type.html @@ -0,0 +1,228 @@ + + + + + + + +signals-cpp: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all typedefs with links to the files they belong to:
+ +

- e -

+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+ + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..c9c80fe --- /dev/null +++ b/docs/index.html @@ -0,0 +1,104 @@ + + + + + + + +signals-cpp: signals-cpp Library Documentation + + + + + + + + + + + + + +
+
+ + + + + + +
+
signals-cpp +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
signals-cpp Library Documentation
+
+
+

+Introduction

+

Header-only templated C++ library implementing rigid-body dynamics, derivatives, integrals, and interpolation.

+

+Installation

+

This code is meant to be built as a static library with CMake. It should be compatible with the latest versions of Eigen and Boost (unit test framework only). The library manif-geom-cpp must also be installed.

+

Install with

+
mkdir build
+
cd build
+
cmake ..
+
make # or make install
+

By default, building will also build and run the unit tests, but this can be turned off with the CMake option BUILD_TESTS.

+
+ +
+ + + + diff --git a/docs/jquery.js b/docs/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/docs/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/menu.js b/docs/menu.js new file mode 100644 index 0000000..717761d --- /dev/null +++ b/docs/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/menudata.js b/docs/menudata.js new file mode 100644 index 0000000..d7fe4ec --- /dev/null +++ b/docs/menudata.js @@ -0,0 +1,102 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions",url:"namespacemembers_func.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"b",url:"functions.html#index_b"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"j",url:"functions.html#index_j"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"x",url:"functions.html#index_x"}, +{text:"z",url:"functions.html#index_z"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"d",url:"functions_func.html#index_d"}, +{text:"h",url:"functions_func.html#index_h"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"n",url:"functions_func.html#index_n"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"u",url:"functions_func.html#index_u"}, +{text:"z",url:"functions_func.html#index_z"}]}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Typedefs",url:"functions_type.html",children:[ +{text:"b",url:"functions_type.html#index_b"}, +{text:"i",url:"functions_type.html#index_i"}, +{text:"p",url:"functions_type.html#index_p"}, +{text:"s",url:"functions_type.html#index_s"}, +{text:"t",url:"functions_type.html#index_t"}]}, +{text:"Related Symbols",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"c",url:"globals.html#index_c"}, +{text:"d",url:"globals.html#index_d"}, +{text:"e",url:"globals.html#index_e"}, +{text:"f",url:"globals.html#index_f"}, +{text:"i",url:"globals.html#index_i"}, +{text:"l",url:"globals.html#index_l"}, +{text:"m",url:"globals.html#index_m"}, +{text:"n",url:"globals.html#index_n"}, +{text:"o",url:"globals.html#index_o"}, +{text:"r",url:"globals.html#index_r"}, +{text:"s",url:"globals.html#index_s"}, +{text:"t",url:"globals.html#index_t"}, +{text:"v",url:"globals.html#index_v"}, +{text:"z",url:"globals.html#index_z"}]}, +{text:"Functions",url:"globals_func.html"}, +{text:"Typedefs",url:"globals_type.html",children:[ +{text:"e",url:"globals_type.html#index_e"}, +{text:"m",url:"globals_type.html#index_m"}, +{text:"r",url:"globals_type.html#index_r"}, +{text:"s",url:"globals_type.html#index_s"}, +{text:"t",url:"globals_type.html#index_t"}, +{text:"v",url:"globals_type.html#index_v"}]}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/docs/minus.svg b/docs/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/docs/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/minusd.svg b/docs/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/docs/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html new file mode 100644 index 0000000..99c59bb --- /dev/null +++ b/docs/namespacemembers.html @@ -0,0 +1,90 @@ + + + + + + + +signals-cpp: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    +
    + + + + diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html new file mode 100644 index 0000000..2e65076 --- /dev/null +++ b/docs/namespacemembers_func.html @@ -0,0 +1,90 @@ + + + + + + + +signals-cpp: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    +
    + + + + diff --git a/docs/namespaces.html b/docs/namespaces.html new file mode 100644 index 0000000..612a2af --- /dev/null +++ b/docs/namespaces.html @@ -0,0 +1,95 @@ + + + + + + + +signals-cpp: Namespace List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    + + +
     Nsignal_utils
    +
    +
    + + + + diff --git a/docs/namespacesignal__utils.html b/docs/namespacesignal__utils.html new file mode 100644 index 0000000..eb28eca --- /dev/null +++ b/docs/namespacesignal__utils.html @@ -0,0 +1,138 @@ + + + + + + + +signals-cpp: signal_utils Namespace Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    signal_utils Namespace Reference
    +
    +
    + + + + +

    +Functions

    bool getTimeDelta (double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
     
    +

    Function Documentation

    + +

    ◆ getTimeDelta()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    bool signal_utils::getTimeDelta (double & dt,
    const double & t0,
    const double & tf,
    const double & dt_max = std::numeric_limits<double>::max() )
    +
    +inline
    +
    + +
    +
    +
    + + + + diff --git a/docs/nav_f.png b/docs/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/nav_fd.png b/docs/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/docs/nav_g.png b/docs/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/docs/open.png b/docs/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + diff --git a/docs/plusd.svg b/docs/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/docs/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/search/all_0.js b/docs/search/all_0.js new file mode 100644 index 0000000..69511a9 --- /dev/null +++ b/docs/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['basetype_0',['BaseType',['../classSignal.html#a9bda97fe7663f5481807259ca8bcd8cb',1,'Signal']]] +]; diff --git a/docs/search/all_1.js b/docs/search/all_1.js new file mode 100644 index 0000000..3c805ba --- /dev/null +++ b/docs/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['closest_0',['CLOSEST',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4a901e715f86c693ccd2851e8c0b64cca3',1,'Signal.h']]], + ['cpp_20library_20documentation_1',['signals-cpp Library Documentation',['../index.html',1,'']]], + ['cubic_5fspline_2',['CUBIC_SPLINE',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284a13480ea7779c90806a9fa4ef70322ebc',1,'Signal.h']]] +]; diff --git a/docs/search/all_10.js b/docs/search/all_10.js new file mode 100644 index 0000000..b04f6ae --- /dev/null +++ b/docs/search/all_10.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['t_0',['t',['../structSignal_1_1SignalDP.html#ac9d0651b25c9bcf14fcfc65a32fcfa86',1,'Signal::SignalDP::t'],['../classModel.html#a7661852411b9ffd59240d5d5ca0e4dd3',1,'Model::t()'],['../classSignal.html#a058783faf86f369b296c50d4e72c0881',1,'Signal::t() const']]], + ['tangenttype_1',['TangentType',['../classSignal.html#aa0094b1c69fd482de9de83b99634996a',1,'Signal']]], + ['translational1dofmodel_2',['Translational1DOFModel',['../Models_8h.html#a06f4823dd2b571a8718ccad09ce44fe7',1,'Models.h']]], + ['translational1dofmodeld_3',['Translational1DOFModeld',['../Models_8h.html#ab405c6c48aa770f74c7e942302b956c5',1,'Models.h']]], + ['translational2dofmodel_4',['Translational2DOFModel',['../Models_8h.html#aa8b7fa1f2cfd2453d95d80ce49abd8fc',1,'Models.h']]], + ['translational2dofmodeld_5',['Translational2DOFModeld',['../Models_8h.html#a7768cd6b33a5d94a677357664052d096',1,'Models.h']]], + ['translational3dofmodel_6',['Translational3DOFModel',['../Models_8h.html#aae658b45855be04ff99456f612008b96',1,'Models.h']]], + ['translational3dofmodeld_7',['Translational3DOFModeld',['../Models_8h.html#a3c501b1f5d946eb9aa36b92d2ec611c5',1,'Models.h']]], + ['translationaldynamics1dof_8',['TranslationalDynamics1DOF',['../Models_8h.html#aac436ed3df206f07f93110e3daffe773',1,'Models.h']]], + ['translationaldynamics2dof_9',['TranslationalDynamics2DOF',['../Models_8h.html#ae3889fdff8dd169aef62fcdf6340e0e1',1,'Models.h']]], + ['translationaldynamics3dof_10',['TranslationalDynamics3DOF',['../Models_8h.html#ad1ba77eac61f5da29df59b8b4b0d7a0d',1,'Models.h']]], + ['translationaldynamicsbase_11',['TranslationalDynamicsBase',['../structTranslationalDynamicsBase.html',1,'']]], + ['trapezoidalintegrator_12',['TrapezoidalIntegrator',['../Integration_8h.html#a95780a5b17730ea091c504cc3ab98b84',1,'Integration.h']]], + ['trapezoidalintegratorspec_13',['TrapezoidalIntegratorSpec',['../structTrapezoidalIntegratorSpec.html',1,'']]], + ['twist_14',['twist',['../structState.html#a3f5fb4275701e71a56d2fa1fb8d54080',1,'State']]], + ['twisttype_15',['TwistType',['../structState.html#ab58b6e2fe6ea3c2777c5a8a92f6665a1',1,'State']]], + ['type_16',['Type',['../structScalarSignalSpec.html#a4a319643aeb76b94214f8b41d64d5402',1,'ScalarSignalSpec::Type'],['../structVectorSignalSpec.html#ac21d15d01635665373eaf23b62f3d440',1,'VectorSignalSpec::Type'],['../structManifoldSignalSpec.html#ae6292debacd46f629429d03cf7e9a342',1,'ManifoldSignalSpec::Type'],['../structScalarStateSignalSpec.html#a7ae52069e3aafdb7c45b14168b1ad11b',1,'ScalarStateSignalSpec::Type'],['../structVectorStateSignalSpec.html#a3994948f467b39ca2dcd77d220a8cf3a',1,'VectorStateSignalSpec::Type'],['../structManifoldStateSignalSpec.html#aef8d411c012125303e1faa1d66b35c1c',1,'ManifoldStateSignalSpec::Type']]] +]; diff --git a/docs/search/all_11.js b/docs/search/all_11.js new file mode 100644 index 0000000..6e3f943 --- /dev/null +++ b/docs/search/all_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['update_0',['update',['../structTranslationalDynamicsBase.html#a3f1e02018ec014fe38ba851dc0d5b2ed',1,'TranslationalDynamicsBase::update()'],['../structRotationalDynamics1DOF.html#a433f042fafdcff07948eb952e47f13b6',1,'RotationalDynamics1DOF::update()'],['../structRotationalDynamics3DOF.html#aee5958f7949268650c00097b2a871252',1,'RotationalDynamics3DOF::update()'],['../structRigidBodyDynamics3DOF.html#acafe68f9e9ea78f54bc70d64a1b39d9c',1,'RigidBodyDynamics3DOF::update()'],['../structRigidBodyDynamics6DOF.html#ae0d9bb27da7f804a1f8dc4923546a95d',1,'RigidBodyDynamics6DOF::update()'],['../classSignal.html#ab91f52b80939a6c67b6863ee463b4ff0',1,'Signal::update(const double &_t, const BaseType &_x, bool insertHistory=false)'],['../classSignal.html#a6c7174c9bb20970ebb3de64687f771d8',1,'Signal::update(const double &_t, const BaseType &_x, const TangentType &_xdot, bool insertHistory=false)'],['../classSignal.html#a5530308ef517fd0021f510d47c390dc0',1,'Signal::update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory)'],['../classSignal.html#a74929b7332876f5aeddc9a05d26d3d32',1,'Signal::update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory, const std::vector< TangentType > &_xdotHistory)']]], + ['utils_2eh_1',['Utils.h',['../Utils_8h.html',1,'']]] +]; diff --git a/docs/search/all_12.js b/docs/search/all_12.js new file mode 100644 index 0000000..a741da3 --- /dev/null +++ b/docs/search/all_12.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['vector10dsignal_0',['Vector10dSignal',['../Signal_8h.html#a75b25f1facc38a02d21c155ec05655cc',1,'Signal.h']]], + ['vector10dstate_1',['Vector10dState',['../State_8h.html#ac15f89e56010b705e5a2e0d9c3c50a6d',1,'State.h']]], + ['vector10dstatesignal_2',['Vector10dStateSignal',['../State_8h.html#af22d4a3a8e0b033da1e86fbb86d62025',1,'State.h']]], + ['vector10signal_3',['Vector10Signal',['../Signal_8h.html#ae39387d9fa8cf1afc6a66334312b3e68',1,'Signal.h']]], + ['vector10state_4',['Vector10State',['../State_8h.html#aaebcae79f29e8afb31a487a07fe71178',1,'State.h']]], + ['vector10statesignal_5',['Vector10StateSignal',['../State_8h.html#a7aaf0c3fa4fd47f070fb708901981e1d',1,'State.h']]], + ['vector1dsignal_6',['Vector1dSignal',['../Signal_8h.html#a22bc2b41e336fe6237cfa41ac7b57d0b',1,'Signal.h']]], + ['vector1dstate_7',['Vector1dState',['../State_8h.html#a1fccb71007e0830388d5c21c85e3344e',1,'State.h']]], + ['vector1dstatesignal_8',['Vector1dStateSignal',['../State_8h.html#a62568e2f3d59e51a60168009aa1a54bf',1,'State.h']]], + ['vector1signal_9',['Vector1Signal',['../Signal_8h.html#a655827b9e6d4727905cbaae6a996df8f',1,'Signal.h']]], + ['vector1state_10',['Vector1State',['../State_8h.html#a0cc4f9bb31ad1c5782e620e2a8168f99',1,'State.h']]], + ['vector1statesignal_11',['Vector1StateSignal',['../State_8h.html#a5e82a65c39e740624f9c118536b5475d',1,'State.h']]], + ['vector2dsignal_12',['Vector2dSignal',['../Signal_8h.html#a718e737386d2321f3e31df01ffe2fd61',1,'Signal.h']]], + ['vector2dstate_13',['Vector2dState',['../State_8h.html#ae54c0630e02ee333a48fe6531d00e071',1,'State.h']]], + ['vector2dstatesignal_14',['Vector2dStateSignal',['../State_8h.html#a100a0048450baf6c0d0c2f444eccaf8a',1,'State.h']]], + ['vector2signal_15',['Vector2Signal',['../Signal_8h.html#af705b24c209ce15ac1b412cbe7e52615',1,'Signal.h']]], + ['vector2state_16',['Vector2State',['../State_8h.html#af2610db569af97f280444234b4632b9b',1,'State.h']]], + ['vector2statesignal_17',['Vector2StateSignal',['../State_8h.html#a33b1f775ddbb45d3b1ae05ca4a7152c0',1,'State.h']]], + ['vector3dsignal_18',['Vector3dSignal',['../Signal_8h.html#addff0c3095fce02a8ae3d8669292ea8a',1,'Signal.h']]], + ['vector3dstate_19',['Vector3dState',['../State_8h.html#a0e9c381070552b28ffb2683b44e7b5a3',1,'State.h']]], + ['vector3dstatesignal_20',['Vector3dStateSignal',['../State_8h.html#a1e20c96461ce98997ef1a3c0ab7b6668',1,'State.h']]], + ['vector3signal_21',['Vector3Signal',['../Signal_8h.html#a6f00143250c4d5856a25417d2fb5908f',1,'Signal.h']]], + ['vector3state_22',['Vector3State',['../State_8h.html#aa8c0482241bd43048f5a8ae3365c82be',1,'State.h']]], + ['vector3statesignal_23',['Vector3StateSignal',['../State_8h.html#a007fe0235bfe0d3393d33584f9a38f5b',1,'State.h']]], + ['vector4dsignal_24',['Vector4dSignal',['../Signal_8h.html#a785560e5ddb26fcf9edc2eb9f34e7ec8',1,'Signal.h']]], + ['vector4dstate_25',['Vector4dState',['../State_8h.html#a8add6ebebc487c439430cb69d2892bbf',1,'State.h']]], + ['vector4dstatesignal_26',['Vector4dStateSignal',['../State_8h.html#a9013e9f17201a38fdb10648f14ea5c95',1,'State.h']]], + ['vector4signal_27',['Vector4Signal',['../Signal_8h.html#a30e3e4193a15b7c565df9edcf0b1a81b',1,'Signal.h']]], + ['vector4state_28',['Vector4State',['../State_8h.html#a4cfd5bd231c0f14e8a360134d9d17bee',1,'State.h']]], + ['vector4statesignal_29',['Vector4StateSignal',['../State_8h.html#a24c5f8ae10f7553987a0bb5c619cf505',1,'State.h']]], + ['vector5dsignal_30',['Vector5dSignal',['../Signal_8h.html#ad0b807d45bcfe07cc9a2f54648dd4821',1,'Signal.h']]], + ['vector5dstate_31',['Vector5dState',['../State_8h.html#a45d6b402de0ba422a815e117b084dde3',1,'State.h']]], + ['vector5dstatesignal_32',['Vector5dStateSignal',['../State_8h.html#a7a8f2f6fd14951fd2fe337c952b0cb74',1,'State.h']]], + ['vector5signal_33',['Vector5Signal',['../Signal_8h.html#ab517aee0ae3891deb305ebd61de6f0e4',1,'Signal.h']]], + ['vector5state_34',['Vector5State',['../State_8h.html#a2890d15ac36c73fcd73556771b80b47e',1,'State.h']]], + ['vector5statesignal_35',['Vector5StateSignal',['../State_8h.html#a05175ceaa15c466ce47c983d489ce31b',1,'State.h']]], + ['vector6dsignal_36',['Vector6dSignal',['../Signal_8h.html#acb50cf2886559fdfc3aba4ee722f511a',1,'Signal.h']]], + ['vector6dstate_37',['Vector6dState',['../State_8h.html#af07e3586e98f931acac5d0ffd9b17cee',1,'State.h']]], + ['vector6dstatesignal_38',['Vector6dStateSignal',['../State_8h.html#a9df3c94eca5a8200ce96b3221995c46b',1,'State.h']]], + ['vector6signal_39',['Vector6Signal',['../Signal_8h.html#a74174cf187bc4e74b3e7494b247e0284',1,'Signal.h']]], + ['vector6state_40',['Vector6State',['../State_8h.html#a767154e6e5b226bf7b6c9dad73aee6d2',1,'State.h']]], + ['vector6statesignal_41',['Vector6StateSignal',['../State_8h.html#a809dbd95b4841c294c3a75a7d40ecf62',1,'State.h']]], + ['vector7dsignal_42',['Vector7dSignal',['../Signal_8h.html#afea76be78e2b329344fb610a62c421e9',1,'Signal.h']]], + ['vector7dstate_43',['Vector7dState',['../State_8h.html#ad58fbc5cd721c46fe64d385cc3317380',1,'State.h']]], + ['vector7dstatesignal_44',['Vector7dStateSignal',['../State_8h.html#a901bd18eae58b6365b68227b38b8a6e1',1,'State.h']]], + ['vector7signal_45',['Vector7Signal',['../Signal_8h.html#a992c3596420601f0271876e30a152c1b',1,'Signal.h']]], + ['vector7state_46',['Vector7State',['../State_8h.html#a5c337dc74b2038b11a515b3d0559c1f2',1,'State.h']]], + ['vector7statesignal_47',['Vector7StateSignal',['../State_8h.html#aec3d4775be3f8929cbac8e75b0471e48',1,'State.h']]], + ['vector8dsignal_48',['Vector8dSignal',['../Signal_8h.html#ad2214d5fb3267b191128fcccb515448b',1,'Signal.h']]], + ['vector8dstate_49',['Vector8dState',['../State_8h.html#acfdf1934f5783c1dcab2987c242ef8af',1,'State.h']]], + ['vector8dstatesignal_50',['Vector8dStateSignal',['../State_8h.html#a25968e689d254876cbae1ff352b3f184',1,'State.h']]], + ['vector8signal_51',['Vector8Signal',['../Signal_8h.html#afaa686fc5ec63962f7da9907e6093e65',1,'Signal.h']]], + ['vector8state_52',['Vector8State',['../State_8h.html#a102cee6380e7d3e8f52988d17ac6a937',1,'State.h']]], + ['vector8statesignal_53',['Vector8StateSignal',['../State_8h.html#a1583d33e935bcb44fb80ee6172a59a9b',1,'State.h']]], + ['vector9dsignal_54',['Vector9dSignal',['../Signal_8h.html#acd349d949f45a7bce633414d05043cc3',1,'Signal.h']]], + ['vector9dstate_55',['Vector9dState',['../State_8h.html#a865c1f4de96010d38ee17edc48d6c611',1,'State.h']]], + ['vector9dstatesignal_56',['Vector9dStateSignal',['../State_8h.html#a0237ae6ced288b7b3853654cd4ce796c',1,'State.h']]], + ['vector9signal_57',['Vector9Signal',['../Signal_8h.html#a20d6ecf779577c444e3d1299861a3f8b',1,'Signal.h']]], + ['vector9state_58',['Vector9State',['../State_8h.html#acc503352a69f43c7991b9118bb466db2',1,'State.h']]], + ['vector9statesignal_59',['Vector9StateSignal',['../State_8h.html#a0ffa2fdd937c37ee8f09d3fb49057f76',1,'State.h']]], + ['vectorsignal_60',['VectorSignal',['../Signal_8h.html#a51a32a4dd69ee28867dba6202c812c5a',1,'Signal.h']]], + ['vectorsignalspec_61',['VectorSignalSpec',['../structVectorSignalSpec.html',1,'']]], + ['vectorstatesignal_62',['VectorStateSignal',['../State_8h.html#a214bd9926c3d8a2bb83b9b471744775b',1,'State.h']]], + ['vectorstatesignalspec_63',['VectorStateSignalSpec',['../structVectorStateSignalSpec.html',1,'']]], + ['vectorstatetype_64',['VectorStateType',['../State_8h.html#a60d0230d5788084bb8f559f4561d4d96',1,'State.h']]] +]; diff --git a/docs/search/all_13.js b/docs/search/all_13.js new file mode 100644 index 0000000..29ed313 --- /dev/null +++ b/docs/search/all_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['x_0',['x',['../classModel.html#abfe8871b9f0eac35c76af3f5cfcdea35',1,'Model::x'],['../structSignal_1_1SignalDP.html#a9b7c7d507ee5f16f1909dccdae98e649',1,'Signal::SignalDP::x']]], + ['xdot_1',['xdot',['../classModel.html#ab8bb4819a03ed642326295c28bea6fa7',1,'Model::xdot'],['../structSignal_1_1SignalDP.html#a31d004bf32039463b33344e4c10bd5bb',1,'Signal::SignalDP::xdot']]] +]; diff --git a/docs/search/all_14.js b/docs/search/all_14.js new file mode 100644 index 0000000..3228c81 --- /dev/null +++ b/docs/search/all_14.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['zero_5forder_5fhold_0',['ZERO_ORDER_HOLD',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284ad873f8ab97a3f6e892c8b834b23db574',1,'Signal.h']]], + ['zeros_1',['ZEROS',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4a5d7341ec5879a7f47c5cb82c0fdf6b5f',1,'Signal.h']]], + ['zerotype_2',['ZeroType',['../structScalarSignalSpec.html#a941ad7ca4c5943d3b2244e1126d1febf',1,'ScalarSignalSpec::ZeroType()'],['../structVectorSignalSpec.html#a4c535f5d5b25faa7148f8719d74693fd',1,'VectorSignalSpec::ZeroType()'],['../structManifoldSignalSpec.html#a445c0d7b5e23264b3a08b881f3c68a72',1,'ManifoldSignalSpec::ZeroType()'],['../structScalarStateSignalSpec.html#a0dc57853395e3c57d6447a23ae513b91',1,'ScalarStateSignalSpec::ZeroType()'],['../structVectorStateSignalSpec.html#ae659b96e95497b25e711fab331037c21',1,'VectorStateSignalSpec::ZeroType()'],['../structManifoldStateSignalSpec.html#adca9f48f26d97f95b2083b9e55bb58cb',1,'ManifoldStateSignalSpec::ZeroType()']]] +]; diff --git a/docs/search/all_2.js b/docs/search/all_2.js new file mode 100644 index 0000000..6deef30 --- /dev/null +++ b/docs/search/all_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['derivativemethod_0',['derivativeMethod',['../classSignal.html#ac0536cd4021cc4815a3dbb60c5b4f473',1,'Signal']]], + ['derivativemethod_1',['DerivativeMethod',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242',1,'Signal.h']]], + ['dirty_2',['DIRTY',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242a6a4e132eb192a22c351397837d4c082c',1,'Signal.h']]], + ['documentation_3',['signals-cpp Library Documentation',['../index.html',1,'']]], + ['dot_4',['dot',['../classSignal.html#a8b12b8bc1e74ddbadb67248fab16c461',1,'Signal::dot() const'],['../classSignal.html#a8989cbb307917a9c1f6331be2a5ae4e9',1,'Signal::dot(const double &t) const'],['../classSignal.html#aad31a21f4a7d572da1e06e407ccacecd',1,'Signal::dot(const std::vector< double > &t) const']]], + ['dotsignal_5',['dotSignal',['../classSignal.html#a95241f68d33194232ba1eea1747a5231',1,'Signal']]] +]; diff --git a/docs/search/all_3.js b/docs/search/all_3.js new file mode 100644 index 0000000..46c2b5e --- /dev/null +++ b/docs/search/all_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['eulerintegrator_0',['EulerIntegrator',['../Integration_8h.html#aa77358d3cb26c8b8992d44c2079a2a49',1,'Integration.h']]], + ['eulerintegratorspec_1',['EulerIntegratorSpec',['../structEulerIntegratorSpec.html',1,'']]], + ['extrapolationmethod_2',['extrapolationMethod',['../classSignal.html#aff76e692ad975b7721ecf6e60d33a11f',1,'Signal']]], + ['extrapolationmethod_3',['ExtrapolationMethod',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4',1,'Signal.h']]] +]; diff --git a/docs/search/all_4.js b/docs/search/all_4.js new file mode 100644 index 0000000..f74ca2b --- /dev/null +++ b/docs/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['finite_5fdiff_0',['FINITE_DIFF',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242a31a5b438304c770230e3fbb9999c9c2e',1,'Signal.h']]] +]; diff --git a/docs/search/all_5.js b/docs/search/all_5.js new file mode 100644 index 0000000..443c6f6 --- /dev/null +++ b/docs/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['g_0',['g',['../structRigidBodyParams1D.html#a823d208bcbabadd83d3cc8f222973c95',1,'RigidBodyParams1D::g'],['../structRigidBodyParams2D.html#ab212f53241edb1bf232499a6ba963258',1,'RigidBodyParams2D::g'],['../structRigidBodyParams3D.html#a87b9c6a467ebcd6805a1d9419e6149d1',1,'RigidBodyParams3D::g']]], + ['gettimedelta_1',['getTimeDelta',['../namespacesignal__utils.html#ad7667542f893604d059a5d0022d2890c',1,'signal_utils']]] +]; diff --git a/docs/search/all_6.js b/docs/search/all_6.js new file mode 100644 index 0000000..44dcb2b --- /dev/null +++ b/docs/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hasparams_0',['hasParams',['../classModel.html#a4f059d658bfda1665bf44a36b7aaf8e5',1,'Model']]] +]; diff --git a/docs/search/all_7.js b/docs/search/all_7.js new file mode 100644 index 0000000..32a0d8c --- /dev/null +++ b/docs/search/all_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['identity_0',['identity',['../structState.html#a035f1f7193895463743b8ee58d75634f',1,'State']]], + ['inputsignaltype_1',['InputSignalType',['../classModel.html#ac990dd4740b30e4477bca86fc6172970',1,'Model::InputSignalType'],['../structTranslationalDynamicsBase.html#aac403e4db54adf389b8f1fa3700f6f6a',1,'TranslationalDynamicsBase::InputSignalType'],['../structRotationalDynamics1DOF.html#a80b5f730e292fda15bdcf1e8b96fe02e',1,'RotationalDynamics1DOF::InputSignalType'],['../structRotationalDynamics3DOF.html#aac317f9992071217ce644f6b9ccd8763',1,'RotationalDynamics3DOF::InputSignalType'],['../structRigidBodyDynamics3DOF.html#a4341d5e4a676e15edc8f8faafef5431a',1,'RigidBodyDynamics3DOF::InputSignalType'],['../structRigidBodyDynamics6DOF.html#a8927301269f2ce616317819c769b9364',1,'RigidBodyDynamics6DOF::InputSignalType']]], + ['inputtype_2',['InputType',['../structTranslationalDynamicsBase.html#ac57d5ab2e4cf3e6afe4a5ae550e858bb',1,'TranslationalDynamicsBase::InputType'],['../structRotationalDynamics1DOF.html#ad43b9ce6a37b65d677d01ceafe448259',1,'RotationalDynamics1DOF::InputType'],['../structRotationalDynamics3DOF.html#aafaa22bb44de6a10f6293f66da5c52e5',1,'RotationalDynamics3DOF::InputType'],['../structRigidBodyDynamics3DOF.html#aa90232643a368b1d4b9fd618ae8d57f7',1,'RigidBodyDynamics3DOF::InputType'],['../structRigidBodyDynamics6DOF.html#ac8780c98b59889f8329aa467a5b375fe',1,'RigidBodyDynamics6DOF::InputType']]], + ['installation_3',['Installation',['../index.html#install',1,'']]], + ['integrate_4',['integrate',['../structIntegrator.html#ab3bebaa347f6019f3d2da2b2bcee5918',1,'Integrator::integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)'],['../structIntegrator.html#a8266e6bf3abd90d83fa7eb6b9270c0c4',1,'Integrator::integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)'],['../structEulerIntegratorSpec.html#a6c8d7aa2ecf83f7a348a575e5023639f',1,'EulerIntegratorSpec::integrate()'],['../structTrapezoidalIntegratorSpec.html#a38c21a876135bae55c62ec43c3a18a86',1,'TrapezoidalIntegratorSpec::integrate()'],['../structSimpsonIntegratorSpec.html#a6194da52902a391e4a9b251c05e6abf2',1,'SimpsonIntegratorSpec::integrate()']]], + ['integration_2eh_5',['Integration.h',['../Integration_8h.html',1,'']]], + ['integrator_6',['Integrator',['../structIntegrator.html',1,'']]], + ['interpolationmethod_7',['interpolationMethod',['../classSignal.html#ae4c3f0098aaec52921d28cce09ff1ed4',1,'Signal']]], + ['interpolationmethod_8',['InterpolationMethod',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284',1,'Signal.h']]], + ['introduction_9',['Introduction',['../index.html#intro_sec',1,'']]] +]; diff --git a/docs/search/all_8.js b/docs/search/all_8.js new file mode 100644 index 0000000..b3681b6 --- /dev/null +++ b/docs/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['j_0',['J',['../structRigidBodyParams2D.html#aaefd836b5e013be87bc317aaba261a25',1,'RigidBodyParams2D::J'],['../structRigidBodyParams3D.html#a049fb70b2897579849053dfe2ea840e6',1,'RigidBodyParams3D::J']]] +]; diff --git a/docs/search/all_9.js b/docs/search/all_9.js new file mode 100644 index 0000000..ed0726f --- /dev/null +++ b/docs/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20documentation_0',['signals-cpp Library Documentation',['../index.html',1,'']]], + ['linear_1',['LINEAR',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284adc101ebf31c49c2d4b80b7c6f59f22cb',1,'Signal.h']]] +]; diff --git a/docs/search/all_a.js b/docs/search/all_a.js new file mode 100644 index 0000000..f03fed5 --- /dev/null +++ b/docs/search/all_a.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['m_0',['m',['../structRigidBodyParams1D.html#a2f5a1c0e6320c14d72d0ff98ad979332',1,'RigidBodyParams1D::m'],['../structRigidBodyParams2D.html#a5e37a979a1a69333bcc5576d14397185',1,'RigidBodyParams2D::m'],['../structRigidBodyParams3D.html#acfa4c165c3278306dac4c0f51819e694',1,'RigidBodyParams3D::m']]], + ['make_5fintegrator_1',['MAKE_INTEGRATOR',['../Integration_8h.html#ac22028f5bd0a2ecee786d53a348e4073',1,'Integration.h']]], + ['make_5fmanif_5fsignal_2',['MAKE_MANIF_SIGNAL',['../Signal_8h.html#adf89e7a1e286d52fa755d04f0c087ea3',1,'Signal.h']]], + ['make_5fmanif_5fstates_3',['MAKE_MANIF_STATES',['../State_8h.html#a72800aeb486c7eebe1ab0fe8cfae6294',1,'State.h']]], + ['make_5fmodel_4',['MAKE_MODEL',['../Models_8h.html#a01637abb86bd3009fcff2cebc8a8735a',1,'Models.h']]], + ['make_5fvector_5fsignal_5',['MAKE_VECTOR_SIGNAL',['../Signal_8h.html#a45ef87a3bf4ac7938147e95995f76849',1,'Signal.h']]], + ['make_5fvector_5fstates_6',['MAKE_VECTOR_STATES',['../State_8h.html#aed0e3d5bd576a92c33ab3950c98a4e3b',1,'State.h']]], + ['manifoldsignal_7',['ManifoldSignal',['../Signal_8h.html#a278e5023dd90a58b58ce28b413ecec4a',1,'Signal.h']]], + ['manifoldsignalspec_8',['ManifoldSignalSpec',['../structManifoldSignalSpec.html',1,'']]], + ['manifoldstatesignal_9',['ManifoldStateSignal',['../State_8h.html#a111e9957b3bae43e71ce97678f712b8c',1,'State.h']]], + ['manifoldstatesignalspec_10',['ManifoldStateSignalSpec',['../structManifoldStateSignalSpec.html',1,'']]], + ['manifoldstatetype_11',['ManifoldStateType',['../State_8h.html#a73655df4c5d92f1cf1cf69d5fa057753',1,'State.h']]], + ['model_12',['Model',['../classModel.html',1,'Model< DynamicsType >'],['../classModel.html#a3cbccc00606661a35110dbe111af54ad',1,'Model::Model()']]], + ['models_2eh_13',['Models.h',['../Models_8h.html',1,'']]] +]; diff --git a/docs/search/all_b.js b/docs/search/all_b.js new file mode 100644 index 0000000..c5567a7 --- /dev/null +++ b/docs/search/all_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nans_0',['nans',['../structState.html#a9e331e0ecbed1ab2a03d9b3e5a457426',1,'State']]], + ['nans_1',['NANS',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4af4517d0db561241ccfcf150e1629767f',1,'Signal.h']]], + ['nanstype_2',['NansType',['../structScalarSignalSpec.html#a040a016b3023c9df47a913599e9af1e2',1,'ScalarSignalSpec::NansType()'],['../structVectorSignalSpec.html#a3a25051bf64d2677fc511bd026b7f6a2',1,'VectorSignalSpec::NansType()'],['../structManifoldSignalSpec.html#a8131da54a75205e3f61547afee1ccfcc',1,'ManifoldSignalSpec::NansType()'],['../structScalarStateSignalSpec.html#ac3878dfd1b21706364c34d09e6da37ce',1,'ScalarStateSignalSpec::NansType()'],['../structVectorStateSignalSpec.html#a4729eec41bab8eb5ed7b45aa8272be4d',1,'VectorStateSignalSpec::NansType()'],['../structManifoldStateSignalSpec.html#a7542075f653a7e8fba76702499936b17',1,'ManifoldStateSignalSpec::NansType()']]] +]; diff --git a/docs/search/all_c.js b/docs/search/all_c.js new file mode 100644 index 0000000..e0736d2 --- /dev/null +++ b/docs/search/all_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['operator_28_29_0',['operator()',['../classSignal.html#a2d222b24cb25f6f228a0c69d71d95918',1,'Signal::operator()() const'],['../classSignal.html#ad32d0b6b6bbc54ab8bd0fa63ed3039b9',1,'Signal::operator()(const double &t) const'],['../classSignal.html#abf8612dae8c835fa349c6f26201016eb',1,'Signal::operator()(const std::vector< double > &t) const']]], + ['operator_2a_1',['operator*',['../classSignal.html#ad61a2749da48601dcf27bedaa0cf54fd',1,'Signal::operator*'],['../classSignal.html#ae5d88905516fd17257964442b0830584',1,'Signal::operator*'],['../Signal_8h.html#ad77fa5fab1a3e9a6ca4d7e87364003b9',1,'operator*(const double &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../Signal_8h.html#ae0b0bee5051aeec3c9cff9fd148d8cb5',1,'operator*(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const double &r): Signal.h'],['../State_8h.html#a795d2ff5c53f24de712134f27e197001',1,'operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r): State.h'],['../State_8h.html#a7fa016cf853be0dbc882359bf5b637f9',1,'operator*(const State< T, PTS, PD, TTS, TD > &l, const double &r): State.h']]], + ['operator_2a_3d_2',['operator*=',['../structState.html#af76faa98cfc18fb81afb0c86f7a0aa75',1,'State']]], + ['operator_2b_3',['operator+',['../classSignal.html#aead0dbc78a90fbd6ad3f86ab61ed65f7',1,'Signal::operator+'],['../Signal_8h.html#aa4dc7aa056ee91a7dc4ec540b6bc9cd3',1,'operator+(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< TangentSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ac3e1ccc35f63b762bdd2c87478f8aad6',1,'operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r): State.h']]], + ['operator_2b_3d_4',['operator+=',['../structState.html#a7764970f0c29576eac07ab57c28261be',1,'State']]], + ['operator_2d_5',['operator-',['../classSignal.html#a22d02130c5fec79a084ef4d1a28521dc',1,'Signal::operator-'],['../Signal_8h.html#afd611b1d0ab8c1f43be72184926ec8ac',1,'operator-(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ad7ac1ecc8c925fbc991d2fa8ca50d4eb',1,'operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r): State.h']]], + ['operator_2f_6',['operator/',['../State_8h.html#af3ec1e7d28a9aac4e1cde4c7f3438128',1,'operator/(const ScalarStateType< T > &l, const double &r): State.h'],['../State_8h.html#a0f388e10603fb47846a1147ff5b6839d',1,'operator/(const VectorStateType< T, d > &l, const double &r): State.h']]], + ['operator_3c_3c_7',['operator<<',['../Signal_8h.html#a47318c97bced9b7ee828c94c1a4eeb29',1,'operator<<(std::ostream &os, const ScalarSignal< T > &x): Signal.h'],['../Signal_8h.html#aeb7f6d79d7e692981221b685c0863d54',1,'operator<<(std::ostream &os, const VectorSignal< T, d > &x): Signal.h'],['../Signal_8h.html#a6a76598b459ea2e14353617de437c808',1,'operator<<(std::ostream &os, const ManifoldSignal< T, ManifoldType, d > &x): Signal.h'],['../State_8h.html#ae29ac55bb38cdbd3acce109857e8e7a4',1,'operator<<(std::ostream &os, const ScalarStateType< T > &x): State.h'],['../State_8h.html#af1eca508289d2fcbdecd0cc136eed43d',1,'operator<<(std::ostream &os, const VectorStateType< T, d > &x): State.h'],['../State_8h.html#a494fe74e8c2fc3cd3f7e14886eeb7d6c',1,'operator<<(std::ostream &os, const ManifoldStateType< T, ManifoldType, PD, TD > &x): State.h'],['../State_8h.html#ab6fe6347b40120d5f45445b1fc6596f4',1,'operator<<(std::ostream &os, const ScalarStateSignal< T > &x): State.h'],['../State_8h.html#a1675ff98779b45e08f5d169056e26a4d',1,'operator<<(std::ostream &os, const VectorStateSignal< T, d > &x): State.h'],['../State_8h.html#a6c0f637d1f1980a2de56f125e9cf4ec1',1,'operator<<(std::ostream &os, const ManifoldStateSignal< T, ManifoldType, PD, TD > &x): State.h']]] +]; diff --git a/docs/search/all_d.js b/docs/search/all_d.js new file mode 100644 index 0000000..7631909 --- /dev/null +++ b/docs/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paramstype_0',['ParamsType',['../classModel.html#aec20251d98505785fa51c52eb81dd3a2',1,'Model::ParamsType'],['../structTranslationalDynamicsBase.html#a4ba374f05dd1f5c4168adf3d6a15ef0c',1,'TranslationalDynamicsBase::ParamsType'],['../structRotationalDynamics1DOF.html#a38ff3a3028dc85817407d15587bf3451',1,'RotationalDynamics1DOF::ParamsType'],['../structRotationalDynamics3DOF.html#a2ac951c964726729410488c2bfcfa156',1,'RotationalDynamics3DOF::ParamsType'],['../structRigidBodyDynamics3DOF.html#afa1ade3cc027b78a2d2c65df867d52b0',1,'RigidBodyDynamics3DOF::ParamsType'],['../structRigidBodyDynamics6DOF.html#ad252337a912dcd1cfaa097d9c2d5814e',1,'RigidBodyDynamics6DOF::ParamsType']]], + ['pose_1',['pose',['../structState.html#a0a5874d4c3988770f5498c34ec508c34',1,'State']]], + ['posetype_2',['PoseType',['../structState.html#a31bd8aa44dff5f656b2b2057c8d63821',1,'State']]] +]; diff --git a/docs/search/all_e.js b/docs/search/all_e.js new file mode 100644 index 0000000..795ea69 --- /dev/null +++ b/docs/search/all_e.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['reset_0',['reset',['../classModel.html#a823536a9764d6a35cce173573ee62e90',1,'Model::reset()'],['../classSignal.html#a914fd7f09ae0723c88fce310fd7c79fd',1,'Signal::reset()']]], + ['rigidbody3dofmodel_1',['RigidBody3DOFModel',['../Models_8h.html#a253b3866118f6e70cfc4f08b471c2975',1,'Models.h']]], + ['rigidbody3dofmodeld_2',['RigidBody3DOFModeld',['../Models_8h.html#a46f2319cb159c02e4eb4801d850d54d9',1,'Models.h']]], + ['rigidbody6dofmodel_3',['RigidBody6DOFModel',['../Models_8h.html#ac6b34f1aa0a10dcb6e9fda4a2814a9b3',1,'Models.h']]], + ['rigidbody6dofmodeld_4',['RigidBody6DOFModeld',['../Models_8h.html#a40c2fc8d427c1bd6dfee02295ccb3cb6',1,'Models.h']]], + ['rigidbodydynamics3dof_5',['RigidBodyDynamics3DOF',['../structRigidBodyDynamics3DOF.html',1,'']]], + ['rigidbodydynamics6dof_6',['RigidBodyDynamics6DOF',['../structRigidBodyDynamics6DOF.html',1,'']]], + ['rigidbodyparams1d_7',['RigidBodyParams1D',['../structRigidBodyParams1D.html',1,'RigidBodyParams1D'],['../structRigidBodyParams1D.html#ab2b9c3eb89bcbf0ac06a33e95725e0eb',1,'RigidBodyParams1D::RigidBodyParams1D()']]], + ['rigidbodyparams2d_8',['RigidBodyParams2D',['../structRigidBodyParams2D.html',1,'RigidBodyParams2D'],['../structRigidBodyParams2D.html#a6febaa8c9f355105b908979da3dd1255',1,'RigidBodyParams2D::RigidBodyParams2D()']]], + ['rigidbodyparams3d_9',['RigidBodyParams3D',['../structRigidBodyParams3D.html',1,'RigidBodyParams3D'],['../structRigidBodyParams3D.html#a8aa76fea7a0790ead025bf79e767d0cf',1,'RigidBodyParams3D::RigidBodyParams3D()']]], + ['rotational1dofmodel_10',['Rotational1DOFModel',['../Models_8h.html#a44917fd68b589ce4fc82e69e00c41201',1,'Models.h']]], + ['rotational1dofmodeld_11',['Rotational1DOFModeld',['../Models_8h.html#af9b104589a404874af160185cf8a725c',1,'Models.h']]], + ['rotational3dofmodel_12',['Rotational3DOFModel',['../Models_8h.html#ad5282fd410476dbdd8381772a38ac2f1',1,'Models.h']]], + ['rotational3dofmodeld_13',['Rotational3DOFModeld',['../Models_8h.html#a51e40a2924a4b6ff134878368461bb1a',1,'Models.h']]], + ['rotationaldynamics1dof_14',['RotationalDynamics1DOF',['../structRotationalDynamics1DOF.html',1,'']]], + ['rotationaldynamics3dof_15',['RotationalDynamics3DOF',['../structRotationalDynamics3DOF.html',1,'']]] +]; diff --git a/docs/search/all_f.js b/docs/search/all_f.js new file mode 100644 index 0000000..09740cf --- /dev/null +++ b/docs/search/all_f.js @@ -0,0 +1,57 @@ +var searchData= +[ + ['scalardsignal_0',['ScalardSignal',['../Signal_8h.html#a5d3a7fde60e049b3fb16e62c397585a0',1,'Signal.h']]], + ['scalardstate_1',['ScalardState',['../State_8h.html#aab879370bd488ae3cb270da1dfc5f695',1,'State.h']]], + ['scalardstatesignal_2',['ScalardStateSignal',['../State_8h.html#a95f500a02b3d50ef0a73883e96ae8768',1,'State.h']]], + ['scalarsignal_3',['ScalarSignal',['../Signal_8h.html#a19e9e3fdf9dac462c6fb79ee572d2b4c',1,'Signal.h']]], + ['scalarsignalspec_4',['ScalarSignalSpec',['../structScalarSignalSpec.html',1,'']]], + ['scalarstate_5',['ScalarState',['../State_8h.html#ae2fe8fddd28ed110fbc33b4ca506bd0f',1,'State.h']]], + ['scalarstatesignal_6',['ScalarStateSignal',['../State_8h.html#a7059d2190879b0e80afad377593fb225',1,'State.h']]], + ['scalarstatesignalspec_7',['ScalarStateSignalSpec',['../structScalarStateSignalSpec.html',1,'']]], + ['scalarstatetype_8',['ScalarStateType',['../State_8h.html#aad51d946606df50291c6c2f546030f11',1,'State.h']]], + ['se2dsignal_9',['SE2dSignal',['../Signal_8h.html#a27317de3cebe688fdf9b1f89e8d749ea',1,'Signal.h']]], + ['se2dstate_10',['SE2dState',['../State_8h.html#abf8de0fae02a60506ddd6e134b75ae00',1,'State.h']]], + ['se2dstatesignal_11',['SE2dStateSignal',['../State_8h.html#a709efdac7ba2c93eedbf1533c74e42f5',1,'State.h']]], + ['se2signal_12',['SE2Signal',['../Signal_8h.html#ad643119cf3272132185b21288c55d408',1,'Signal.h']]], + ['se2state_13',['SE2State',['../State_8h.html#a040c943cebaa523f316e57aaa2c90a8f',1,'State.h']]], + ['se2statesignal_14',['SE2StateSignal',['../State_8h.html#a7de4c0261575a69f6ed4e17cf50e3e03',1,'State.h']]], + ['se3dsignal_15',['SE3dSignal',['../Signal_8h.html#a13875f09fcdcc6dd114766bacc38f01b',1,'Signal.h']]], + ['se3dstate_16',['SE3dState',['../State_8h.html#a98daf00f053bcc148a93319eac4901e4',1,'State.h']]], + ['se3dstatesignal_17',['SE3dStateSignal',['../State_8h.html#a9b00d890fcdbf16abfbb263061e9bc98',1,'State.h']]], + ['se3signal_18',['SE3Signal',['../Signal_8h.html#a765b6ae13329153a6b634a059a9402a3',1,'Signal.h']]], + ['se3state_19',['SE3State',['../State_8h.html#aac8e0a5eaf4f01fa2a6f388c116187b6',1,'State.h']]], + ['se3statesignal_20',['SE3StateSignal',['../State_8h.html#a0f26da8f398a7f20706b5f962e475126',1,'State.h']]], + ['setderivativemethod_21',['setDerivativeMethod',['../classSignal.html#a8c25f302d3c4feaa1a4c1f6d59381d89',1,'Signal']]], + ['setextrapolationmethod_22',['setExtrapolationMethod',['../classSignal.html#ac3be206ae717ad5e977d8a108de9b9e4',1,'Signal']]], + ['setinterpolationmethod_23',['setInterpolationMethod',['../classSignal.html#af336f3d6a2d643040dff9fb5b4c20558',1,'Signal']]], + ['setparams_24',['setParams',['../classModel.html#a96533143a30ab87c379e411fcae59643',1,'Model']]], + ['signal_25',['Signal',['../classSignal.html',1,'Signal< BaseSignalSpec, TangentSignalSpec >'],['../classSignal.html#a8b5d0a9fba3546f500fed7e2102cd9a7',1,'Signal::Signal()'],['../classSignal.html#a81a95abda92d3efc0bd4b4ccba77e303',1,'Signal::Signal(const Signal &other)']]], + ['signal_2eh_26',['Signal.h',['../Signal_8h.html',1,'']]], + ['signal_5futils_27',['signal_utils',['../namespacesignal__utils.html',1,'']]], + ['signaldp_28',['SignalDP',['../structSignal_1_1SignalDP.html',1,'Signal']]], + ['signaldpcomparator_29',['SignalDPComparator',['../classSignal.html#a3961e7ce30f40f8104dd3d25f2e70a7f',1,'Signal']]], + ['signals_20cpp_20library_20documentation_30',['signals-cpp Library Documentation',['../index.html',1,'']]], + ['signals_2eh_31',['Signals.h',['../Signals_8h.html',1,'']]], + ['simpsonintegrator_32',['SimpsonIntegrator',['../Integration_8h.html#aa29ec69e4ec01e7fe15ed9bbc59fd93b',1,'Integration.h']]], + ['simpsonintegratorspec_33',['SimpsonIntegratorSpec',['../structSimpsonIntegratorSpec.html',1,'']]], + ['simulate_34',['simulate',['../classModel.html#ac7446138b27c8feba779ebfe8e82b99d',1,'Model::simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)'],['../classModel.html#ac2550ae8ed888d167450160ce55286df',1,'Model::simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)']]], + ['so2dsignal_35',['SO2dSignal',['../Signal_8h.html#a43a8b3bb4241f080c75114c98502e21b',1,'Signal.h']]], + ['so2dstate_36',['SO2dState',['../State_8h.html#af87fca61f7adfb8b62056d2f6c815e51',1,'State.h']]], + ['so2dstatesignal_37',['SO2dStateSignal',['../State_8h.html#a4f4b421bf1a450cd6514a24b8c16e8cb',1,'State.h']]], + ['so2signal_38',['SO2Signal',['../Signal_8h.html#ac36c4f295327639b98a801301e288845',1,'Signal.h']]], + ['so2state_39',['SO2State',['../State_8h.html#a53505b4e14d5121cf4ec30c3d5ee854f',1,'State.h']]], + ['so2statesignal_40',['SO2StateSignal',['../State_8h.html#a4e7a95697e869ec8e9cd31c0723ea2cf',1,'State.h']]], + ['so3dsignal_41',['SO3dSignal',['../Signal_8h.html#a1fbce3445fc6d54d3dfc2aa95fdcc37f',1,'Signal.h']]], + ['so3dstate_42',['SO3dState',['../State_8h.html#a7ab722ee104a5c16222f5cbd0d682657',1,'State.h']]], + ['so3dstatesignal_43',['SO3dStateSignal',['../State_8h.html#a7069682eef4672ac723761c44e44bc5a',1,'State.h']]], + ['so3signal_44',['SO3Signal',['../Signal_8h.html#afca3faa089af1abf0b808bcb6be5e740',1,'Signal.h']]], + ['so3state_45',['SO3State',['../State_8h.html#a0bc2e14b1e00089eac587823a7028df1',1,'State.h']]], + ['so3statesignal_46',['SO3StateSignal',['../State_8h.html#ae37ddd285b52c0765cd59fd0e212dfb5',1,'State.h']]], + ['state_47',['State',['../structState.html',1,'State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >'],['../structState.html#adcb914ebe25fe14622a945801267fa7a',1,'State::State()'],['../structState.html#a097d236bc46ca02a379e2fd188fe3e97',1,'State::State(T *arr)'],['../structState.html#aa10b450dbe8a806a0b203521b4738c0c',1,'State::State(const State &other)']]], + ['state_2eh_48',['State.h',['../State_8h.html',1,'']]], + ['statedotdottype_49',['StateDotDotType',['../structTranslationalDynamicsBase.html#a4ae3874e31bcc97d54f4cebea0606002',1,'TranslationalDynamicsBase::StateDotDotType'],['../structRotationalDynamics1DOF.html#a5e2f1cd471e7be99dc9e0f3f29f146f3',1,'RotationalDynamics1DOF::StateDotDotType'],['../structRotationalDynamics3DOF.html#a6e75764a6e9b0ec406d716dfb60943b1',1,'RotationalDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics3DOF.html#a562a8cc5e6e8dca19982509022a22ba4',1,'RigidBodyDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics6DOF.html#a32c92b85c94f66739358385a0a3a07fc',1,'RigidBodyDynamics6DOF::StateDotDotType']]], + ['statedotsignaltype_50',['StateDotSignalType',['../classModel.html#a8abdf37c6158386a9f1d2c6c506f6839',1,'Model::StateDotSignalType'],['../structTranslationalDynamicsBase.html#a3870f6b57fcb6cb578b3640401331a39',1,'TranslationalDynamicsBase::StateDotSignalType'],['../structRotationalDynamics1DOF.html#a32c4979bf8f6aa3f9c1b0f2818ba4abd',1,'RotationalDynamics1DOF::StateDotSignalType'],['../structRotationalDynamics3DOF.html#a6b1ce3427c65404128d15a66c3d11621',1,'RotationalDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics3DOF.html#a28d138392ca0069c5e6274f78fd08e29',1,'RigidBodyDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics6DOF.html#afcafc7961087b27b239ad998e436da9a',1,'RigidBodyDynamics6DOF::StateDotSignalType']]], + ['statedottype_51',['StateDotType',['../structTranslationalDynamicsBase.html#a25c6532290d222c25e727394a0afa0b7',1,'TranslationalDynamicsBase::StateDotType'],['../structRotationalDynamics1DOF.html#a7df05f9db990eecd331f506d1a17597e',1,'RotationalDynamics1DOF::StateDotType'],['../structRotationalDynamics3DOF.html#a40c9649794d2d6e82da6451d17c32bb5',1,'RotationalDynamics3DOF::StateDotType'],['../structRigidBodyDynamics3DOF.html#a7a9fa29ba97531d856e87560806a805c',1,'RigidBodyDynamics3DOF::StateDotType'],['../structRigidBodyDynamics6DOF.html#aa664579d3d691fcd4c5824b242dd2061',1,'RigidBodyDynamics6DOF::StateDotType']]], + ['statesignaltype_52',['StateSignalType',['../classModel.html#a643e1a47ddbb10c5c10844f9aea5be98',1,'Model::StateSignalType'],['../structTranslationalDynamicsBase.html#a1f0fdd4bbfb73f52878c7e5c7e459f16',1,'TranslationalDynamicsBase::StateSignalType'],['../structRotationalDynamics1DOF.html#ac321d27d0098cb3e8e64ea0d98500cb6',1,'RotationalDynamics1DOF::StateSignalType'],['../structRotationalDynamics3DOF.html#a2814e21ab959a4cb71fdc2682d1cad69',1,'RotationalDynamics3DOF::StateSignalType'],['../structRigidBodyDynamics3DOF.html#a0c346a983bc929f1f7a6e5d2be3a0841',1,'RigidBodyDynamics3DOF::StateSignalType'],['../structRigidBodyDynamics6DOF.html#ad4e0605bf2a0c90acbe9a1a333b9b952',1,'RigidBodyDynamics6DOF::StateSignalType']]], + ['statetype_53',['StateType',['../structTranslationalDynamicsBase.html#aabb958cc98babacfc8478a04fb7a37dd',1,'TranslationalDynamicsBase::StateType'],['../structRotationalDynamics1DOF.html#aada86d78db85576298e606afda8c928d',1,'RotationalDynamics1DOF::StateType'],['../structRotationalDynamics3DOF.html#aaee29651f3b1671b6ab4e10656ea6f9a',1,'RotationalDynamics3DOF::StateType'],['../structRigidBodyDynamics3DOF.html#a448c5efb998f492d1518eb0d2d7ded74',1,'RigidBodyDynamics3DOF::StateType'],['../structRigidBodyDynamics6DOF.html#adf5c3e5f6090032d18019c7aeab91f51',1,'RigidBodyDynamics6DOF::StateType']]] +]; diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js new file mode 100644 index 0000000..5d161be --- /dev/null +++ b/docs/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['eulerintegratorspec_0',['EulerIntegratorSpec',['../structEulerIntegratorSpec.html',1,'']]] +]; diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js new file mode 100644 index 0000000..2f5ddb9 --- /dev/null +++ b/docs/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['integrator_0',['Integrator',['../structIntegrator.html',1,'']]] +]; diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js new file mode 100644 index 0000000..7e330b0 --- /dev/null +++ b/docs/search/classes_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['manifoldsignalspec_0',['ManifoldSignalSpec',['../structManifoldSignalSpec.html',1,'']]], + ['manifoldstatesignalspec_1',['ManifoldStateSignalSpec',['../structManifoldStateSignalSpec.html',1,'']]], + ['model_2',['Model',['../classModel.html',1,'']]] +]; diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js new file mode 100644 index 0000000..5edfde1 --- /dev/null +++ b/docs/search/classes_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['rigidbodydynamics3dof_0',['RigidBodyDynamics3DOF',['../structRigidBodyDynamics3DOF.html',1,'']]], + ['rigidbodydynamics6dof_1',['RigidBodyDynamics6DOF',['../structRigidBodyDynamics6DOF.html',1,'']]], + ['rigidbodyparams1d_2',['RigidBodyParams1D',['../structRigidBodyParams1D.html',1,'']]], + ['rigidbodyparams2d_3',['RigidBodyParams2D',['../structRigidBodyParams2D.html',1,'']]], + ['rigidbodyparams3d_4',['RigidBodyParams3D',['../structRigidBodyParams3D.html',1,'']]], + ['rotationaldynamics1dof_5',['RotationalDynamics1DOF',['../structRotationalDynamics1DOF.html',1,'']]], + ['rotationaldynamics3dof_6',['RotationalDynamics3DOF',['../structRotationalDynamics3DOF.html',1,'']]] +]; diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js new file mode 100644 index 0000000..ca9c09d --- /dev/null +++ b/docs/search/classes_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['scalarsignalspec_0',['ScalarSignalSpec',['../structScalarSignalSpec.html',1,'']]], + ['scalarstatesignalspec_1',['ScalarStateSignalSpec',['../structScalarStateSignalSpec.html',1,'']]], + ['signal_2',['Signal',['../classSignal.html',1,'']]], + ['signaldp_3',['SignalDP',['../structSignal_1_1SignalDP.html',1,'Signal']]], + ['simpsonintegratorspec_4',['SimpsonIntegratorSpec',['../structSimpsonIntegratorSpec.html',1,'']]], + ['state_5',['State',['../structState.html',1,'']]] +]; diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js new file mode 100644 index 0000000..11587bb --- /dev/null +++ b/docs/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['translationaldynamicsbase_0',['TranslationalDynamicsBase',['../structTranslationalDynamicsBase.html',1,'']]], + ['trapezoidalintegratorspec_1',['TrapezoidalIntegratorSpec',['../structTrapezoidalIntegratorSpec.html',1,'']]] +]; diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js new file mode 100644 index 0000000..1b5c2d3 --- /dev/null +++ b/docs/search/classes_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vectorsignalspec_0',['VectorSignalSpec',['../structVectorSignalSpec.html',1,'']]], + ['vectorstatesignalspec_1',['VectorStateSignalSpec',['../structVectorStateSignalSpec.html',1,'']]] +]; diff --git a/docs/search/close.svg b/docs/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/docs/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/docs/search/defines_0.js b/docs/search/defines_0.js new file mode 100644 index 0000000..25a2454 --- /dev/null +++ b/docs/search/defines_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['make_5fintegrator_0',['MAKE_INTEGRATOR',['../Integration_8h.html#ac22028f5bd0a2ecee786d53a348e4073',1,'Integration.h']]], + ['make_5fmanif_5fsignal_1',['MAKE_MANIF_SIGNAL',['../Signal_8h.html#adf89e7a1e286d52fa755d04f0c087ea3',1,'Signal.h']]], + ['make_5fmanif_5fstates_2',['MAKE_MANIF_STATES',['../State_8h.html#a72800aeb486c7eebe1ab0fe8cfae6294',1,'State.h']]], + ['make_5fmodel_3',['MAKE_MODEL',['../Models_8h.html#a01637abb86bd3009fcff2cebc8a8735a',1,'Models.h']]], + ['make_5fvector_5fsignal_4',['MAKE_VECTOR_SIGNAL',['../Signal_8h.html#a45ef87a3bf4ac7938147e95995f76849',1,'Signal.h']]], + ['make_5fvector_5fstates_5',['MAKE_VECTOR_STATES',['../State_8h.html#aed0e3d5bd576a92c33ab3950c98a4e3b',1,'State.h']]] +]; diff --git a/docs/search/enums_0.js b/docs/search/enums_0.js new file mode 100644 index 0000000..466754e --- /dev/null +++ b/docs/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['derivativemethod_0',['DerivativeMethod',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242',1,'Signal.h']]] +]; diff --git a/docs/search/enums_1.js b/docs/search/enums_1.js new file mode 100644 index 0000000..4ea2cae --- /dev/null +++ b/docs/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['extrapolationmethod_0',['ExtrapolationMethod',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4',1,'Signal.h']]] +]; diff --git a/docs/search/enums_2.js b/docs/search/enums_2.js new file mode 100644 index 0000000..b99562e --- /dev/null +++ b/docs/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['interpolationmethod_0',['InterpolationMethod',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284',1,'Signal.h']]] +]; diff --git a/docs/search/enumvalues_0.js b/docs/search/enumvalues_0.js new file mode 100644 index 0000000..ffdb0cb --- /dev/null +++ b/docs/search/enumvalues_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['closest_0',['CLOSEST',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4a901e715f86c693ccd2851e8c0b64cca3',1,'Signal.h']]], + ['cubic_5fspline_1',['CUBIC_SPLINE',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284a13480ea7779c90806a9fa4ef70322ebc',1,'Signal.h']]] +]; diff --git a/docs/search/enumvalues_1.js b/docs/search/enumvalues_1.js new file mode 100644 index 0000000..992a90c --- /dev/null +++ b/docs/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dirty_0',['DIRTY',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242a6a4e132eb192a22c351397837d4c082c',1,'Signal.h']]] +]; diff --git a/docs/search/enumvalues_2.js b/docs/search/enumvalues_2.js new file mode 100644 index 0000000..f74ca2b --- /dev/null +++ b/docs/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['finite_5fdiff_0',['FINITE_DIFF',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242a31a5b438304c770230e3fbb9999c9c2e',1,'Signal.h']]] +]; diff --git a/docs/search/enumvalues_3.js b/docs/search/enumvalues_3.js new file mode 100644 index 0000000..399f5cf --- /dev/null +++ b/docs/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linear_0',['LINEAR',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284adc101ebf31c49c2d4b80b7c6f59f22cb',1,'Signal.h']]] +]; diff --git a/docs/search/enumvalues_4.js b/docs/search/enumvalues_4.js new file mode 100644 index 0000000..c286826 --- /dev/null +++ b/docs/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nans_0',['NANS',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4af4517d0db561241ccfcf150e1629767f',1,'Signal.h']]] +]; diff --git a/docs/search/enumvalues_5.js b/docs/search/enumvalues_5.js new file mode 100644 index 0000000..2df62e7 --- /dev/null +++ b/docs/search/enumvalues_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['zero_5forder_5fhold_0',['ZERO_ORDER_HOLD',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284ad873f8ab97a3f6e892c8b834b23db574',1,'Signal.h']]], + ['zeros_1',['ZEROS',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4a5d7341ec5879a7f47c5cb82c0fdf6b5f',1,'Signal.h']]] +]; diff --git a/docs/search/files_0.js b/docs/search/files_0.js new file mode 100644 index 0000000..399a7ee --- /dev/null +++ b/docs/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['integration_2eh_0',['Integration.h',['../Integration_8h.html',1,'']]] +]; diff --git a/docs/search/files_1.js b/docs/search/files_1.js new file mode 100644 index 0000000..1a6772a --- /dev/null +++ b/docs/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['models_2eh_0',['Models.h',['../Models_8h.html',1,'']]] +]; diff --git a/docs/search/files_2.js b/docs/search/files_2.js new file mode 100644 index 0000000..df4a0ce --- /dev/null +++ b/docs/search/files_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['signal_2eh_0',['Signal.h',['../Signal_8h.html',1,'']]], + ['signals_2eh_1',['Signals.h',['../Signals_8h.html',1,'']]], + ['state_2eh_2',['State.h',['../State_8h.html',1,'']]] +]; diff --git a/docs/search/files_3.js b/docs/search/files_3.js new file mode 100644 index 0000000..9f8c25f --- /dev/null +++ b/docs/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utils_2eh_0',['Utils.h',['../Utils_8h.html',1,'']]] +]; diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js new file mode 100644 index 0000000..18591c9 --- /dev/null +++ b/docs/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dot_0',['dot',['../classSignal.html#a8b12b8bc1e74ddbadb67248fab16c461',1,'Signal::dot() const'],['../classSignal.html#a8989cbb307917a9c1f6331be2a5ae4e9',1,'Signal::dot(const double &t) const'],['../classSignal.html#aad31a21f4a7d572da1e06e407ccacecd',1,'Signal::dot(const std::vector< double > &t) const']]], + ['dotsignal_1',['dotSignal',['../classSignal.html#a95241f68d33194232ba1eea1747a5231',1,'Signal']]] +]; diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js new file mode 100644 index 0000000..4a3a29b --- /dev/null +++ b/docs/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gettimedelta_0',['getTimeDelta',['../namespacesignal__utils.html#ad7667542f893604d059a5d0022d2890c',1,'signal_utils']]] +]; diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js new file mode 100644 index 0000000..44dcb2b --- /dev/null +++ b/docs/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hasparams_0',['hasParams',['../classModel.html#a4f059d658bfda1665bf44a36b7aaf8e5',1,'Model']]] +]; diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js new file mode 100644 index 0000000..94aecbe --- /dev/null +++ b/docs/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['identity_0',['identity',['../structState.html#a035f1f7193895463743b8ee58d75634f',1,'State']]], + ['integrate_1',['integrate',['../structIntegrator.html#ab3bebaa347f6019f3d2da2b2bcee5918',1,'Integrator::integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)'],['../structIntegrator.html#a8266e6bf3abd90d83fa7eb6b9270c0c4',1,'Integrator::integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)'],['../structEulerIntegratorSpec.html#a6c8d7aa2ecf83f7a348a575e5023639f',1,'EulerIntegratorSpec::integrate()'],['../structTrapezoidalIntegratorSpec.html#a38c21a876135bae55c62ec43c3a18a86',1,'TrapezoidalIntegratorSpec::integrate()'],['../structSimpsonIntegratorSpec.html#a6194da52902a391e4a9b251c05e6abf2',1,'SimpsonIntegratorSpec::integrate()']]] +]; diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js new file mode 100644 index 0000000..386bff5 --- /dev/null +++ b/docs/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_0',['Model',['../classModel.html#a3cbccc00606661a35110dbe111af54ad',1,'Model']]] +]; diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js new file mode 100644 index 0000000..6a7c982 --- /dev/null +++ b/docs/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nans_0',['nans',['../structState.html#a9e331e0ecbed1ab2a03d9b3e5a457426',1,'State']]], + ['nanstype_1',['NansType',['../structScalarSignalSpec.html#a040a016b3023c9df47a913599e9af1e2',1,'ScalarSignalSpec::NansType()'],['../structVectorSignalSpec.html#a3a25051bf64d2677fc511bd026b7f6a2',1,'VectorSignalSpec::NansType()'],['../structManifoldSignalSpec.html#a8131da54a75205e3f61547afee1ccfcc',1,'ManifoldSignalSpec::NansType()'],['../structScalarStateSignalSpec.html#ac3878dfd1b21706364c34d09e6da37ce',1,'ScalarStateSignalSpec::NansType()'],['../structVectorStateSignalSpec.html#a4729eec41bab8eb5ed7b45aa8272be4d',1,'VectorStateSignalSpec::NansType()'],['../structManifoldStateSignalSpec.html#a7542075f653a7e8fba76702499936b17',1,'ManifoldStateSignalSpec::NansType()']]] +]; diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js new file mode 100644 index 0000000..7f6e26e --- /dev/null +++ b/docs/search/functions_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['operator_28_29_0',['operator()',['../classSignal.html#a2d222b24cb25f6f228a0c69d71d95918',1,'Signal::operator()() const'],['../classSignal.html#ad32d0b6b6bbc54ab8bd0fa63ed3039b9',1,'Signal::operator()(const double &t) const'],['../classSignal.html#abf8612dae8c835fa349c6f26201016eb',1,'Signal::operator()(const std::vector< double > &t) const']]], + ['operator_2a_1',['operator*',['../Signal_8h.html#ad77fa5fab1a3e9a6ca4d7e87364003b9',1,'operator*(const double &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../Signal_8h.html#ae0b0bee5051aeec3c9cff9fd148d8cb5',1,'operator*(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const double &r): Signal.h'],['../State_8h.html#a795d2ff5c53f24de712134f27e197001',1,'operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r): State.h'],['../State_8h.html#a7fa016cf853be0dbc882359bf5b637f9',1,'operator*(const State< T, PTS, PD, TTS, TD > &l, const double &r): State.h']]], + ['operator_2a_3d_2',['operator*=',['../structState.html#af76faa98cfc18fb81afb0c86f7a0aa75',1,'State']]], + ['operator_2b_3',['operator+',['../Signal_8h.html#aa4dc7aa056ee91a7dc4ec540b6bc9cd3',1,'operator+(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< TangentSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ac3e1ccc35f63b762bdd2c87478f8aad6',1,'operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r): State.h']]], + ['operator_2b_3d_4',['operator+=',['../structState.html#a7764970f0c29576eac07ab57c28261be',1,'State']]], + ['operator_2d_5',['operator-',['../Signal_8h.html#afd611b1d0ab8c1f43be72184926ec8ac',1,'operator-(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ad7ac1ecc8c925fbc991d2fa8ca50d4eb',1,'operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r): State.h']]], + ['operator_2f_6',['operator/',['../State_8h.html#af3ec1e7d28a9aac4e1cde4c7f3438128',1,'operator/(const ScalarStateType< T > &l, const double &r): State.h'],['../State_8h.html#a0f388e10603fb47846a1147ff5b6839d',1,'operator/(const VectorStateType< T, d > &l, const double &r): State.h']]], + ['operator_3c_3c_7',['operator<<',['../Signal_8h.html#a47318c97bced9b7ee828c94c1a4eeb29',1,'operator<<(std::ostream &os, const ScalarSignal< T > &x): Signal.h'],['../Signal_8h.html#aeb7f6d79d7e692981221b685c0863d54',1,'operator<<(std::ostream &os, const VectorSignal< T, d > &x): Signal.h'],['../Signal_8h.html#a6a76598b459ea2e14353617de437c808',1,'operator<<(std::ostream &os, const ManifoldSignal< T, ManifoldType, d > &x): Signal.h'],['../State_8h.html#ae29ac55bb38cdbd3acce109857e8e7a4',1,'operator<<(std::ostream &os, const ScalarStateType< T > &x): State.h'],['../State_8h.html#af1eca508289d2fcbdecd0cc136eed43d',1,'operator<<(std::ostream &os, const VectorStateType< T, d > &x): State.h'],['../State_8h.html#a494fe74e8c2fc3cd3f7e14886eeb7d6c',1,'operator<<(std::ostream &os, const ManifoldStateType< T, ManifoldType, PD, TD > &x): State.h'],['../State_8h.html#ab6fe6347b40120d5f45445b1fc6596f4',1,'operator<<(std::ostream &os, const ScalarStateSignal< T > &x): State.h'],['../State_8h.html#a1675ff98779b45e08f5d169056e26a4d',1,'operator<<(std::ostream &os, const VectorStateSignal< T, d > &x): State.h'],['../State_8h.html#a6c0f637d1f1980a2de56f125e9cf4ec1',1,'operator<<(std::ostream &os, const ManifoldStateSignal< T, ManifoldType, PD, TD > &x): State.h']]] +]; diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js new file mode 100644 index 0000000..f0e9665 --- /dev/null +++ b/docs/search/functions_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['reset_0',['reset',['../classModel.html#a823536a9764d6a35cce173573ee62e90',1,'Model::reset()'],['../classSignal.html#a914fd7f09ae0723c88fce310fd7c79fd',1,'Signal::reset()']]], + ['rigidbodyparams1d_1',['RigidBodyParams1D',['../structRigidBodyParams1D.html#ab2b9c3eb89bcbf0ac06a33e95725e0eb',1,'RigidBodyParams1D']]], + ['rigidbodyparams2d_2',['RigidBodyParams2D',['../structRigidBodyParams2D.html#a6febaa8c9f355105b908979da3dd1255',1,'RigidBodyParams2D']]], + ['rigidbodyparams3d_3',['RigidBodyParams3D',['../structRigidBodyParams3D.html#a8aa76fea7a0790ead025bf79e767d0cf',1,'RigidBodyParams3D']]] +]; diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js new file mode 100644 index 0000000..13906b2 --- /dev/null +++ b/docs/search/functions_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['setderivativemethod_0',['setDerivativeMethod',['../classSignal.html#a8c25f302d3c4feaa1a4c1f6d59381d89',1,'Signal']]], + ['setextrapolationmethod_1',['setExtrapolationMethod',['../classSignal.html#ac3be206ae717ad5e977d8a108de9b9e4',1,'Signal']]], + ['setinterpolationmethod_2',['setInterpolationMethod',['../classSignal.html#af336f3d6a2d643040dff9fb5b4c20558',1,'Signal']]], + ['setparams_3',['setParams',['../classModel.html#a96533143a30ab87c379e411fcae59643',1,'Model']]], + ['signal_4',['Signal',['../classSignal.html#a8b5d0a9fba3546f500fed7e2102cd9a7',1,'Signal::Signal()'],['../classSignal.html#a81a95abda92d3efc0bd4b4ccba77e303',1,'Signal::Signal(const Signal &other)']]], + ['simulate_5',['simulate',['../classModel.html#ac7446138b27c8feba779ebfe8e82b99d',1,'Model::simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)'],['../classModel.html#ac2550ae8ed888d167450160ce55286df',1,'Model::simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)']]], + ['state_6',['State',['../structState.html#adcb914ebe25fe14622a945801267fa7a',1,'State::State()'],['../structState.html#a097d236bc46ca02a379e2fd188fe3e97',1,'State::State(T *arr)'],['../structState.html#aa10b450dbe8a806a0b203521b4738c0c',1,'State::State(const State &other)']]] +]; diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js new file mode 100644 index 0000000..710af7d --- /dev/null +++ b/docs/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['t_0',['t',['../classModel.html#a7661852411b9ffd59240d5d5ca0e4dd3',1,'Model::t()'],['../classSignal.html#a058783faf86f369b296c50d4e72c0881',1,'Signal::t()']]] +]; diff --git a/docs/search/functions_a.js b/docs/search/functions_a.js new file mode 100644 index 0000000..552ce7e --- /dev/null +++ b/docs/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['update_0',['update',['../structTranslationalDynamicsBase.html#a3f1e02018ec014fe38ba851dc0d5b2ed',1,'TranslationalDynamicsBase::update()'],['../structRotationalDynamics1DOF.html#a433f042fafdcff07948eb952e47f13b6',1,'RotationalDynamics1DOF::update()'],['../structRotationalDynamics3DOF.html#aee5958f7949268650c00097b2a871252',1,'RotationalDynamics3DOF::update()'],['../structRigidBodyDynamics3DOF.html#acafe68f9e9ea78f54bc70d64a1b39d9c',1,'RigidBodyDynamics3DOF::update()'],['../structRigidBodyDynamics6DOF.html#ae0d9bb27da7f804a1f8dc4923546a95d',1,'RigidBodyDynamics6DOF::update()'],['../classSignal.html#ab91f52b80939a6c67b6863ee463b4ff0',1,'Signal::update(const double &_t, const BaseType &_x, bool insertHistory=false)'],['../classSignal.html#a6c7174c9bb20970ebb3de64687f771d8',1,'Signal::update(const double &_t, const BaseType &_x, const TangentType &_xdot, bool insertHistory=false)'],['../classSignal.html#a5530308ef517fd0021f510d47c390dc0',1,'Signal::update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory)'],['../classSignal.html#a74929b7332876f5aeddc9a05d26d3d32',1,'Signal::update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory, const std::vector< TangentType > &_xdotHistory)']]] +]; diff --git a/docs/search/functions_b.js b/docs/search/functions_b.js new file mode 100644 index 0000000..98958cd --- /dev/null +++ b/docs/search/functions_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zerotype_0',['ZeroType',['../structScalarSignalSpec.html#a941ad7ca4c5943d3b2244e1126d1febf',1,'ScalarSignalSpec::ZeroType()'],['../structVectorSignalSpec.html#a4c535f5d5b25faa7148f8719d74693fd',1,'VectorSignalSpec::ZeroType()'],['../structManifoldSignalSpec.html#a445c0d7b5e23264b3a08b881f3c68a72',1,'ManifoldSignalSpec::ZeroType()'],['../structScalarStateSignalSpec.html#a0dc57853395e3c57d6447a23ae513b91',1,'ScalarStateSignalSpec::ZeroType()'],['../structVectorStateSignalSpec.html#ae659b96e95497b25e711fab331037c21',1,'VectorStateSignalSpec::ZeroType()'],['../structManifoldStateSignalSpec.html#adca9f48f26d97f95b2083b9e55bb58cb',1,'ManifoldStateSignalSpec::ZeroType()']]] +]; diff --git a/docs/search/mag.svg b/docs/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/docs/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/search/mag_d.svg b/docs/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/docs/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/search/mag_sel.svg b/docs/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/docs/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/search/mag_seld.svg b/docs/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/docs/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/search/namespaces_0.js b/docs/search/namespaces_0.js new file mode 100644 index 0000000..eef63d3 --- /dev/null +++ b/docs/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['signal_5futils_0',['signal_utils',['../namespacesignal__utils.html',1,'']]] +]; diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js new file mode 100644 index 0000000..cf942cf --- /dev/null +++ b/docs/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cpp_20library_20documentation_0',['signals-cpp Library Documentation',['../index.html',1,'']]] +]; diff --git a/docs/search/pages_1.js b/docs/search/pages_1.js new file mode 100644 index 0000000..7b10194 --- /dev/null +++ b/docs/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['documentation_0',['signals-cpp Library Documentation',['../index.html',1,'']]] +]; diff --git a/docs/search/pages_2.js b/docs/search/pages_2.js new file mode 100644 index 0000000..16b3edc --- /dev/null +++ b/docs/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20documentation_0',['signals-cpp Library Documentation',['../index.html',1,'']]] +]; diff --git a/docs/search/pages_3.js b/docs/search/pages_3.js new file mode 100644 index 0000000..6ff6d59 --- /dev/null +++ b/docs/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['signals_20cpp_20library_20documentation_0',['signals-cpp Library Documentation',['../index.html',1,'']]] +]; diff --git a/docs/search/related_0.js b/docs/search/related_0.js new file mode 100644 index 0000000..d4f70ce --- /dev/null +++ b/docs/search/related_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['operator_2a_0',['operator*',['../classSignal.html#ad61a2749da48601dcf27bedaa0cf54fd',1,'Signal::operator*'],['../classSignal.html#ae5d88905516fd17257964442b0830584',1,'Signal::operator*']]], + ['operator_2b_1',['operator+',['../classSignal.html#aead0dbc78a90fbd6ad3f86ab61ed65f7',1,'Signal']]], + ['operator_2d_2',['operator-',['../classSignal.html#a22d02130c5fec79a084ef4d1a28521dc',1,'Signal']]] +]; diff --git a/docs/search/search.css b/docs/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/docs/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/search/search.js b/docs/search/search.js new file mode 100644 index 0000000..666af01 --- /dev/null +++ b/docs/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/splitbard.png b/docs/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/docs/structEulerIntegratorSpec-members.html b/docs/structEulerIntegratorSpec-members.html new file mode 100644 index 0000000..0bf56aa --- /dev/null +++ b/docs/structEulerIntegratorSpec-members.html @@ -0,0 +1,94 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    EulerIntegratorSpec Member List
    +
    +
    + +

    This is the complete list of members for EulerIntegratorSpec, including all inherited members.

    + + +
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)EulerIntegratorSpecinlinestatic
    + + + + diff --git a/docs/structEulerIntegratorSpec.html b/docs/structEulerIntegratorSpec.html new file mode 100644 index 0000000..e840187 --- /dev/null +++ b/docs/structEulerIntegratorSpec.html @@ -0,0 +1,152 @@ + + + + + + + +signals-cpp: EulerIntegratorSpec Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    EulerIntegratorSpec Struct Reference
    +
    +
    + +

    #include <Integration.h>

    + + + + + +

    +Static Public Member Functions

    template<typename BaseSignalSpec , typename TangentSignalSpec >
    static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
     
    +

    Member Function Documentation

    + +

    ◆ integrate()

    + +
    +
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool EulerIntegratorSpec::integrate (Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
    const Signal< TangentSignalSpec, TangentSignalSpec > & x,
    const double & t0,
    const double & tf,
    const bool & insertIntoHistory )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structIntegrator-members.html b/docs/structIntegrator-members.html new file mode 100644 index 0000000..44cd81a --- /dev/null +++ b/docs/structIntegrator-members.html @@ -0,0 +1,95 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    Integrator< IntegratorType > Member List
    +
    +
    + +

    This is the complete list of members for Integrator< IntegratorType >, including all inherited members.

    + + + +
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)Integrator< IntegratorType >inlinestatic
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)Integrator< IntegratorType >inlinestatic
    + + + + diff --git a/docs/structIntegrator.html b/docs/structIntegrator.html new file mode 100644 index 0000000..8b3fd41 --- /dev/null +++ b/docs/structIntegrator.html @@ -0,0 +1,200 @@ + + + + + + + +signals-cpp: Integrator< IntegratorType > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    Integrator< IntegratorType > Struct Template Reference
    +
    +
    + +

    #include <Integration.h>

    + + + + + + + + +

    +Static Public Member Functions

    template<typename BaseSignalSpec , typename TangentSignalSpec >
    static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)
     
    template<typename BaseSignalSpec , typename TangentSignalSpec >
    static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)
     
    +

    Member Function Documentation

    + +

    ◆ integrate() [1/2]

    + +
    +
    +
    +template<typename IntegratorType >
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    static bool Integrator< IntegratorType >::integrate (Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
    const Signal< TangentSignalSpec, TangentSignalSpec > & x,
    const double & tf,
    const bool & insertIntoHistory = false )
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ integrate() [2/2]

    + +
    +
    +
    +template<typename IntegratorType >
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool Integrator< IntegratorType >::integrate (Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
    const Signal< TangentSignalSpec, TangentSignalSpec > & x,
    const double & tf,
    const double & dt,
    const bool & insertIntoHistory = false )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structManifoldSignalSpec-members.html b/docs/structManifoldSignalSpec-members.html new file mode 100644 index 0000000..2865f85 --- /dev/null +++ b/docs/structManifoldSignalSpec-members.html @@ -0,0 +1,96 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    ManifoldSignalSpec< ManifoldType > Member List
    +
    +
    + +

    This is the complete list of members for ManifoldSignalSpec< ManifoldType >, including all inherited members.

    + + + + +
    NansType()ManifoldSignalSpec< ManifoldType >inlinestatic
    Type typedefManifoldSignalSpec< ManifoldType >
    ZeroType()ManifoldSignalSpec< ManifoldType >inlinestatic
    + + + + diff --git a/docs/structManifoldSignalSpec.html b/docs/structManifoldSignalSpec.html new file mode 100644 index 0000000..bcfd71b --- /dev/null +++ b/docs/structManifoldSignalSpec.html @@ -0,0 +1,184 @@ + + + + + + + +signals-cpp: ManifoldSignalSpec< ManifoldType > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    ManifoldSignalSpec< ManifoldType > Struct Template Reference
    +
    +
    + +

    #include <Signal.h>

    + + + + +

    +Public Types

    using Type = ManifoldType
     
    + + + + + +

    +Static Public Member Functions

    static Type ZeroType ()
     
    static Type NansType ()
     
    +

    Member Typedef Documentation

    + +

    ◆ Type

    + +
    +
    +
    +template<typename ManifoldType >
    + + + + +
    using ManifoldSignalSpec< ManifoldType >::Type = ManifoldType
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ NansType()

    + +
    +
    +
    +template<typename ManifoldType >
    + + + + + +
    + + + + + + + +
    static Type ManifoldSignalSpec< ManifoldType >::NansType ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ ZeroType()

    + +
    +
    +
    +template<typename ManifoldType >
    + + + + + +
    + + + + + + + +
    static Type ManifoldSignalSpec< ManifoldType >::ZeroType ()
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structManifoldStateSignalSpec-members.html b/docs/structManifoldStateSignalSpec-members.html new file mode 100644 index 0000000..a1cbf4b --- /dev/null +++ b/docs/structManifoldStateSignalSpec-members.html @@ -0,0 +1,96 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    ManifoldStateSignalSpec< T, ManifoldType, PD, TD > Member List
    +
    + + + + + diff --git a/docs/structManifoldStateSignalSpec.html b/docs/structManifoldStateSignalSpec.html new file mode 100644 index 0000000..7c1babd --- /dev/null +++ b/docs/structManifoldStateSignalSpec.html @@ -0,0 +1,184 @@ + + + + + + + +signals-cpp: ManifoldStateSignalSpec< T, ManifoldType, PD, TD > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    ManifoldStateSignalSpec< T, ManifoldType, PD, TD > Struct Template Reference
    +
    +
    + +

    #include <State.h>

    + + + + +

    +Public Types

    using Type = ManifoldStateType<T, ManifoldType, PD, TD>
     
    + + + + + +

    +Static Public Member Functions

    static Type ZeroType ()
     
    static Type NansType ()
     
    +

    Member Typedef Documentation

    + +

    ◆ Type

    + +
    +
    +
    +template<typename T , typename ManifoldType , size_t PD, size_t TD>
    + + + + +
    using ManifoldStateSignalSpec< T, ManifoldType, PD, TD >::Type = ManifoldStateType<T, ManifoldType, PD, TD>
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ NansType()

    + +
    +
    +
    +template<typename T , typename ManifoldType , size_t PD, size_t TD>
    + + + + + +
    + + + + + + + +
    static Type ManifoldStateSignalSpec< T, ManifoldType, PD, TD >::NansType ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ ZeroType()

    + +
    +
    +
    +template<typename T , typename ManifoldType , size_t PD, size_t TD>
    + + + + + +
    + + + + + + + +
    static Type ManifoldStateSignalSpec< T, ManifoldType, PD, TD >::ZeroType ()
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structRigidBodyDynamics3DOF-members.html b/docs/structRigidBodyDynamics3DOF-members.html new file mode 100644 index 0000000..022c718 --- /dev/null +++ b/docs/structRigidBodyDynamics3DOF-members.html @@ -0,0 +1,102 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RigidBodyDynamics3DOF< T > Member List
    +
    +
    + +

    This is the complete list of members for RigidBodyDynamics3DOF< T >, including all inherited members.

    + + + + + + + + + + +
    InputSignalType typedefRigidBodyDynamics3DOF< T >
    InputType typedefRigidBodyDynamics3DOF< T >
    ParamsType typedefRigidBodyDynamics3DOF< T >
    StateDotDotType typedefRigidBodyDynamics3DOF< T >
    StateDotSignalType typedefRigidBodyDynamics3DOF< T >
    StateDotType typedefRigidBodyDynamics3DOF< T >
    StateSignalType typedefRigidBodyDynamics3DOF< T >
    StateType typedefRigidBodyDynamics3DOF< T >
    update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RigidBodyDynamics3DOF< T >inlinestatic
    + + + + diff --git a/docs/structRigidBodyDynamics3DOF.html b/docs/structRigidBodyDynamics3DOF.html new file mode 100644 index 0000000..5d55b5c --- /dev/null +++ b/docs/structRigidBodyDynamics3DOF.html @@ -0,0 +1,315 @@ + + + + + + + +signals-cpp: RigidBodyDynamics3DOF< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    RigidBodyDynamics3DOF< T > Struct Template Reference
    +
    +
    + +

    #include <Models.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Types

    using InputSignalType = Vector3Signal<T>
     
    using StateSignalType = SE2StateSignal<T>
     
    using StateDotSignalType = Vector3StateSignal<T>
     
    using InputType = typename InputSignalType::BaseType
     
    using StateType = typename StateSignalType::BaseType
     
    using StateDotType = typename StateDotSignalType::BaseType
     
    using StateDotDotType = typename StateDotSignalType::TangentType
     
    using ParamsType = RigidBodyParams2D
     
    + + + +

    +Static Public Member Functions

    static bool update (StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
     
    +

    Member Typedef Documentation

    + +

    ◆ InputSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::InputSignalType = Vector3Signal<T>
    +
    + +
    +
    + +

    ◆ InputType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::InputType = typename InputSignalType::BaseType
    +
    + +
    +
    + +

    ◆ ParamsType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::ParamsType = RigidBodyParams2D
    +
    + +
    +
    + +

    ◆ StateDotDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::StateDotDotType = typename StateDotSignalType::TangentType
    +
    + +
    +
    + +

    ◆ StateDotSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::StateDotSignalType = Vector3StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::StateDotType = typename StateDotSignalType::BaseType
    +
    + +
    +
    + +

    ◆ StateSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::StateSignalType = SE2StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics3DOF< T >::StateType = typename StateSignalType::BaseType
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ update()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool RigidBodyDynamics3DOF< T >::update (StateDotSignalType & xdot,
    const StateSignalType & x,
    const InputSignalType & u,
    const double & t0,
    const double & tf,
    const ParamsType & params,
    const bool & insertIntoHistory = false,
    const bool & calculateXddot = false )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structRigidBodyDynamics6DOF-members.html b/docs/structRigidBodyDynamics6DOF-members.html new file mode 100644 index 0000000..80a0558 --- /dev/null +++ b/docs/structRigidBodyDynamics6DOF-members.html @@ -0,0 +1,102 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RigidBodyDynamics6DOF< T > Member List
    +
    +
    + +

    This is the complete list of members for RigidBodyDynamics6DOF< T >, including all inherited members.

    + + + + + + + + + + +
    InputSignalType typedefRigidBodyDynamics6DOF< T >
    InputType typedefRigidBodyDynamics6DOF< T >
    ParamsType typedefRigidBodyDynamics6DOF< T >
    StateDotDotType typedefRigidBodyDynamics6DOF< T >
    StateDotSignalType typedefRigidBodyDynamics6DOF< T >
    StateDotType typedefRigidBodyDynamics6DOF< T >
    StateSignalType typedefRigidBodyDynamics6DOF< T >
    StateType typedefRigidBodyDynamics6DOF< T >
    update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RigidBodyDynamics6DOF< T >inlinestatic
    + + + + diff --git a/docs/structRigidBodyDynamics6DOF.html b/docs/structRigidBodyDynamics6DOF.html new file mode 100644 index 0000000..90b71a4 --- /dev/null +++ b/docs/structRigidBodyDynamics6DOF.html @@ -0,0 +1,315 @@ + + + + + + + +signals-cpp: RigidBodyDynamics6DOF< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    RigidBodyDynamics6DOF< T > Struct Template Reference
    +
    +
    + +

    #include <Models.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Types

    using InputSignalType = Vector6Signal<T>
     
    using StateSignalType = SE3StateSignal<T>
     
    using StateDotSignalType = Vector6StateSignal<T>
     
    using InputType = typename InputSignalType::BaseType
     
    using StateType = typename StateSignalType::BaseType
     
    using StateDotType = typename StateDotSignalType::BaseType
     
    using StateDotDotType = typename StateDotSignalType::TangentType
     
    using ParamsType = RigidBodyParams3D
     
    + + + +

    +Static Public Member Functions

    static bool update (StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
     
    +

    Member Typedef Documentation

    + +

    ◆ InputSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::InputSignalType = Vector6Signal<T>
    +
    + +
    +
    + +

    ◆ InputType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::InputType = typename InputSignalType::BaseType
    +
    + +
    +
    + +

    ◆ ParamsType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::ParamsType = RigidBodyParams3D
    +
    + +
    +
    + +

    ◆ StateDotDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::StateDotDotType = typename StateDotSignalType::TangentType
    +
    + +
    +
    + +

    ◆ StateDotSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::StateDotSignalType = Vector6StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::StateDotType = typename StateDotSignalType::BaseType
    +
    + +
    +
    + +

    ◆ StateSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::StateSignalType = SE3StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RigidBodyDynamics6DOF< T >::StateType = typename StateSignalType::BaseType
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ update()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool RigidBodyDynamics6DOF< T >::update (StateDotSignalType & xdot,
    const StateSignalType & x,
    const InputSignalType & u,
    const double & t0,
    const double & tf,
    const ParamsType & params,
    const bool & insertIntoHistory = false,
    const bool & calculateXddot = false )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structRigidBodyParams1D-members.html b/docs/structRigidBodyParams1D-members.html new file mode 100644 index 0000000..317aad1 --- /dev/null +++ b/docs/structRigidBodyParams1D-members.html @@ -0,0 +1,96 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RigidBodyParams1D Member List
    +
    +
    + +

    This is the complete list of members for RigidBodyParams1D, including all inherited members.

    + + + + +
    gRigidBodyParams1D
    mRigidBodyParams1D
    RigidBodyParams1D()RigidBodyParams1Dinline
    + + + + diff --git a/docs/structRigidBodyParams1D.html b/docs/structRigidBodyParams1D.html new file mode 100644 index 0000000..165c67b --- /dev/null +++ b/docs/structRigidBodyParams1D.html @@ -0,0 +1,167 @@ + + + + + + + +signals-cpp: RigidBodyParams1D Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    RigidBodyParams1D Struct Reference
    +
    +
    + +

    #include <Models.h>

    + + + + +

    +Public Member Functions

     RigidBodyParams1D ()
     
    + + + + + +

    +Public Attributes

    double m
     
    double g
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ RigidBodyParams1D()

    + +
    +
    + + + + + +
    + + + + + + + +
    RigidBodyParams1D::RigidBodyParams1D ()
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ g

    + +
    +
    + + + + +
    double RigidBodyParams1D::g
    +
    + +
    +
    + +

    ◆ m

    + +
    +
    + + + + +
    double RigidBodyParams1D::m
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structRigidBodyParams2D-members.html b/docs/structRigidBodyParams2D-members.html new file mode 100644 index 0000000..1b5dbd0 --- /dev/null +++ b/docs/structRigidBodyParams2D-members.html @@ -0,0 +1,97 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RigidBodyParams2D Member List
    +
    +
    + +

    This is the complete list of members for RigidBodyParams2D, including all inherited members.

    + + + + + +
    gRigidBodyParams2D
    JRigidBodyParams2D
    mRigidBodyParams2D
    RigidBodyParams2D()RigidBodyParams2Dinline
    + + + + diff --git a/docs/structRigidBodyParams2D.html b/docs/structRigidBodyParams2D.html new file mode 100644 index 0000000..fbcd72a --- /dev/null +++ b/docs/structRigidBodyParams2D.html @@ -0,0 +1,183 @@ + + + + + + + +signals-cpp: RigidBodyParams2D Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    RigidBodyParams2D Struct Reference
    +
    +
    + +

    #include <Models.h>

    + + + + +

    +Public Member Functions

     RigidBodyParams2D ()
     
    + + + + + + + +

    +Public Attributes

    double m
     
    double J
     
    Vector2d g
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ RigidBodyParams2D()

    + +
    +
    + + + + + +
    + + + + + + + +
    RigidBodyParams2D::RigidBodyParams2D ()
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ g

    + +
    +
    + + + + +
    Vector2d RigidBodyParams2D::g
    +
    + +
    +
    + +

    ◆ J

    + +
    +
    + + + + +
    double RigidBodyParams2D::J
    +
    + +
    +
    + +

    ◆ m

    + +
    +
    + + + + +
    double RigidBodyParams2D::m
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structRigidBodyParams3D-members.html b/docs/structRigidBodyParams3D-members.html new file mode 100644 index 0000000..0273f25 --- /dev/null +++ b/docs/structRigidBodyParams3D-members.html @@ -0,0 +1,97 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RigidBodyParams3D Member List
    +
    +
    + +

    This is the complete list of members for RigidBodyParams3D, including all inherited members.

    + + + + + +
    gRigidBodyParams3D
    JRigidBodyParams3D
    mRigidBodyParams3D
    RigidBodyParams3D()RigidBodyParams3Dinline
    + + + + diff --git a/docs/structRigidBodyParams3D.html b/docs/structRigidBodyParams3D.html new file mode 100644 index 0000000..c6881c5 --- /dev/null +++ b/docs/structRigidBodyParams3D.html @@ -0,0 +1,183 @@ + + + + + + + +signals-cpp: RigidBodyParams3D Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    RigidBodyParams3D Struct Reference
    +
    +
    + +

    #include <Models.h>

    + + + + +

    +Public Member Functions

     RigidBodyParams3D ()
     
    + + + + + + + +

    +Public Attributes

    double m
     
    Matrix3d J
     
    Vector3d g
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ RigidBodyParams3D()

    + +
    +
    + + + + + +
    + + + + + + + +
    RigidBodyParams3D::RigidBodyParams3D ()
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ g

    + +
    +
    + + + + +
    Vector3d RigidBodyParams3D::g
    +
    + +
    +
    + +

    ◆ J

    + +
    +
    + + + + +
    Matrix3d RigidBodyParams3D::J
    +
    + +
    +
    + +

    ◆ m

    + +
    +
    + + + + +
    double RigidBodyParams3D::m
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structRotationalDynamics1DOF-members.html b/docs/structRotationalDynamics1DOF-members.html new file mode 100644 index 0000000..96150d9 --- /dev/null +++ b/docs/structRotationalDynamics1DOF-members.html @@ -0,0 +1,102 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RotationalDynamics1DOF< T > Member List
    +
    +
    + +

    This is the complete list of members for RotationalDynamics1DOF< T >, including all inherited members.

    + + + + + + + + + + +
    InputSignalType typedefRotationalDynamics1DOF< T >
    InputType typedefRotationalDynamics1DOF< T >
    ParamsType typedefRotationalDynamics1DOF< T >
    StateDotDotType typedefRotationalDynamics1DOF< T >
    StateDotSignalType typedefRotationalDynamics1DOF< T >
    StateDotType typedefRotationalDynamics1DOF< T >
    StateSignalType typedefRotationalDynamics1DOF< T >
    StateType typedefRotationalDynamics1DOF< T >
    update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RotationalDynamics1DOF< T >inlinestatic
    + + + + diff --git a/docs/structRotationalDynamics1DOF.html b/docs/structRotationalDynamics1DOF.html new file mode 100644 index 0000000..a2ca026 --- /dev/null +++ b/docs/structRotationalDynamics1DOF.html @@ -0,0 +1,315 @@ + + + + + + + +signals-cpp: RotationalDynamics1DOF< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    RotationalDynamics1DOF< T > Struct Template Reference
    +
    +
    + +

    #include <Models.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Types

    using InputSignalType = Vector1Signal<T>
     
    using StateSignalType = SO2StateSignal<T>
     
    using StateDotSignalType = Vector1StateSignal<T>
     
    using InputType = typename InputSignalType::BaseType
     
    using StateType = typename StateSignalType::BaseType
     
    using StateDotType = typename StateDotSignalType::BaseType
     
    using StateDotDotType = typename StateDotSignalType::TangentType
     
    using ParamsType = RigidBodyParams2D
     
    + + + +

    +Static Public Member Functions

    static bool update (StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
     
    +

    Member Typedef Documentation

    + +

    ◆ InputSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::InputSignalType = Vector1Signal<T>
    +
    + +
    +
    + +

    ◆ InputType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::InputType = typename InputSignalType::BaseType
    +
    + +
    +
    + +

    ◆ ParamsType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::ParamsType = RigidBodyParams2D
    +
    + +
    +
    + +

    ◆ StateDotDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::StateDotDotType = typename StateDotSignalType::TangentType
    +
    + +
    +
    + +

    ◆ StateDotSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::StateDotSignalType = Vector1StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::StateDotType = typename StateDotSignalType::BaseType
    +
    + +
    +
    + +

    ◆ StateSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::StateSignalType = SO2StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics1DOF< T >::StateType = typename StateSignalType::BaseType
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ update()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool RotationalDynamics1DOF< T >::update (StateDotSignalType & xdot,
    const StateSignalType & x,
    const InputSignalType & u,
    const double & t0,
    const double & tf,
    const ParamsType & params,
    const bool & insertIntoHistory = false,
    const bool & calculateXddot = false )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structRotationalDynamics3DOF-members.html b/docs/structRotationalDynamics3DOF-members.html new file mode 100644 index 0000000..9e9511a --- /dev/null +++ b/docs/structRotationalDynamics3DOF-members.html @@ -0,0 +1,102 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    RotationalDynamics3DOF< T > Member List
    +
    +
    + +

    This is the complete list of members for RotationalDynamics3DOF< T >, including all inherited members.

    + + + + + + + + + + +
    InputSignalType typedefRotationalDynamics3DOF< T >
    InputType typedefRotationalDynamics3DOF< T >
    ParamsType typedefRotationalDynamics3DOF< T >
    StateDotDotType typedefRotationalDynamics3DOF< T >
    StateDotSignalType typedefRotationalDynamics3DOF< T >
    StateDotType typedefRotationalDynamics3DOF< T >
    StateSignalType typedefRotationalDynamics3DOF< T >
    StateType typedefRotationalDynamics3DOF< T >
    update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RotationalDynamics3DOF< T >inlinestatic
    + + + + diff --git a/docs/structRotationalDynamics3DOF.html b/docs/structRotationalDynamics3DOF.html new file mode 100644 index 0000000..076aa0e --- /dev/null +++ b/docs/structRotationalDynamics3DOF.html @@ -0,0 +1,315 @@ + + + + + + + +signals-cpp: RotationalDynamics3DOF< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    RotationalDynamics3DOF< T > Struct Template Reference
    +
    +
    + +

    #include <Models.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Types

    using InputSignalType = Vector3Signal<T>
     
    using StateSignalType = SO3StateSignal<T>
     
    using StateDotSignalType = Vector3StateSignal<T>
     
    using InputType = typename InputSignalType::BaseType
     
    using StateType = typename StateSignalType::BaseType
     
    using StateDotType = typename StateDotSignalType::BaseType
     
    using StateDotDotType = typename StateDotSignalType::TangentType
     
    using ParamsType = RigidBodyParams3D
     
    + + + +

    +Static Public Member Functions

    static bool update (StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
     
    +

    Member Typedef Documentation

    + +

    ◆ InputSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::InputSignalType = Vector3Signal<T>
    +
    + +
    +
    + +

    ◆ InputType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::InputType = typename InputSignalType::BaseType
    +
    + +
    +
    + +

    ◆ ParamsType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::ParamsType = RigidBodyParams3D
    +
    + +
    +
    + +

    ◆ StateDotDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::StateDotDotType = typename StateDotSignalType::TangentType
    +
    + +
    +
    + +

    ◆ StateDotSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::StateDotSignalType = Vector3StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateDotType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::StateDotType = typename StateDotSignalType::BaseType
    +
    + +
    +
    + +

    ◆ StateSignalType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::StateSignalType = SO3StateSignal<T>
    +
    + +
    +
    + +

    ◆ StateType

    + +
    +
    +
    +template<typename T >
    + + + + +
    using RotationalDynamics3DOF< T >::StateType = typename StateSignalType::BaseType
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ update()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool RotationalDynamics3DOF< T >::update (StateDotSignalType & xdot,
    const StateSignalType & x,
    const InputSignalType & u,
    const double & t0,
    const double & tf,
    const ParamsType & params,
    const bool & insertIntoHistory = false,
    const bool & calculateXddot = false )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structScalarSignalSpec-members.html b/docs/structScalarSignalSpec-members.html new file mode 100644 index 0000000..05ec76c --- /dev/null +++ b/docs/structScalarSignalSpec-members.html @@ -0,0 +1,96 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    ScalarSignalSpec< T > Member List
    +
    +
    + +

    This is the complete list of members for ScalarSignalSpec< T >, including all inherited members.

    + + + + +
    NansType()ScalarSignalSpec< T >inlinestatic
    Type typedefScalarSignalSpec< T >
    ZeroType()ScalarSignalSpec< T >inlinestatic
    + + + + diff --git a/docs/structScalarSignalSpec.html b/docs/structScalarSignalSpec.html new file mode 100644 index 0000000..4017eb1 --- /dev/null +++ b/docs/structScalarSignalSpec.html @@ -0,0 +1,184 @@ + + + + + + + +signals-cpp: ScalarSignalSpec< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    ScalarSignalSpec< T > Struct Template Reference
    +
    +
    + +

    #include <Signal.h>

    + + + + +

    +Public Types

    using Type = T
     
    + + + + + +

    +Static Public Member Functions

    static Type ZeroType ()
     
    static Type NansType ()
     
    +

    Member Typedef Documentation

    + +

    ◆ Type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using ScalarSignalSpec< T >::Type = T
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ NansType()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static Type ScalarSignalSpec< T >::NansType ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ ZeroType()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static Type ScalarSignalSpec< T >::ZeroType ()
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structScalarStateSignalSpec-members.html b/docs/structScalarStateSignalSpec-members.html new file mode 100644 index 0000000..cfdc7d4 --- /dev/null +++ b/docs/structScalarStateSignalSpec-members.html @@ -0,0 +1,96 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    ScalarStateSignalSpec< T > Member List
    +
    +
    + +

    This is the complete list of members for ScalarStateSignalSpec< T >, including all inherited members.

    + + + + +
    NansType()ScalarStateSignalSpec< T >inlinestatic
    Type typedefScalarStateSignalSpec< T >
    ZeroType()ScalarStateSignalSpec< T >inlinestatic
    + + + + diff --git a/docs/structScalarStateSignalSpec.html b/docs/structScalarStateSignalSpec.html new file mode 100644 index 0000000..c72dfc2 --- /dev/null +++ b/docs/structScalarStateSignalSpec.html @@ -0,0 +1,184 @@ + + + + + + + +signals-cpp: ScalarStateSignalSpec< T > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    ScalarStateSignalSpec< T > Struct Template Reference
    +
    +
    + +

    #include <State.h>

    + + + + +

    +Public Types

    using Type = ScalarStateType<T>
     
    + + + + + +

    +Static Public Member Functions

    static Type ZeroType ()
     
    static Type NansType ()
     
    +

    Member Typedef Documentation

    + +

    ◆ Type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using ScalarStateSignalSpec< T >::Type = ScalarStateType<T>
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ NansType()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static Type ScalarStateSignalSpec< T >::NansType ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ ZeroType()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static Type ScalarStateSignalSpec< T >::ZeroType ()
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structSignal_1_1SignalDP-members.html b/docs/structSignal_1_1SignalDP-members.html new file mode 100644 index 0000000..7e53c48 --- /dev/null +++ b/docs/structSignal_1_1SignalDP-members.html @@ -0,0 +1,100 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP Member List
    +
    + + + + + diff --git a/docs/structSignal_1_1SignalDP.html b/docs/structSignal_1_1SignalDP.html new file mode 100644 index 0000000..b3b0b3c --- /dev/null +++ b/docs/structSignal_1_1SignalDP.html @@ -0,0 +1,161 @@ + + + + + + + +signals-cpp: Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP Struct Reference
    +
    +
    + +

    #include <Signal.h>

    + + + + + + + + +

    +Public Attributes

    double t
     
    BaseType x
     
    TangentType xdot
     
    +

    Member Data Documentation

    + +

    ◆ t

    + +
    +
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + +
    double Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP::t
    +
    + +
    +
    + +

    ◆ x

    + +
    +
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + +
    BaseType Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP::x
    +
    + +
    +
    + +

    ◆ xdot

    + +
    +
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + +
    TangentType Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP::xdot
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structSimpsonIntegratorSpec-members.html b/docs/structSimpsonIntegratorSpec-members.html new file mode 100644 index 0000000..0e95b86 --- /dev/null +++ b/docs/structSimpsonIntegratorSpec-members.html @@ -0,0 +1,94 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    SimpsonIntegratorSpec Member List
    +
    +
    + +

    This is the complete list of members for SimpsonIntegratorSpec, including all inherited members.

    + + +
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)SimpsonIntegratorSpecinlinestatic
    + + + + diff --git a/docs/structSimpsonIntegratorSpec.html b/docs/structSimpsonIntegratorSpec.html new file mode 100644 index 0000000..f4da6ec --- /dev/null +++ b/docs/structSimpsonIntegratorSpec.html @@ -0,0 +1,152 @@ + + + + + + + +signals-cpp: SimpsonIntegratorSpec Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    SimpsonIntegratorSpec Struct Reference
    +
    +
    + +

    #include <Integration.h>

    + + + + + +

    +Static Public Member Functions

    template<typename BaseSignalSpec , typename TangentSignalSpec >
    static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
     
    +

    Member Function Documentation

    + +

    ◆ integrate()

    + +
    +
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool SimpsonIntegratorSpec::integrate (Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
    const Signal< TangentSignalSpec, TangentSignalSpec > & x,
    const double & t0,
    const double & tf,
    const bool & insertIntoHistory )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structState-members.html b/docs/structState-members.html new file mode 100644 index 0000000..f2f53a8 --- /dev/null +++ b/docs/structState-members.html @@ -0,0 +1,104 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > Member List
    +
    + + + + + diff --git a/docs/structState.html b/docs/structState.html new file mode 100644 index 0000000..e695699 --- /dev/null +++ b/docs/structState.html @@ -0,0 +1,396 @@ + + + + + + + +signals-cpp: State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > Struct Template Reference
    +
    +
    + +

    #include <State.h>

    + + + + + + +

    +Public Types

    using PoseType = typename PoseTypeSpec::Type
     
    using TwistType = typename TwistTypeSpec::Type
     
    + + + + + + + + + + + + +

    +Public Member Functions

     State ()
     
     State (T *arr)
     
     State (const State &other)
     
    Stateoperator*= (const double &s)
     
    template<typename T2 >
    Stateoperator+= (const State< T2, TwistTypeSpec, TwistDim, TwistTypeSpec, TwistDim > &r)
     
    + + + + + +

    +Static Public Member Functions

    static State identity ()
     
    static State nans ()
     
    + + + + + +

    +Public Attributes

    PoseType pose
     
    TwistType twist
     
    +

    Member Typedef Documentation

    + +

    ◆ PoseType

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + +
    using State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::PoseType = typename PoseTypeSpec::Type
    +
    + +
    +
    + +

    ◆ TwistType

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + +
    using State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::TwistType = typename TwistTypeSpec::Type
    +
    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ State() [1/3]

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + + +
    + + + + + + + +
    State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::State ()
    +
    +inline
    +
    + +
    +
    + +

    ◆ State() [2/3]

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + + +
    + + + + + + + +
    State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::State (T * arr)
    +
    +inline
    +
    + +
    +
    + +

    ◆ State() [3/3]

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + + +
    + + + + + + + +
    State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::State (const State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > & other)
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ identity()

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + + +
    + + + + + + + +
    static State State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::identity ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ nans()

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + + +
    + + + + + + + +
    static State State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::nans ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ operator*=()

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + + +
    + + + + + + + +
    State & State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::operator*= (const double & s)
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator+=()

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    +
    +template<typename T2 >
    + + + + + +
    + + + + + + + +
    State & State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::operator+= (const State< T2, TwistTypeSpec, TwistDim, TwistTypeSpec, TwistDim > & r)
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ pose

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + +
    PoseType State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::pose
    +
    + +
    +
    + +

    ◆ twist

    + +
    +
    +
    +template<typename T , typename PoseTypeSpec , size_t PoseDim, typename TwistTypeSpec , size_t TwistDim>
    + + + + +
    TwistType State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >::twist
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structTranslationalDynamicsBase-members.html b/docs/structTranslationalDynamicsBase-members.html new file mode 100644 index 0000000..817da6a --- /dev/null +++ b/docs/structTranslationalDynamicsBase-members.html @@ -0,0 +1,102 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    TranslationalDynamicsBase< IST, SST, SDST, d, PT > Member List
    +
    + + + + + diff --git a/docs/structTranslationalDynamicsBase.html b/docs/structTranslationalDynamicsBase.html new file mode 100644 index 0000000..90cde70 --- /dev/null +++ b/docs/structTranslationalDynamicsBase.html @@ -0,0 +1,315 @@ + + + + + + + +signals-cpp: TranslationalDynamicsBase< IST, SST, SDST, d, PT > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    TranslationalDynamicsBase< IST, SST, SDST, d, PT > Struct Template Reference
    +
    +
    + +

    #include <Models.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Types

    using InputSignalType = IST
     
    using StateDotSignalType = SST
     
    using StateSignalType = SDST
     
    using InputType = typename InputSignalType::BaseType
     
    using StateType = typename StateSignalType::BaseType
     
    using StateDotType = typename StateDotSignalType::BaseType
     
    using StateDotDotType = typename StateDotSignalType::TangentType
     
    using ParamsType = PT
     
    + + + +

    +Static Public Member Functions

    static bool update (StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
     
    +

    Member Typedef Documentation

    + +

    ◆ InputSignalType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::InputSignalType = IST
    +
    + +
    +
    + +

    ◆ InputType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::InputType = typename InputSignalType::BaseType
    +
    + +
    +
    + +

    ◆ ParamsType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::ParamsType = PT
    +
    + +
    +
    + +

    ◆ StateDotDotType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateDotDotType = typename StateDotSignalType::TangentType
    +
    + +
    +
    + +

    ◆ StateDotSignalType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateDotSignalType = SST
    +
    + +
    +
    + +

    ◆ StateDotType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateDotType = typename StateDotSignalType::BaseType
    +
    + +
    +
    + +

    ◆ StateSignalType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateSignalType = SDST
    +
    + +
    +
    + +

    ◆ StateType

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + +
    using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateType = typename StateSignalType::BaseType
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ update()

    + +
    +
    +
    +template<typename IST , typename SST , typename SDST , size_t d, typename PT >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool TranslationalDynamicsBase< IST, SST, SDST, d, PT >::update (StateDotSignalType & xdot,
    const StateSignalType & x,
    const InputSignalType & u,
    const double & t0,
    const double & tf,
    const ParamsType & params,
    const bool & insertIntoHistory = false,
    const bool & calculateXddot = false )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structTrapezoidalIntegratorSpec-members.html b/docs/structTrapezoidalIntegratorSpec-members.html new file mode 100644 index 0000000..91b9afb --- /dev/null +++ b/docs/structTrapezoidalIntegratorSpec-members.html @@ -0,0 +1,94 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    TrapezoidalIntegratorSpec Member List
    +
    +
    + +

    This is the complete list of members for TrapezoidalIntegratorSpec, including all inherited members.

    + + +
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)TrapezoidalIntegratorSpecinlinestatic
    + + + + diff --git a/docs/structTrapezoidalIntegratorSpec.html b/docs/structTrapezoidalIntegratorSpec.html new file mode 100644 index 0000000..f1e5434 --- /dev/null +++ b/docs/structTrapezoidalIntegratorSpec.html @@ -0,0 +1,152 @@ + + + + + + + +signals-cpp: TrapezoidalIntegratorSpec Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    TrapezoidalIntegratorSpec Struct Reference
    +
    +
    + +

    #include <Integration.h>

    + + + + + +

    +Static Public Member Functions

    template<typename BaseSignalSpec , typename TangentSignalSpec >
    static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
     
    +

    Member Function Documentation

    + +

    ◆ integrate()

    + +
    +
    +
    +template<typename BaseSignalSpec , typename TangentSignalSpec >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static bool TrapezoidalIntegratorSpec::integrate (Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
    const Signal< TangentSignalSpec, TangentSignalSpec > & x,
    const double & t0,
    const double & tf,
    const bool & insertIntoHistory )
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structVectorSignalSpec-members.html b/docs/structVectorSignalSpec-members.html new file mode 100644 index 0000000..c744670 --- /dev/null +++ b/docs/structVectorSignalSpec-members.html @@ -0,0 +1,96 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    VectorSignalSpec< T, d > Member List
    +
    +
    + +

    This is the complete list of members for VectorSignalSpec< T, d >, including all inherited members.

    + + + + +
    NansType()VectorSignalSpec< T, d >inlinestatic
    Type typedefVectorSignalSpec< T, d >
    ZeroType()VectorSignalSpec< T, d >inlinestatic
    + + + + diff --git a/docs/structVectorSignalSpec.html b/docs/structVectorSignalSpec.html new file mode 100644 index 0000000..c5c4dfa --- /dev/null +++ b/docs/structVectorSignalSpec.html @@ -0,0 +1,184 @@ + + + + + + + +signals-cpp: VectorSignalSpec< T, d > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    VectorSignalSpec< T, d > Struct Template Reference
    +
    +
    + +

    #include <Signal.h>

    + + + + +

    +Public Types

    using Type = Matrix<T, d, 1>
     
    + + + + + +

    +Static Public Member Functions

    static Type ZeroType ()
     
    static Type NansType ()
     
    +

    Member Typedef Documentation

    + +

    ◆ Type

    + +
    +
    +
    +template<typename T , size_t d>
    + + + + +
    using VectorSignalSpec< T, d >::Type = Matrix<T, d, 1>
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ NansType()

    + +
    +
    +
    +template<typename T , size_t d>
    + + + + + +
    + + + + + + + +
    static Type VectorSignalSpec< T, d >::NansType ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ ZeroType()

    + +
    +
    +
    +template<typename T , size_t d>
    + + + + + +
    + + + + + + + +
    static Type VectorSignalSpec< T, d >::ZeroType ()
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/structVectorStateSignalSpec-members.html b/docs/structVectorStateSignalSpec-members.html new file mode 100644 index 0000000..ba071bc --- /dev/null +++ b/docs/structVectorStateSignalSpec-members.html @@ -0,0 +1,96 @@ + + + + + + + +signals-cpp: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    +
    VectorStateSignalSpec< T, d > Member List
    +
    +
    + +

    This is the complete list of members for VectorStateSignalSpec< T, d >, including all inherited members.

    + + + + +
    NansType()VectorStateSignalSpec< T, d >inlinestatic
    Type typedefVectorStateSignalSpec< T, d >
    ZeroType()VectorStateSignalSpec< T, d >inlinestatic
    + + + + diff --git a/docs/structVectorStateSignalSpec.html b/docs/structVectorStateSignalSpec.html new file mode 100644 index 0000000..82d17f5 --- /dev/null +++ b/docs/structVectorStateSignalSpec.html @@ -0,0 +1,184 @@ + + + + + + + +signals-cpp: VectorStateSignalSpec< T, d > Struct Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    signals-cpp +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    VectorStateSignalSpec< T, d > Struct Template Reference
    +
    +
    + +

    #include <State.h>

    + + + + +

    +Public Types

    using Type = VectorStateType<T, d>
     
    + + + + + +

    +Static Public Member Functions

    static Type ZeroType ()
     
    static Type NansType ()
     
    +

    Member Typedef Documentation

    + +

    ◆ Type

    + +
    +
    +
    +template<typename T , size_t d>
    + + + + +
    using VectorStateSignalSpec< T, d >::Type = VectorStateType<T, d>
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ NansType()

    + +
    +
    +
    +template<typename T , size_t d>
    + + + + + +
    + + + + + + + +
    static Type VectorStateSignalSpec< T, d >::NansType ()
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ ZeroType()

    + +
    +
    +
    +template<typename T , size_t d>
    + + + + + +
    + + + + + + + +
    static Type VectorStateSignalSpec< T, d >::ZeroType ()
    +
    +inlinestatic
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/docs/sync_off.png b/docs/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/sync_on.png b/docs/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/tab_a.png b/docs/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/tab_ad.png b/docs/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/docs/tab_s.png b/docs/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/tab_sd.png b/docs/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/docs/tabs.css b/docs/tabs.css new file mode 100644 index 0000000..fe4854a --- /dev/null +++ b/docs/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/include/signals/Signals.h b/include/signals/Signals.h index 2f2f459..77bf867 100644 --- a/include/signals/Signals.h +++ b/include/signals/Signals.h @@ -4,3 +4,27 @@ #include "signals/Integration.h" #include "signals/State.h" #include "signals/Models.h" + +/** + * @mainpage signals-cpp Library Documentation + * + * @section intro_sec Introduction + * Header-only templated C++ library implementing rigid-body dynamics, derivatives, integrals, and interpolation. + * + * @section install Installation + * This code is meant to be built as a static library with CMake. It should be compatible with the latest versions of + * Eigen and Boost (unit test framework only). + * The library [manif-geom-cpp](https://github.com/goromal/manif-geom-cpp) must also be installed. + * + * Install with + * + * ```bash + * mkdir build + * cd build + * cmake .. + * make # or make install + * ``` + * + * By default, building will also build and run the unit tests, but this can be turned off with the CMake option + * `BUILD_TESTS`. + */ diff --git a/scripts/check_dockstrings.sh b/scripts/check_dockstrings.sh new file mode 100644 index 0000000..afa6116 --- /dev/null +++ b/scripts/check_dockstrings.sh @@ -0,0 +1,9 @@ +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do +DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +SOURCE="$(readlink "$SOURCE")" +[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" +done +DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +cd "$DIR/.." +grep -Prn '(? Date: Tue, 31 Dec 2024 14:57:46 -0800 Subject: [PATCH 03/11] some more docs wip --- docs/Integration_8h.html | 4 + docs/Integration_8h_source.html | 246 +++--- docs/Models_8h.html | 19 +- docs/Models_8h_source.html | 894 +++++++++++----------- docs/State_8h.html | 3 +- docs/State_8h_source.html | 636 +++++++-------- docs/Utils_8h_source.html | 28 +- docs/annotated.html | 28 +- docs/classModel.html | 65 +- docs/index.html | 7 + docs/structEulerIntegratorSpec.html | 23 +- docs/structIntegrator.html | 42 +- docs/structRigidBodyDynamics3DOF.html | 24 +- docs/structRigidBodyDynamics6DOF.html | 24 +- docs/structRigidBodyParams1D.html | 15 +- docs/structRigidBodyParams2D.html | 19 +- docs/structRigidBodyParams3D.html | 19 +- docs/structRotationalDynamics1DOF.html | 24 +- docs/structRotationalDynamics3DOF.html | 24 +- docs/structSimpsonIntegratorSpec.html | 23 +- docs/structState.html | 28 +- docs/structTranslationalDynamicsBase.html | 24 +- docs/structTrapezoidalIntegratorSpec.html | 23 +- include/signals/Integration.h | 78 ++ include/signals/Models.h | 180 ++++- include/signals/Signal.h | 3 + include/signals/Signals.h | 7 + include/signals/State.h | 29 + include/signals/Utils.h | 4 + 29 files changed, 1603 insertions(+), 940 deletions(-) diff --git a/docs/Integration_8h.html b/docs/Integration_8h.html index 4648ad5..82a13f6 100644 --- a/docs/Integration_8h.html +++ b/docs/Integration_8h.html @@ -96,12 +96,16 @@

    Classes

    struct  Integrator< IntegratorType > + Base type for all integrators. More...
      struct  EulerIntegratorSpec + Specification for numerically integrating a black box function using Euler's method. More...
      struct  TrapezoidalIntegratorSpec + Specification for numerically integrating a black box function using the Trapezoidal method. More...
      struct  SimpsonIntegratorSpec + Specification for numerically integrating a black box function using Simpson's method. More...
      + + + + + + + + +

    diff --git a/docs/Integration_8h_source.html b/docs/Integration_8h_source.html index 8fab850..72ddd38 100644 --- a/docs/Integration_8h_source.html +++ b/docs/Integration_8h_source.html @@ -93,134 +93,134 @@ Go to the documentation of this file.
    1#pragma once
    2#include "signals/Signal.h"
    3
    -
    4template<typename IntegratorType>
    -
    - -
    6{
    -
    7 template<typename BaseSignalSpec, typename TangentSignalSpec>
    -
    - - -
    10 const double& tf,
    -
    11 const bool& insertIntoHistory = false)
    -
    12 {
    -
    13 double t0 = xInt.t();
    -
    14 double dt;
    -
    15 if (!signal_utils::getTimeDelta(dt, t0, tf))
    -
    16 {
    -
    17 return false;
    -
    18 }
    -
    19 return IntegratorType::integrate(xInt, x, t0, tf, insertIntoHistory);
    -
    20 }
    -
    -
    21
    -
    22 template<typename BaseSignalSpec, typename TangentSignalSpec>
    -
    - - -
    25 const double& tf,
    -
    26 const double& dt,
    -
    27 const bool& insertIntoHistory = false)
    -
    28 {
    -
    29 double t_k = xInt.t();
    -
    30 bool success = true;
    -
    31 while (t_k < tf && success)
    -
    32 {
    -
    33 double dt_k;
    -
    34 if (signal_utils::getTimeDelta(dt_k, t_k, tf, dt))
    -
    35 {
    -
    36 double t_kp1 = t_k + dt_k;
    -
    37 success &= IntegratorType::integrate(xInt, x, t_k, t_kp1, insertIntoHistory);
    -
    38 t_k = t_kp1;
    -
    39 }
    -
    40 else
    -
    41 {
    -
    42 success = false;
    -
    43 }
    -
    44 }
    -
    45 return success;
    -
    46 }
    -
    -
    47};
    -
    -
    48
    -
    - -
    50{
    -
    51 template<typename BaseSignalSpec, typename TangentSignalSpec>
    -
    - - -
    54 const double& t0,
    +
    16template<typename IntegratorType>
    +
    + +
    18{
    +
    27 template<typename BaseSignalSpec, typename TangentSignalSpec>
    +
    + + +
    30 const double& tf,
    +
    31 const bool& insertIntoHistory = false)
    +
    32 {
    +
    33 double t0 = xInt.t();
    +
    34 double dt;
    +
    35 if (!signal_utils::getTimeDelta(dt, t0, tf))
    +
    36 {
    +
    37 return false;
    +
    38 }
    +
    39 return IntegratorType::integrate(xInt, x, t0, tf, insertIntoHistory);
    +
    40 }
    +
    +
    41
    +
    52 template<typename BaseSignalSpec, typename TangentSignalSpec>
    +
    + +
    55 const double& tf,
    -
    56 const bool& insertIntoHistory)
    -
    57 {
    -
    58 double dt = tf - t0;
    -
    59 return xInt.update(tf, xInt() + x(tf) * dt, x(tf), insertIntoHistory);
    -
    60 }
    -
    -
    61};
    -
    -
    62
    -
    - -
    64{
    -
    65 template<typename BaseSignalSpec, typename TangentSignalSpec>
    -
    - - -
    68 const double& t0,
    -
    69 const double& tf,
    -
    70 const bool& insertIntoHistory)
    -
    71 {
    -
    72 double dt = tf - t0;
    -
    73 return xInt.update(tf, xInt() + (x(t0) + x(tf)) * dt / 2.0, x(tf), insertIntoHistory);
    -
    74 }
    -
    -
    75};
    -
    -
    76
    -
    - -
    78{
    -
    79 template<typename BaseSignalSpec, typename TangentSignalSpec>
    -
    - - -
    82 const double& t0,
    -
    83 const double& tf,
    -
    84 const bool& insertIntoHistory)
    -
    85 {
    -
    86 double dt = tf - t0;
    -
    87 return xInt.update(tf,
    -
    88 xInt() + (x(t0) + 4.0 * x((t0 + tf) / 2.0) + x(tf)) * dt / 6.0,
    -
    89 x(tf),
    -
    90 insertIntoHistory);
    -
    91 }
    -
    -
    92};
    -
    -
    93
    -
    94#define MAKE_INTEGRATOR(IntegratorName) typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator;
    -
    95
    - -
    97MAKE_INTEGRATOR(Trapezoidal)
    - -
    #define MAKE_INTEGRATOR(IntegratorName)
    Definition Integration.h:94
    +
    56 const double& dt,
    +
    57 const bool& insertIntoHistory = false)
    +
    58 {
    +
    59 double t_k = xInt.t();
    +
    60 bool success = true;
    +
    61 while (t_k < tf && success)
    +
    62 {
    +
    63 double dt_k;
    +
    64 if (signal_utils::getTimeDelta(dt_k, t_k, tf, dt))
    +
    65 {
    +
    66 double t_kp1 = t_k + dt_k;
    +
    67 success &= IntegratorType::integrate(xInt, x, t_k, t_kp1, insertIntoHistory);
    +
    68 t_k = t_kp1;
    +
    69 }
    +
    70 else
    +
    71 {
    +
    72 success = false;
    +
    73 }
    +
    74 }
    +
    75 return success;
    +
    76 }
    +
    +
    77};
    +
    +
    78
    +
    + +
    83{
    +
    97 template<typename BaseSignalSpec, typename TangentSignalSpec>
    +
    + + +
    100 const double& t0,
    +
    101 const double& tf,
    +
    102 const bool& insertIntoHistory)
    +
    103 {
    +
    104 double dt = tf - t0;
    +
    105 return xInt.update(tf, xInt() + x(tf) * dt, x(tf), insertIntoHistory);
    +
    106 }
    +
    +
    107};
    +
    +
    108
    +
    + +
    113{
    +
    127 template<typename BaseSignalSpec, typename TangentSignalSpec>
    +
    + + +
    130 const double& t0,
    +
    131 const double& tf,
    +
    132 const bool& insertIntoHistory)
    +
    133 {
    +
    134 double dt = tf - t0;
    +
    135 return xInt.update(tf, xInt() + (x(t0) + x(tf)) * dt / 2.0, x(tf), insertIntoHistory);
    +
    136 }
    +
    +
    137};
    +
    +
    138
    +
    + +
    143{
    +
    157 template<typename BaseSignalSpec, typename TangentSignalSpec>
    +
    + + +
    160 const double& t0,
    +
    161 const double& tf,
    +
    162 const bool& insertIntoHistory)
    +
    163 {
    +
    164 double dt = tf - t0;
    +
    165 return xInt.update(tf,
    +
    166 xInt() + (x(t0) + 4.0 * x((t0 + tf) / 2.0) + x(tf)) * dt / 6.0,
    +
    167 x(tf),
    +
    168 insertIntoHistory);
    +
    169 }
    +
    +
    170};
    +
    +
    171
    +
    172#define MAKE_INTEGRATOR(IntegratorName) typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator;
    +
    173
    + +
    175MAKE_INTEGRATOR(Trapezoidal)
    + +
    #define MAKE_INTEGRATOR(IntegratorName)
    Definition Integration.h:172
    Definition Signal.h:35
    double t() const
    Definition Signal.h:102
    bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
    Definition Signal.h:171
    -
    bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
    Definition Utils.h:7
    -
    Definition Integration.h:50
    -
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Definition Integration.h:52
    -
    Definition Integration.h:6
    -
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)
    Definition Integration.h:23
    -
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)
    Definition Integration.h:8
    -
    Definition Integration.h:78
    -
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Definition Integration.h:80
    -
    Definition Integration.h:64
    -
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Definition Integration.h:66
    +
    bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
    Definition Utils.h:11
    +
    Specification for numerically integrating a black box function using Euler's method.
    Definition Integration.h:83
    +
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Euler integration implementation.
    Definition Integration.h:98
    +
    Base type for all integrators.
    Definition Integration.h:18
    +
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)
    Integrate a signal from the current time to the specified end time, chunked up into smaller integrati...
    Definition Integration.h:53
    +
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)
    Integrate a signal from the current time to the specified end time.
    Definition Integration.h:28
    +
    Specification for numerically integrating a black box function using Simpson's method.
    Definition Integration.h:143
    +
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Simpson integration implementation.
    Definition Integration.h:158
    +
    Specification for numerically integrating a black box function using the Trapezoidal method.
    Definition Integration.h:113
    +
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Trapezoidal integration implementation.
    Definition Integration.h:128

    Classes

    class  Model< DynamicsType >
     Base type for all model simulators. More...
     
    struct  RigidBodyParams1D
     Parameters for a 1D rigid body model. More...
     
    struct  RigidBodyParams2D
     Parameters for a 2D rigid body model. More...
     
    struct  RigidBodyParams3D
     Parameters for a 3D rigid body model. More...
     
    struct  TranslationalDynamicsBase< IST, SST, SDST, d, PT >
     Base class for defining the dynamics for 1D, 2D, and 3D point masses. More...
     
    struct  RotationalDynamics1DOF< T >
     Definition of the dynamics for planar rotation-only motion of a mass. More...
     
    struct  RotationalDynamics3DOF< T >
     Definition of the dynamics for 3D rotation-only motion of a mass. More...
     
    struct  RigidBodyDynamics3DOF< T >
     Definition of the dynamics for planar motion of a mass that's allowed to rotate. More...
     
    struct  RigidBodyDynamics6DOF< T >
     Definition of the dynamics for a 3D rigid body that can rotate about any axis. More...
     
    + @@ -350,7 +351,7 @@

    typedef Manif##State<double> Manif##dState; \
    typedef Manif##StateSignal<double> Manif##dStateSignal;
    Definition Signal.h:35
    -
    Definition State.h:8
    +
    Base type for all Model state representations.
    Definition State.h:34
    diff --git a/docs/State_8h_source.html b/docs/State_8h_source.html index a9c8224..5893d8a 100644 --- a/docs/State_8h_source.html +++ b/docs/State_8h_source.html @@ -95,341 +95,341 @@
    3
    4using namespace Eigen;
    5
    -
    6template<typename T, typename PoseTypeSpec, size_t PoseDim, typename TwistTypeSpec, size_t TwistDim>
    -
    -
    7struct State
    -
    8{
    -
    9 using PoseType = typename PoseTypeSpec::Type;
    -
    10 using TwistType = typename TwistTypeSpec::Type;
    -
    11
    - - -
    14
    -
    15 State() {}
    -
    16
    -
    17 State(T* arr) : pose(arr), twist(arr + PoseDim) {}
    -
    18
    -
    -
    19 State(const State& other)
    -
    20 {
    -
    21 this->pose = other.pose;
    -
    22 this->twist = other.twist;
    -
    23 }
    -
    -
    24
    -
    -
    25 static State identity()
    -
    26 {
    -
    27 State x;
    -
    28 x.pose = PoseTypeSpec::ZeroType();
    -
    29 x.twist = TwistTypeSpec::ZeroType();
    -
    30 return x;
    -
    31 }
    -
    -
    32
    -
    -
    33 static State nans()
    -
    34 {
    -
    35 State x;
    -
    36 x.pose = PoseTypeSpec::NansType();
    -
    37 x.twist = TwistTypeSpec::NansType();
    -
    38 return x;
    -
    39 }
    -
    +
    32template<typename T, typename PoseTypeSpec, size_t PoseDim, typename TwistTypeSpec, size_t TwistDim>
    +
    +
    33struct State
    +
    34{
    +
    35 using PoseType = typename PoseTypeSpec::Type;
    +
    36 using TwistType = typename TwistTypeSpec::Type;
    +
    37
    + +
    40
    -
    -
    41 State& operator*=(const double& s)
    -
    42 {
    -
    43 pose *= s;
    -
    44 twist *= s;
    -
    45 return *this;
    -
    46 }
    -
    -
    47
    -
    48 template<typename T2>
    -
    - -
    50 {
    -
    51 pose += r.pose;
    -
    52 twist += r.twist;
    -
    53 return *this;
    -
    54 }
    -
    -
    55};
    -
    -
    56
    -
    57template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    -
    - -
    59{
    - -
    61 lpr.pose += r.pose;
    -
    62 lpr.twist += r.twist;
    -
    63 return lpr;
    -
    64}
    -
    -
    65
    -
    66template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    +
    41 State() {}
    +
    42
    +
    43 State(T* arr) : pose(arr), twist(arr + PoseDim) {}
    +
    44
    +
    +
    45 State(const State& other)
    +
    46 {
    +
    47 this->pose = other.pose;
    +
    48 this->twist = other.twist;
    +
    49 }
    +
    +
    50
    +
    +
    51 static State identity()
    +
    52 {
    +
    53 State x;
    +
    54 x.pose = PoseTypeSpec::ZeroType();
    +
    55 x.twist = TwistTypeSpec::ZeroType();
    +
    56 return x;
    +
    57 }
    +
    +
    58
    +
    +
    59 static State nans()
    +
    60 {
    +
    61 State x;
    +
    62 x.pose = PoseTypeSpec::NansType();
    +
    63 x.twist = TwistTypeSpec::NansType();
    +
    64 return x;
    +
    65 }
    +
    +
    66
    - -
    68{
    - -
    70 lmr.pose = l.pose - r.pose;
    -
    71 lmr.twist = l.twist - r.twist;
    -
    72 return lmr;
    -
    73}
    -
    -
    74
    -
    75template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    -
    - -
    77{
    - -
    79 lr.pose *= l;
    -
    80 lr.twist *= l;
    -
    81 return lr;
    -
    82}
    -
    -
    83
    -
    84template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    -
    - -
    86{
    - -
    88 lr.pose *= r;
    -
    89 lr.twist *= r;
    -
    90 return lr;
    -
    91}
    -
    -
    92
    -
    93template<typename T>
    - -
    95
    -
    96template<typename T>
    -
    -
    97inline std::ostream& operator<<(std::ostream& os, const ScalarStateType<T>& x)
    -
    98{
    -
    99 os << "ScalarStateType: pose=" << x.pose << "; twist=" << x.twist;
    -
    100 return os;
    -
    101}
    -
    -
    102
    -
    103template<typename T>
    -
    - -
    105{
    -
    106 ScalarStateType<T> lr = l;
    -
    107 lr.pose /= r;
    -
    108 lr.twist /= r;
    -
    109 return lr;
    -
    110}
    -
    -
    111
    -
    112template<typename T, size_t d>
    - -
    114
    -
    115template<typename T, size_t d>
    -
    -
    116inline std::ostream& operator<<(std::ostream& os, const VectorStateType<T, d>& x)
    -
    117{
    -
    118 os << "VectorStateType: pose=" << x.pose.transpose() << "; twist=" << x.twist.transpose();
    -
    119 return os;
    -
    120}
    -
    +
    67 State& operator*=(const double& s)
    +
    68 {
    +
    69 pose *= s;
    +
    70 twist *= s;
    +
    71 return *this;
    +
    72 }
    +
    +
    73
    +
    74 template<typename T2>
    +
    + +
    76 {
    +
    77 pose += r.pose;
    +
    78 twist += r.twist;
    +
    79 return *this;
    +
    80 }
    +
    +
    81};
    + +
    82
    +
    83template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    +
    + +
    85{
    + +
    87 lpr.pose += r.pose;
    +
    88 lpr.twist += r.twist;
    +
    89 return lpr;
    +
    90}
    +
    +
    91
    +
    92template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    +
    + +
    94{
    + +
    96 lmr.pose = l.pose - r.pose;
    +
    97 lmr.twist = l.twist - r.twist;
    +
    98 return lmr;
    +
    99}
    +
    +
    100
    +
    101template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    +
    + +
    103{
    + +
    105 lr.pose *= l;
    +
    106 lr.twist *= l;
    +
    107 return lr;
    +
    108}
    +
    +
    109
    +
    110template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    +
    + +
    112{
    + +
    114 lr.pose *= r;
    +
    115 lr.twist *= r;
    +
    116 return lr;
    +
    117}
    +
    +
    118
    +
    119template<typename T>
    +
    121
    -
    122template<typename T, size_t d>
    +
    122template<typename T>
    - +
    123inline std::ostream& operator<<(std::ostream& os, const ScalarStateType<T>& x)
    124{
    - -
    126 lr.pose /= r;
    -
    127 lr.twist /= r;
    -
    128 return lr;
    -
    129}
    -
    -
    130
    -
    131template<typename T, typename ManifoldType, size_t PD, size_t TD>
    - -
    133
    -
    134template<typename T, typename ManifoldType, size_t PD, size_t TD>
    -
    -
    135inline std::ostream& operator<<(std::ostream& os, const ManifoldStateType<T, ManifoldType, PD, TD>& x)
    -
    136{
    -
    137 os << "VectorStateType: pose=" << x.pose << "; twist=" << x.twist;
    -
    138 return os;
    -
    139}
    -
    +
    125 os << "ScalarStateType: pose=" << x.pose << "; twist=" << x.twist;
    +
    126 return os;
    +
    127}
    + +
    128
    +
    129template<typename T>
    +
    + +
    131{
    +
    132 ScalarStateType<T> lr = l;
    +
    133 lr.pose /= r;
    +
    134 lr.twist /= r;
    +
    135 return lr;
    +
    136}
    +
    +
    137
    +
    138template<typename T, size_t d>
    +
    140
    -
    141template<typename T>
    -
    - +
    141template<typename T, size_t d>
    +
    +
    142inline std::ostream& operator<<(std::ostream& os, const VectorStateType<T, d>& x)
    143{
    - -
    -
    145 static Type ZeroType()
    -
    146 {
    -
    147 return Type::identity();
    -
    148 }
    +
    144 os << "VectorStateType: pose=" << x.pose.transpose() << "; twist=" << x.twist.transpose();
    +
    145 return os;
    +
    146}
    +
    147
    +
    148template<typename T, size_t d>
    -
    149 static Type NansType()
    -
    150 {
    -
    151 return Type::nans();
    -
    152 }
    -
    -
    153};
    -
    -
    154
    -
    155template<typename T, size_t d>
    -
    - -
    157{
    - -
    -
    159 static Type ZeroType()
    -
    160 {
    -
    161 return Type::identity();
    -
    162 }
    -
    -
    -
    163 static Type NansType()
    -
    164 {
    -
    165 return Type::nans();
    -
    166 }
    -
    -
    167};
    -
    -
    168
    -
    169template<typename T, typename ManifoldType, size_t PD, size_t TD>
    -
    - -
    171{
    - -
    -
    173 static Type ZeroType()
    -
    174 {
    -
    175 return Type::identity();
    -
    176 }
    -
    -
    -
    177 static Type NansType()
    -
    178 {
    -
    179 return Type::nans();
    -
    180 }
    -
    -
    181};
    -
    -
    182
    -
    183template<typename T>
    - -
    185
    -
    186template<typename T>
    -
    -
    187inline std::ostream& operator<<(std::ostream& os, const ScalarStateSignal<T>& x)
    -
    188{
    -
    189 os << "ScalarStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
    -
    190 return os;
    -
    191}
    -
    -
    192
    -
    193template<typename T, size_t d>
    - -
    195
    -
    196template<typename T, size_t d>
    -
    -
    197inline std::ostream& operator<<(std::ostream& os, const VectorStateSignal<T, d>& x)
    -
    198{
    -
    199 os << "VectorStateSignal at t=" << x.t() << ": pose=" << x().pose.transpose()
    -
    200 << "; twist=" << x().twist.transpose();
    -
    201 return os;
    -
    202}
    -
    -
    203
    -
    204template<typename T, typename ManifoldType, size_t PD, size_t TD>
    - -
    206
    -
    207template<typename T, typename ManifoldType, size_t PD, size_t TD>
    -
    -
    208inline std::ostream& operator<<(std::ostream& os, const ManifoldStateSignal<T, ManifoldType, PD, TD>& x)
    -
    209{
    -
    210 os << "ManifoldStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
    -
    211 return os;
    -
    212}
    -
    -
    213
    -
    -
    214#define MAKE_VECTOR_STATES(Dimension) \
    -
    215 template<typename T> \
    -
    216 using Vector##Dimension##State = VectorStateType<T, Dimension>; \
    -
    217 template<typename T> \
    -
    218 using Vector##Dimension##StateSignal = VectorStateSignal<T, Dimension>; \
    -
    219 typedef Vector##Dimension##State<double> Vector##Dimension##dState; \
    -
    220 typedef Vector##Dimension##StateSignal<double> Vector##Dimension##dStateSignal;
    -
    + +
    150{
    + +
    152 lr.pose /= r;
    +
    153 lr.twist /= r;
    +
    154 return lr;
    +
    155}
    +
    +
    156
    +
    157template<typename T, typename ManifoldType, size_t PD, size_t TD>
    + +
    159
    +
    160template<typename T, typename ManifoldType, size_t PD, size_t TD>
    +
    +
    161inline std::ostream& operator<<(std::ostream& os, const ManifoldStateType<T, ManifoldType, PD, TD>& x)
    +
    162{
    +
    163 os << "VectorStateType: pose=" << x.pose << "; twist=" << x.twist;
    +
    164 return os;
    +
    165}
    +
    +
    166
    +
    167template<typename T>
    +
    + +
    169{
    + +
    +
    171 static Type ZeroType()
    +
    172 {
    +
    173 return Type::identity();
    +
    174 }
    +
    +
    +
    175 static Type NansType()
    +
    176 {
    +
    177 return Type::nans();
    +
    178 }
    +
    +
    179};
    +
    +
    180
    +
    181template<typename T, size_t d>
    +
    + +
    183{
    + +
    +
    185 static Type ZeroType()
    +
    186 {
    +
    187 return Type::identity();
    +
    188 }
    +
    +
    +
    189 static Type NansType()
    +
    190 {
    +
    191 return Type::nans();
    +
    192 }
    +
    +
    193};
    +
    +
    194
    +
    195template<typename T, typename ManifoldType, size_t PD, size_t TD>
    +
    + +
    197{
    + +
    +
    199 static Type ZeroType()
    +
    200 {
    +
    201 return Type::identity();
    +
    202 }
    +
    +
    +
    203 static Type NansType()
    +
    204 {
    +
    205 return Type::nans();
    +
    206 }
    +
    +
    207};
    +
    +
    208
    +
    209template<typename T>
    + +
    211
    +
    212template<typename T>
    +
    +
    213inline std::ostream& operator<<(std::ostream& os, const ScalarStateSignal<T>& x)
    +
    214{
    +
    215 os << "ScalarStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
    +
    216 return os;
    +
    217}
    +
    +
    218
    +
    219template<typename T, size_t d>
    +
    221
    -
    -
    222#define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension) \
    -
    223 template<typename T> \
    -
    224 using Manif##State = ManifoldStateType<T, Manif<T>, Dimension, TangentDimension>; \
    -
    225 template<typename T> \
    -
    226 using Manif##StateSignal = ManifoldStateSignal<T, Manif<T>, Dimension, TangentDimension>; \
    -
    227 typedef Manif##State<double> Manif##dState; \
    -
    228 typedef Manif##StateSignal<double> Manif##dStateSignal;
    +
    222template<typename T, size_t d>
    +
    +
    223inline std::ostream& operator<<(std::ostream& os, const VectorStateSignal<T, d>& x)
    +
    224{
    +
    225 os << "VectorStateSignal at t=" << x.t() << ": pose=" << x().pose.transpose()
    +
    226 << "; twist=" << x().twist.transpose();
    +
    227 return os;
    +
    228}
    229
    -
    230template<typename T>
    - - - - - - - - - - - - - - - - - +
    230template<typename T, typename ManifoldType, size_t PD, size_t TD>
    + +
    232
    +
    233template<typename T, typename ManifoldType, size_t PD, size_t TD>
    +
    +
    234inline std::ostream& operator<<(std::ostream& os, const ManifoldStateSignal<T, ManifoldType, PD, TD>& x)
    +
    235{
    +
    236 os << "ManifoldStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
    +
    237 return os;
    +
    238}
    +
    +
    239
    +
    +
    240#define MAKE_VECTOR_STATES(Dimension) \
    +
    241 template<typename T> \
    +
    242 using Vector##Dimension##State = VectorStateType<T, Dimension>; \
    +
    243 template<typename T> \
    +
    244 using Vector##Dimension##StateSignal = VectorStateSignal<T, Dimension>; \
    +
    245 typedef Vector##Dimension##State<double> Vector##Dimension##dState; \
    +
    246 typedef Vector##Dimension##StateSignal<double> Vector##Dimension##dStateSignal;
    +
    +
    247
    +
    +
    248#define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension) \
    +
    249 template<typename T> \
    +
    250 using Manif##State = ManifoldStateType<T, Manif<T>, Dimension, TangentDimension>; \
    +
    251 template<typename T> \
    +
    252 using Manif##StateSignal = ManifoldStateSignal<T, Manif<T>, Dimension, TangentDimension>; \
    +
    253 typedef Manif##State<double> Manif##dState; \
    +
    254 typedef Manif##StateSignal<double> Manif##dStateSignal;
    +
    +
    255
    +
    256template<typename T>
    + + + + + + + + + + + + + + + + + -
    #define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension)
    Definition State.h:222
    -
    State< T, PTS, PD, TTS, TD > operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r)
    Definition State.h:76
    -
    ScalarStateSignal< double > ScalardStateSignal
    Definition State.h:233
    -
    ScalarState< double > ScalardState
    Definition State.h:232
    -
    State< T, PTS, PD, TTS, TD > operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r)
    Definition State.h:58
    -
    State< T, TTS, TD, TTS, TD > operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r)
    Definition State.h:67
    -
    std::ostream & operator<<(std::ostream &os, const ScalarStateType< T > &x)
    Definition State.h:97
    -
    #define MAKE_VECTOR_STATES(Dimension)
    Definition State.h:214
    -
    ScalarStateType< T > operator/(const ScalarStateType< T > &l, const double &r)
    Definition State.h:104
    +
    #define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension)
    Definition State.h:248
    +
    State< T, PTS, PD, TTS, TD > operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r)
    Definition State.h:102
    +
    ScalarStateSignal< double > ScalardStateSignal
    Definition State.h:259
    +
    ScalarState< double > ScalardState
    Definition State.h:258
    +
    State< T, PTS, PD, TTS, TD > operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r)
    Definition State.h:84
    +
    State< T, TTS, TD, TTS, TD > operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r)
    Definition State.h:93
    +
    std::ostream & operator<<(std::ostream &os, const ScalarStateType< T > &x)
    Definition State.h:123
    +
    #define MAKE_VECTOR_STATES(Dimension)
    Definition State.h:240
    +
    ScalarStateType< T > operator/(const ScalarStateType< T > &l, const double &r)
    Definition State.h:130
    Definition Signal.h:35
    double t() const
    Definition Signal.h:102
    -
    Definition State.h:171
    -
    static Type NansType()
    Definition State.h:177
    -
    static Type ZeroType()
    Definition State.h:173
    +
    Definition State.h:197
    +
    static Type NansType()
    Definition State.h:203
    +
    static Type ZeroType()
    Definition State.h:199
    Definition Signal.h:617
    -
    Definition State.h:143
    -
    static Type ZeroType()
    Definition State.h:145
    -
    static Type NansType()
    Definition State.h:149
    -
    Definition State.h:8
    -
    static State identity()
    Definition State.h:25
    -
    State(T *arr)
    Definition State.h:17
    -
    PoseType pose
    Definition State.h:12
    -
    typename PoseTypeSpec::Type PoseType
    Definition State.h:9
    -
    TwistType twist
    Definition State.h:13
    -
    State & operator+=(const State< T2, TwistTypeSpec, TwistDim, TwistTypeSpec, TwistDim > &r)
    Definition State.h:49
    -
    static State nans()
    Definition State.h:33
    -
    State(const State &other)
    Definition State.h:19
    -
    typename TwistTypeSpec::Type TwistType
    Definition State.h:10
    -
    State()
    Definition State.h:15
    -
    State & operator*=(const double &s)
    Definition State.h:41
    +
    Definition State.h:169
    +
    static Type ZeroType()
    Definition State.h:171
    +
    static Type NansType()
    Definition State.h:175
    +
    Base type for all Model state representations.
    Definition State.h:34
    +
    static State identity()
    Definition State.h:51
    +
    State(T *arr)
    Definition State.h:43
    +
    PoseType pose
    Definition State.h:38
    +
    typename PoseTypeSpec::Type PoseType
    Definition State.h:35
    +
    TwistType twist
    Definition State.h:39
    +
    State & operator+=(const State< T2, TwistTypeSpec, TwistDim, TwistTypeSpec, TwistDim > &r)
    Definition State.h:75
    +
    static State nans()
    Definition State.h:59
    +
    State(const State &other)
    Definition State.h:45
    +
    typename TwistTypeSpec::Type TwistType
    Definition State.h:36
    +
    State()
    Definition State.h:41
    +
    State & operator*=(const double &s)
    Definition State.h:67
    Definition Signal.h:631
    -
    Definition State.h:157
    -
    static Type NansType()
    Definition State.h:163
    -
    static Type ZeroType()
    Definition State.h:159
    +
    Definition State.h:183
    +
    static Type NansType()
    Definition State.h:189
    +
    static Type ZeroType()
    Definition State.h:185

    @@ -190,7 +199,7 @@

    template<typename T> \
    typedef ModelBaseName##ModelDOF##Model<double> ModelBaseName##ModelDOF##Modeld;
    -
    Definition Models.h:10
    +
    Base type for all model simulators.
    Definition Models.h:25
    @@ -421,8 +430,8 @@

    Definition Signal.h:35
    -
    Definition Models.h:107
    -
    Definition Models.h:131
    +
    Parameters for a 1D rigid body model.
    Definition Models.h:165
    +
    Base class for defining the dynamics for 1D, 2D, and 3D point masses.
    Definition Models.h:236
    @@ -441,7 +450,7 @@

    Initial value:
    -
    Definition Models.h:114
    +
    Parameters for a 2D rigid body model.
    Definition Models.h:185
    @@ -460,7 +469,7 @@

    Initial value:
    -
    Definition Models.h:122
    +
    Parameters for a 3D rigid body model.
    Definition Models.h:211
    diff --git a/docs/Models_8h_source.html b/docs/Models_8h_source.html index 594d48b..a28228a 100644 --- a/docs/Models_8h_source.html +++ b/docs/Models_8h_source.html @@ -97,483 +97,483 @@
    5
    6using namespace Eigen;
    7
    -
    8template<typename DynamicsType>
    -
    -
    9class Model
    -
    10{
    -
    11public:
    -
    12 using InputSignalType = typename DynamicsType::InputSignalType;
    -
    13 using StateDotSignalType = typename DynamicsType::StateDotSignalType;
    -
    14 using StateSignalType = typename DynamicsType::StateSignalType;
    -
    15 using ParamsType = typename DynamicsType::ParamsType;
    -
    16
    - - -
    19
    -
    -
    20 Model() : params_{std::nullopt}
    -
    21 {
    -
    22 reset();
    -
    23 }
    -
    -
    24
    -
    -
    25 void setParams(const ParamsType& params)
    -
    26 {
    -
    27 params_ = params;
    -
    28 }
    -
    -
    29
    -
    -
    30 bool hasParams()
    -
    31 {
    -
    32 return params_.has_value();
    -
    33 }
    -
    -
    34
    -
    -
    35 void reset()
    -
    36 {
    -
    37 x.reset();
    -
    38 xdot.reset();
    -
    39 }
    -
    +
    23template<typename DynamicsType>
    +
    +
    24class Model
    +
    25{
    +
    26public:
    +
    27 using InputSignalType = typename DynamicsType::InputSignalType;
    +
    28 using StateDotSignalType = typename DynamicsType::StateDotSignalType;
    +
    29 using StateSignalType = typename DynamicsType::StateSignalType;
    +
    30 using ParamsType = typename DynamicsType::ParamsType;
    +
    31
    + +
    40
    -
    41 double t() const
    -
    42 {
    -
    43 return x.t();
    +
    41 Model() : params_{std::nullopt}
    +
    42 {
    +
    43 reset();
    44 }
    45
    -
    46 template<typename IntegratorType>
    -
    - -
    48 const double& tf,
    -
    49 const bool& insertIntoHistory = false,
    -
    50 const bool& calculateXddot = false)
    -
    51 {
    -
    52 if (!hasParams())
    -
    53 return false;
    -
    54 double t0 = x.t();
    -
    55 double dt;
    -
    56 if (!signal_utils::getTimeDelta(dt, t0, tf))
    -
    57 {
    -
    58 return false;
    -
    59 }
    -
    60 if (!DynamicsType::update(xdot, x, u, t0, tf, params_.value(), insertIntoHistory, calculateXddot))
    -
    61 {
    -
    62 return false;
    -
    63 }
    -
    64 if (!IntegratorType::integrate(x, xdot, tf, insertIntoHistory))
    -
    65 {
    -
    66 return false;
    -
    67 }
    -
    68 return true;
    -
    69 }
    +
    +
    51 void setParams(const ParamsType& params)
    +
    52 {
    +
    53 params_ = params;
    +
    54 }
    -
    70
    -
    71 template<typename IntegratorType>
    -
    - -
    73 const double& tf,
    -
    74 const double& dt,
    -
    75 const bool& insertIntoHistory = false,
    -
    76 const bool& calculateXddot = false)
    -
    77 {
    -
    78 if (!hasParams())
    -
    79 return false;
    -
    80 double t_k = x.t();
    -
    81 while (t_k < tf)
    -
    82 {
    -
    83 double dt_k;
    -
    84 if (!signal_utils::getTimeDelta(dt_k, t_k, tf, dt))
    -
    85 {
    -
    86 return false;
    -
    87 }
    -
    88 double t_kp1 = t_k + dt_k;
    -
    89 if (!DynamicsType::update(xdot, x, u, t_k, t_kp1, params_.value(), insertIntoHistory, calculateXddot))
    -
    90 {
    -
    91 return false;
    -
    92 }
    -
    93 if (!IntegratorType::integrate(x, xdot, t_kp1, insertIntoHistory))
    -
    94 {
    -
    95 return false;
    -
    96 }
    -
    97 t_k = t_kp1;
    -
    98 }
    -
    99 return true;
    -
    100 }
    +
    55
    +
    +
    59 bool hasParams()
    +
    60 {
    +
    61 return params_.has_value();
    +
    62 }
    -
    101
    -
    102private:
    -
    103 std::optional<ParamsType> params_;
    -
    104};
    +
    63
    +
    +
    67 void reset()
    +
    68 {
    +
    69 x.reset();
    +
    70 xdot.reset();
    +
    71 }
    -
    105
    -
    - -
    107{
    -
    108 RigidBodyParams1D() : m(1), g(0) {}
    -
    109 double m;
    -
    110 double g;
    -
    111};
    +
    72
    +
    +
    76 double t() const
    +
    77 {
    +
    78 return x.t();
    +
    79 }
    -
    112
    -
    - -
    114{
    -
    115 RigidBodyParams2D() : m(1), J(1), g(Vector2d::Zero()) {}
    -
    116 double m;
    -
    117 double J;
    -
    118 Vector2d g;
    -
    119};
    +
    80
    +
    89 template<typename IntegratorType>
    +
    + +
    91 const double& tf,
    +
    92 const bool& insertIntoHistory = false,
    +
    93 const bool& calculateXddot = false)
    +
    94 {
    +
    95 if (!hasParams())
    +
    96 return false;
    +
    97 double t0 = x.t();
    +
    98 double dt;
    +
    99 if (!signal_utils::getTimeDelta(dt, t0, tf))
    +
    100 {
    +
    101 return false;
    +
    102 }
    +
    103 if (!DynamicsType::update(xdot, x, u, t0, tf, params_.value(), insertIntoHistory, calculateXddot))
    +
    104 {
    +
    105 return false;
    +
    106 }
    +
    107 if (!IntegratorType::integrate(x, xdot, tf, insertIntoHistory))
    +
    108 {
    +
    109 return false;
    +
    110 }
    +
    111 return true;
    +
    112 }
    -
    120
    -
    - -
    122{
    -
    123 RigidBodyParams3D() : m(1), J(Matrix3d::Identity()), g(Vector3d::Zero()) {}
    -
    124 double m;
    -
    125 Matrix3d J;
    -
    126 Vector3d g;
    -
    127};
    +
    113
    +
    124 template<typename IntegratorType>
    +
    + +
    126 const double& tf,
    +
    127 const double& dt,
    +
    128 const bool& insertIntoHistory = false,
    +
    129 const bool& calculateXddot = false)
    +
    130 {
    +
    131 if (!hasParams())
    +
    132 return false;
    +
    133 double t_k = x.t();
    +
    134 while (t_k < tf)
    +
    135 {
    +
    136 double dt_k;
    +
    137 if (!signal_utils::getTimeDelta(dt_k, t_k, tf, dt))
    +
    138 {
    +
    139 return false;
    +
    140 }
    +
    141 double t_kp1 = t_k + dt_k;
    +
    142 if (!DynamicsType::update(xdot, x, u, t_k, t_kp1, params_.value(), insertIntoHistory, calculateXddot))
    +
    143 {
    +
    144 return false;
    +
    145 }
    +
    146 if (!IntegratorType::integrate(x, xdot, t_kp1, insertIntoHistory))
    +
    147 {
    +
    148 return false;
    +
    149 }
    +
    150 t_k = t_kp1;
    +
    151 }
    +
    152 return true;
    +
    153 }
    -
    128
    -
    129template<typename IST, typename SST, typename SDST, size_t d, typename PT>
    -
    - -
    131{
    -
    132 using InputSignalType = IST;
    - -
    134 using StateSignalType = SDST;
    -
    135
    -
    136 using InputType = typename InputSignalType::BaseType;
    -
    137 using StateType = typename StateSignalType::BaseType;
    -
    138 using StateDotType = typename StateDotSignalType::BaseType;
    -
    139 using StateDotDotType = typename StateDotSignalType::TangentType;
    -
    140
    -
    141 using ParamsType = PT;
    -
    142
    -
    -
    143 static bool update(StateDotSignalType& xdot,
    -
    144 const StateSignalType& x,
    -
    145 const InputSignalType& u,
    -
    146 const double& t0,
    -
    147 const double& tf,
    -
    148 const ParamsType& params,
    -
    149 const bool& insertIntoHistory = false,
    -
    150 const bool& calculateXddot = false)
    -
    151 {
    -
    152 InputType u_k = u(t0);
    -
    153 StateType x_k = x(t0);
    154
    -
    155 StateDotType xdot_k;
    -
    156 xdot_k.pose = x_k.twist;
    -
    157 xdot_k.twist = -params.g + u_k / params.m;
    -
    158
    -
    159 if (calculateXddot)
    -
    160 {
    -
    161 return xdot.update(tf, xdot_k, insertIntoHistory);
    -
    162 }
    -
    163 else
    -
    164 {
    -
    165 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    -
    166 }
    -
    167 }
    -
    -
    168};
    +
    155private:
    +
    156 std::optional<ParamsType> params_;
    +
    157};
    -
    169
    -
    170template<typename T>
    - - -
    173
    -
    174template<typename T>
    - - -
    177
    -
    178template<typename T>
    - - -
    181
    -
    182template<typename T>
    -
    - -
    184{
    - - - -
    188
    - - - - -
    193
    - -
    195
    -
    -
    196 static bool update(StateDotSignalType& xdot,
    -
    197 const StateSignalType& x,
    -
    198 const InputSignalType& u,
    -
    199 const double& t0,
    -
    200 const double& tf,
    -
    201 const ParamsType& params,
    -
    202 const bool& insertIntoHistory = false,
    -
    203 const bool& calculateXddot = false)
    -
    204 {
    -
    205 InputType u_k = u(t0);
    -
    206 StateType x_k = x(t0);
    -
    207
    -
    208 StateDotType xdot_k;
    -
    209 xdot_k.pose = x_k.twist;
    -
    210 xdot_k.twist = u_k / params.J;
    -
    211
    -
    212 if (calculateXddot)
    -
    213 {
    -
    214 return xdot.update(tf, xdot_k, insertIntoHistory);
    -
    215 }
    -
    216 else
    -
    217 {
    -
    218 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    -
    219 }
    -
    220 }
    -
    -
    221};
    +
    158
    +
    + +
    165{
    +
    166 RigidBodyParams1D() : m(1), g(0) {}
    +
    170 double m;
    +
    176 double g;
    +
    177};
    -
    222
    -
    223template<typename T>
    -
    - -
    225{
    - - - -
    229
    - - - - -
    234
    - -
    236
    -
    -
    237 static bool update(StateDotSignalType& xdot,
    -
    238 const StateSignalType& x,
    -
    239 const InputSignalType& u,
    -
    240 const double& t0,
    -
    241 const double& tf,
    -
    242 const ParamsType& params,
    -
    243 const bool& insertIntoHistory = false,
    -
    244 const bool& calculateXddot = false)
    -
    245 {
    -
    246 InputType u_k = u(t0);
    -
    247 StateType x_k = x(t0);
    -
    248
    -
    249 StateDotType xdot_k;
    -
    250 xdot_k.pose = x_k.twist;
    -
    251 xdot_k.twist = params.J.inverse() * (-x_k.twist.cross(params.J * x_k.twist) + u_k);
    -
    252
    -
    253 if (calculateXddot)
    -
    254 {
    -
    255 return xdot.update(tf, xdot_k, insertIntoHistory);
    -
    256 }
    -
    257 else
    -
    258 {
    -
    259 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    -
    260 }
    -
    261 }
    +
    178
    +
    + +
    185{
    +
    186 RigidBodyParams2D() : m(1), J(1), g(Vector2d::Zero()) {}
    +
    190 double m;
    +
    196 double J;
    +
    202 Vector2d g;
    +
    203};
    -
    262};
    +
    204
    +
    + +
    211{
    +
    212 RigidBodyParams3D() : m(1), J(Matrix3d::Identity()), g(Vector3d::Zero()) {}
    +
    216 double m;
    +
    222 Matrix3d J;
    +
    228 Vector3d g;
    +
    229};
    -
    263
    -
    264template<typename T>
    -
    - -
    266{
    - - - +
    230
    +
    234template<typename IST, typename SST, typename SDST, size_t d, typename PT>
    +
    + +
    236{
    +
    237 using InputSignalType = IST;
    + +
    239 using StateSignalType = SDST;
    +
    240
    +
    241 using InputType = typename InputSignalType::BaseType;
    +
    242 using StateType = typename StateSignalType::BaseType;
    +
    243 using StateDotType = typename StateDotSignalType::BaseType;
    +
    244 using StateDotDotType = typename StateDotSignalType::TangentType;
    +
    245
    +
    246 using ParamsType = PT;
    +
    247
    +
    +
    259 static bool update(StateDotSignalType& xdot,
    +
    260 const StateSignalType& x,
    +
    261 const InputSignalType& u,
    +
    262 const double& t0,
    +
    263 const double& tf,
    +
    264 const ParamsType& params,
    +
    265 const bool& insertIntoHistory = false,
    +
    266 const bool& calculateXddot = false)
    +
    267 {
    +
    268 InputType u_k = u(t0);
    +
    269 StateType x_k = x(t0);
    270
    - - - - -
    275
    - -
    277
    -
    -
    278 static bool update(StateDotSignalType& xdot,
    -
    279 const StateSignalType& x,
    -
    280 const InputSignalType& u,
    -
    281 const double& t0,
    -
    282 const double& tf,
    -
    283 const ParamsType& params,
    -
    284 const bool& insertIntoHistory = false,
    -
    285 const bool& calculateXddot = false)
    -
    286 {
    -
    287 InputType u_k = u(t0);
    -
    288 StateType x_k = x(t0);
    -
    289
    -
    290 StateDotType xdot_k;
    -
    291 xdot_k.pose = x_k.twist;
    -
    292 xdot_k.twist.template block<2, 1>(0, 0) = -(x_k.pose.q().inverse() * params.g) -
    -
    293 x_k.twist(2) * Matrix<T, 2, 1>(-x_k.twist(1), x_k.twist(0)) +
    -
    294 1.0 / params.m * u_k.template block<2, 1>(0, 0);
    -
    295 xdot_k.twist(2) = u_k(2) / params.J;
    -
    296
    -
    297 if (calculateXddot)
    -
    298 {
    -
    299 return xdot.update(tf, xdot_k, insertIntoHistory);
    -
    300 }
    -
    301 else
    -
    302 {
    -
    303 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    -
    304 }
    -
    305 }
    +
    271 StateDotType xdot_k;
    +
    272 xdot_k.pose = x_k.twist;
    +
    273 xdot_k.twist = -params.g + u_k / params.m;
    +
    274
    +
    275 if (calculateXddot)
    +
    276 {
    +
    277 return xdot.update(tf, xdot_k, insertIntoHistory);
    +
    278 }
    +
    279 else
    +
    280 {
    +
    281 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    +
    282 }
    +
    283 }
    -
    306};
    +
    284};
    +
    285
    +
    286template<typename T>
    + + +
    289
    +
    290template<typename T>
    + + +
    293
    +
    294template<typename T>
    + + +
    297
    +
    301template<typename T>
    +
    + +
    303{
    + + +
    307
    -
    308template<typename T>
    -
    - -
    310{
    - - - + + + + +
    312
    +
    314
    - - - - -
    319
    - -
    321
    -
    -
    322 static bool update(StateDotSignalType& xdot,
    -
    323 const StateSignalType& x,
    -
    324 const InputSignalType& u,
    -
    325 const double& t0,
    -
    326 const double& tf,
    -
    327 const ParamsType& params,
    -
    328 const bool& insertIntoHistory = false,
    -
    329 const bool& calculateXddot = false)
    -
    330 {
    -
    331 InputType u_k = u(t0);
    -
    332 StateType x_k = x(t0);
    -
    333
    -
    334 // The entire xdot vector is in the body-frame, since we're using it as a local perturbation
    -
    335 // vector for the oplus and ominus operations from SE(3). i.e., we increment the translation
    -
    336 // vector and attitude jointly, unlike with many filter/controller implementations.
    -
    337 StateDotType xdot_k;
    -
    338 xdot_k.pose = x_k.twist;
    -
    339 xdot_k.twist.template block<3, 1>(0, 0) =
    -
    340 -(x_k.pose.q().inverse() * params.g) -
    -
    341 x_k.twist.template block<3, 1>(3, 0).cross(x_k.twist.template block<3, 1>(0, 0)) +
    -
    342 1.0 / params.m * u_k.template block<3, 1>(0, 0);
    -
    343 xdot_k.twist.template block<3, 1>(3, 0) =
    -
    344 params.J.inverse() *
    -
    345 (-x_k.twist.template block<3, 1>(3, 0).cross(params.J * x_k.twist.template block<3, 1>(3, 0)) +
    -
    346 u_k.template block<3, 1>(3, 0));
    -
    347
    -
    348 if (calculateXddot)
    -
    349 {
    -
    350 return xdot.update(tf, xdot_k, insertIntoHistory);
    -
    351 }
    -
    352 else
    -
    353 {
    -
    354 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    -
    355 }
    -
    356 }
    +
    +
    326 static bool update(StateDotSignalType& xdot,
    +
    327 const StateSignalType& x,
    +
    328 const InputSignalType& u,
    +
    329 const double& t0,
    +
    330 const double& tf,
    +
    331 const ParamsType& params,
    +
    332 const bool& insertIntoHistory = false,
    +
    333 const bool& calculateXddot = false)
    +
    334 {
    +
    335 InputType u_k = u(t0);
    +
    336 StateType x_k = x(t0);
    +
    337
    +
    338 StateDotType xdot_k;
    +
    339 xdot_k.pose = x_k.twist;
    +
    340 xdot_k.twist = u_k / params.J;
    +
    341
    +
    342 if (calculateXddot)
    +
    343 {
    +
    344 return xdot.update(tf, xdot_k, insertIntoHistory);
    +
    345 }
    +
    346 else
    +
    347 {
    +
    348 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    +
    349 }
    +
    350 }
    +
    +
    351};
    +
    +
    352
    +
    356template<typename T>
    +
    + +
    358{
    + + + +
    362
    + + + + +
    367
    + +
    369
    +
    +
    381 static bool update(StateDotSignalType& xdot,
    +
    382 const StateSignalType& x,
    +
    383 const InputSignalType& u,
    +
    384 const double& t0,
    +
    385 const double& tf,
    +
    386 const ParamsType& params,
    +
    387 const bool& insertIntoHistory = false,
    +
    388 const bool& calculateXddot = false)
    +
    389 {
    +
    390 InputType u_k = u(t0);
    +
    391 StateType x_k = x(t0);
    +
    392
    +
    393 StateDotType xdot_k;
    +
    394 xdot_k.pose = x_k.twist;
    +
    395 xdot_k.twist = params.J.inverse() * (-x_k.twist.cross(params.J * x_k.twist) + u_k);
    +
    396
    +
    397 if (calculateXddot)
    +
    398 {
    +
    399 return xdot.update(tf, xdot_k, insertIntoHistory);
    +
    400 }
    +
    401 else
    +
    402 {
    +
    403 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    +
    404 }
    +
    405 }
    +
    +
    406};
    +
    +
    407
    +
    411template<typename T>
    +
    + +
    413{
    + + + +
    417
    + + + + +
    422
    + +
    424
    +
    +
    436 static bool update(StateDotSignalType& xdot,
    +
    437 const StateSignalType& x,
    +
    438 const InputSignalType& u,
    +
    439 const double& t0,
    +
    440 const double& tf,
    +
    441 const ParamsType& params,
    +
    442 const bool& insertIntoHistory = false,
    +
    443 const bool& calculateXddot = false)
    +
    444 {
    +
    445 InputType u_k = u(t0);
    +
    446 StateType x_k = x(t0);
    +
    447
    +
    448 StateDotType xdot_k;
    +
    449 xdot_k.pose = x_k.twist;
    +
    450 xdot_k.twist.template block<2, 1>(0, 0) = -(x_k.pose.q().inverse() * params.g) -
    +
    451 x_k.twist(2) * Matrix<T, 2, 1>(-x_k.twist(1), x_k.twist(0)) +
    +
    452 1.0 / params.m * u_k.template block<2, 1>(0, 0);
    +
    453 xdot_k.twist(2) = u_k(2) / params.J;
    +
    454
    +
    455 if (calculateXddot)
    +
    456 {
    +
    457 return xdot.update(tf, xdot_k, insertIntoHistory);
    +
    458 }
    +
    459 else
    +
    460 {
    +
    461 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    +
    462 }
    +
    463 }
    +
    +
    464};
    +
    +
    465
    +
    469template<typename T>
    +
    + +
    471{
    + + + +
    475
    + + + + +
    480
    + +
    482
    +
    +
    494 static bool update(StateDotSignalType& xdot,
    +
    495 const StateSignalType& x,
    +
    496 const InputSignalType& u,
    +
    497 const double& t0,
    +
    498 const double& tf,
    +
    499 const ParamsType& params,
    +
    500 const bool& insertIntoHistory = false,
    +
    501 const bool& calculateXddot = false)
    +
    502 {
    +
    503 InputType u_k = u(t0);
    +
    504 StateType x_k = x(t0);
    +
    505
    +
    506 // The entire xdot vector is in the body-frame, since we're using it as a local perturbation
    +
    507 // vector for the oplus and ominus operations from SE(3). i.e., we increment the translation
    +
    508 // vector and attitude jointly, unlike with many filter/controller implementations.
    +
    509 StateDotType xdot_k;
    +
    510 xdot_k.pose = x_k.twist;
    +
    511 xdot_k.twist.template block<3, 1>(0, 0) =
    +
    512 -(x_k.pose.q().inverse() * params.g) -
    +
    513 x_k.twist.template block<3, 1>(3, 0).cross(x_k.twist.template block<3, 1>(0, 0)) +
    +
    514 1.0 / params.m * u_k.template block<3, 1>(0, 0);
    +
    515 xdot_k.twist.template block<3, 1>(3, 0) =
    +
    516 params.J.inverse() *
    +
    517 (-x_k.twist.template block<3, 1>(3, 0).cross(params.J * x_k.twist.template block<3, 1>(3, 0)) +
    +
    518 u_k.template block<3, 1>(3, 0));
    +
    519
    +
    520 if (calculateXddot)
    +
    521 {
    +
    522 return xdot.update(tf, xdot_k, insertIntoHistory);
    +
    523 }
    +
    524 else
    +
    525 {
    +
    526 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    +
    527 }
    +
    528 }
    -
    357};
    +
    529};
    -
    358
    -
    -
    359#define MAKE_MODEL(ModelBaseName, ModelDOF) \
    -
    360 template<typename T> \
    -
    361 using ModelBaseName##ModelDOF##Model = Model<ModelBaseName##Dynamics##ModelDOF<T>>; \
    -
    362 typedef ModelBaseName##ModelDOF##Model<double> ModelBaseName##ModelDOF##Modeld;
    +
    530
    +
    +
    531#define MAKE_MODEL(ModelBaseName, ModelDOF) \
    +
    532 template<typename T> \
    +
    533 using ModelBaseName##ModelDOF##Model = Model<ModelBaseName##Dynamics##ModelDOF<T>>; \
    +
    534 typedef ModelBaseName##ModelDOF##Model<double> ModelBaseName##ModelDOF##Modeld;
    -
    363
    -
    364MAKE_MODEL(Translational, 1DOF)
    -
    365MAKE_MODEL(Translational, 2DOF)
    -
    366MAKE_MODEL(Translational, 3DOF)
    -
    367MAKE_MODEL(Rotational, 1DOF)
    -
    368MAKE_MODEL(Rotational, 3DOF)
    -
    369MAKE_MODEL(RigidBody, 3DOF)
    -
    370MAKE_MODEL(RigidBody, 6DOF)
    +
    535
    +
    536MAKE_MODEL(Translational, 1DOF)
    +
    537MAKE_MODEL(Translational, 2DOF)
    +
    538MAKE_MODEL(Translational, 3DOF)
    +
    539MAKE_MODEL(Rotational, 1DOF)
    +
    540MAKE_MODEL(Rotational, 3DOF)
    +
    541MAKE_MODEL(RigidBody, 3DOF)
    +
    542MAKE_MODEL(RigidBody, 6DOF)
    -
    #define MAKE_MODEL(ModelBaseName, ModelDOF)
    Definition Models.h:359
    +
    #define MAKE_MODEL(ModelBaseName, ModelDOF)
    Definition Models.h:531
    -
    Definition Models.h:10
    -
    Model()
    Definition Models.h:20
    -
    bool hasParams()
    Definition Models.h:30
    -
    typename DynamicsType::StateSignalType StateSignalType
    Definition Models.h:14
    -
    double t() const
    Definition Models.h:41
    -
    void reset()
    Definition Models.h:35
    -
    typename DynamicsType::StateDotSignalType StateDotSignalType
    Definition Models.h:13
    -
    void setParams(const ParamsType &params)
    Definition Models.h:25
    -
    StateDotSignalType xdot
    Definition Models.h:18
    -
    StateSignalType x
    Definition Models.h:17
    -
    bool simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:72
    -
    bool simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:47
    -
    typename DynamicsType::InputSignalType InputSignalType
    Definition Models.h:12
    -
    typename DynamicsType::ParamsType ParamsType
    Definition Models.h:15
    +
    Base type for all model simulators.
    Definition Models.h:25
    +
    Model()
    Definition Models.h:41
    +
    bool hasParams()
    Verify that the model has parameters explicity set by setParams().
    Definition Models.h:59
    +
    typename DynamicsType::StateSignalType StateSignalType
    Definition Models.h:29
    +
    double t() const
    Get the current simulation time.
    Definition Models.h:76
    +
    void reset()
    Zero out the model state and derivative variables and reset simulation time to zero.
    Definition Models.h:67
    +
    typename DynamicsType::StateDotSignalType StateDotSignalType
    Definition Models.h:28
    +
    void setParams(const ParamsType &params)
    Initialize the model with any required parameters.
    Definition Models.h:51
    +
    StateDotSignalType xdot
    Time derivative of the model state signal.
    Definition Models.h:39
    +
    StateSignalType x
    Model state signal.
    Definition Models.h:35
    +
    bool simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Simulate the system response to an input over a specified time interval, chunked up into smaller inte...
    Definition Models.h:125
    +
    bool simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Simulate the system response to an input over a specified time interval.
    Definition Models.h:90
    +
    typename DynamicsType::InputSignalType InputSignalType
    Definition Models.h:27
    +
    typename DynamicsType::ParamsType ParamsType
    Definition Models.h:30
    Definition Signal.h:35
    typename BaseSignalSpec::Type BaseType
    Definition Signal.h:37
    typename TangentSignalSpec::Type TangentType
    Definition Signal.h:38
    bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
    Definition Signal.h:171
    -
    bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
    Definition Utils.h:7
    -
    Definition Models.h:266
    -
    typename StateSignalType::BaseType StateType
    Definition Models.h:272
    -
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:274
    -
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:273
    -
    typename InputSignalType::BaseType InputType
    Definition Models.h:271
    -
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:278
    -
    Definition Models.h:310
    -
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:318
    -
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:317
    -
    typename InputSignalType::BaseType InputType
    Definition Models.h:315
    -
    typename StateSignalType::BaseType StateType
    Definition Models.h:316
    -
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:322
    -
    Definition Models.h:107
    -
    double m
    Definition Models.h:109
    -
    double g
    Definition Models.h:110
    -
    RigidBodyParams1D()
    Definition Models.h:108
    -
    Definition Models.h:114
    -
    double m
    Definition Models.h:116
    -
    RigidBodyParams2D()
    Definition Models.h:115
    -
    double J
    Definition Models.h:117
    -
    Vector2d g
    Definition Models.h:118
    -
    Definition Models.h:122
    -
    Matrix3d J
    Definition Models.h:125
    -
    Vector3d g
    Definition Models.h:126
    -
    RigidBodyParams3D()
    Definition Models.h:123
    -
    double m
    Definition Models.h:124
    -
    Definition Models.h:184
    -
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:196
    -
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:192
    -
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:191
    -
    typename StateSignalType::BaseType StateType
    Definition Models.h:190
    -
    typename InputSignalType::BaseType InputType
    Definition Models.h:189
    -
    Definition Models.h:225
    -
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:232
    -
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:233
    -
    typename StateSignalType::BaseType StateType
    Definition Models.h:231
    -
    typename InputSignalType::BaseType InputType
    Definition Models.h:230
    -
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:237
    -
    Definition Models.h:131
    -
    SDST StateSignalType
    Definition Models.h:134
    -
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:138
    -
    SST StateDotSignalType
    Definition Models.h:133
    -
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:143
    -
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:139
    -
    PT ParamsType
    Definition Models.h:141
    -
    typename StateSignalType::BaseType StateType
    Definition Models.h:137
    -
    IST InputSignalType
    Definition Models.h:132
    -
    typename InputSignalType::BaseType InputType
    Definition Models.h:136
    +
    bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
    Definition Utils.h:11
    +
    Definition of the dynamics for planar motion of a mass that's allowed to rotate.
    Definition Models.h:413
    +
    typename StateSignalType::BaseType StateType
    Definition Models.h:419
    +
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:421
    +
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:420
    +
    typename InputSignalType::BaseType InputType
    Definition Models.h:418
    +
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:436
    +
    Definition of the dynamics for a 3D rigid body that can rotate about any axis.
    Definition Models.h:471
    +
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:479
    +
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:478
    +
    typename InputSignalType::BaseType InputType
    Definition Models.h:476
    +
    typename StateSignalType::BaseType StateType
    Definition Models.h:477
    +
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:494
    +
    Parameters for a 1D rigid body model.
    Definition Models.h:165
    +
    double m
    Model mass.
    Definition Models.h:170
    +
    double g
    Gravitational constant.
    Definition Models.h:176
    +
    RigidBodyParams1D()
    Definition Models.h:166
    +
    Parameters for a 2D rigid body model.
    Definition Models.h:185
    +
    double m
    Model mass.
    Definition Models.h:190
    +
    RigidBodyParams2D()
    Definition Models.h:186
    +
    double J
    Moment of inertia.
    Definition Models.h:196
    +
    Vector2d g
    Gravitational vector.
    Definition Models.h:202
    +
    Parameters for a 3D rigid body model.
    Definition Models.h:211
    +
    Matrix3d J
    Moment of inertia.
    Definition Models.h:222
    +
    Vector3d g
    Gravitational vector.
    Definition Models.h:228
    +
    RigidBodyParams3D()
    Definition Models.h:212
    +
    double m
    Model mass.
    Definition Models.h:216
    +
    Definition of the dynamics for planar rotation-only motion of a mass.
    Definition Models.h:303
    +
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:326
    +
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:311
    +
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:310
    +
    typename StateSignalType::BaseType StateType
    Definition Models.h:309
    +
    typename InputSignalType::BaseType InputType
    Definition Models.h:308
    +
    Definition of the dynamics for 3D rotation-only motion of a mass.
    Definition Models.h:358
    +
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:365
    +
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:366
    +
    typename StateSignalType::BaseType StateType
    Definition Models.h:364
    +
    typename InputSignalType::BaseType InputType
    Definition Models.h:363
    +
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:381
    +
    Base class for defining the dynamics for 1D, 2D, and 3D point masses.
    Definition Models.h:236
    +
    SDST StateSignalType
    Definition Models.h:239
    +
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:243
    +
    SST StateDotSignalType
    Definition Models.h:238
    +
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:259
    +
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:244
    +
    PT ParamsType
    Definition Models.h:246
    +
    typename StateSignalType::BaseType StateType
    Definition Models.h:242
    +
    IST InputSignalType
    Definition Models.h:237
    +
    typename InputSignalType::BaseType InputType
    Definition Models.h:241

    Classes

    struct  State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >
     Base type for all Model state representations. More...
     
    struct  ScalarStateSignalSpec< T >
     
    - - + + - - - - - - - - + + + + + + + + - - - - + + + +
     CEulerIntegratorSpec
     CIntegrator
     CEulerIntegratorSpecSpecification for numerically integrating a black box function using Euler's method
     CIntegratorBase type for all integrators
     CManifoldSignalSpec
     CManifoldStateSignalSpec
     CModel
     CRigidBodyDynamics3DOF
     CRigidBodyDynamics6DOF
     CRigidBodyParams1D
     CRigidBodyParams2D
     CRigidBodyParams3D
     CRotationalDynamics1DOF
     CRotationalDynamics3DOF
     CModelBase type for all model simulators
     CRigidBodyDynamics3DOFDefinition of the dynamics for planar motion of a mass that's allowed to rotate
     CRigidBodyDynamics6DOFDefinition of the dynamics for a 3D rigid body that can rotate about any axis
     CRigidBodyParams1DParameters for a 1D rigid body model
     CRigidBodyParams2DParameters for a 2D rigid body model
     CRigidBodyParams3DParameters for a 3D rigid body model
     CRotationalDynamics1DOFDefinition of the dynamics for planar rotation-only motion of a mass
     CRotationalDynamics3DOFDefinition of the dynamics for 3D rotation-only motion of a mass
     CScalarSignalSpec
     CScalarStateSignalSpec
     CSignal
     CSignalDP
     CSimpsonIntegratorSpec
     CState
     CTranslationalDynamicsBase
     CTrapezoidalIntegratorSpec
     CSimpsonIntegratorSpecSpecification for numerically integrating a black box function using Simpson's method
     CStateBase type for all Model state representations
     CTranslationalDynamicsBaseBase class for defining the dynamics for 1D, 2D, and 3D point masses
     CTrapezoidalIntegratorSpecSpecification for numerically integrating a black box function using the Trapezoidal method
     CVectorSignalSpec
     CVectorStateSignalSpec
    diff --git a/docs/classModel.html b/docs/classModel.html index 1be564a..1cd4193 100644 --- a/docs/classModel.html +++ b/docs/classModel.html @@ -87,6 +87,9 @@
  • +

    Base type for all model simulators. + More...

    +

    #include <Models.h>

    + + + + + +

    @@ -105,28 +108,50 @@

     Model ()
     
    void setParams (const ParamsType &params)
     Initialize the model with any required parameters.
     
    bool hasParams ()
     Verify that the model has parameters explicity set by setParams().
     
    void reset ()
     Zero out the model state and derivative variables and reset simulation time to zero.
     
    double t () const
     Get the current simulation time.
     
    template<typename IntegratorType >
    bool simulate (const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
     Simulate the system response to an input over a specified time interval.
     
    template<typename IntegratorType >
    bool simulate (const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
     Simulate the system response to an input over a specified time interval, chunked up into smaller integration increments.
     
    + +

    Public Attributes

    StateSignalType x
     Model state signal.
     
    StateDotSignalType xdot
     Time derivative of the model state signal.
     
    -

    Member Typedef Documentation

    +

    Detailed Description

    +
    template<typename DynamicsType>
    +class Model< DynamicsType >

    Base type for all model simulators.

    +

    Provides methods for initialization, reset, and simulation of dynamic models.

    +

    Derived types:

    + +

    Member Typedef Documentation

    ◆ InputSignalType

    @@ -245,6 +270,8 @@

    +

    Verify that the model has parameters explicity set by setParams().

    +

    @@ -272,6 +299,8 @@

    +

    Zero out the model state and derivative variables and reset simulation time to zero.

    +
    @@ -299,6 +328,9 @@

    +

    Initialize the model with any required parameters.

    +

    The required parameters are determined by the model / dynamics specialization.

    +
    @@ -342,6 +374,18 @@

    +

    Simulate the system response to an input over a specified time interval.

    +
    Parameters
    + + + + + +
    uThe input signal, which should be defined up to tf.
    tfThe time to simulate to. Ideally the delta from the current time is small.
    insertIntoHistoryWhether to store the result in state memory.
    calculateXddotWhether to use finite differencing to calculate the second time derivative of the state.
    +
    +
    +
    Returns
    Whether the simulation was successful.
    +
    @@ -390,6 +434,19 @@

    +

    Simulate the system response to an input over a specified time interval, chunked up into smaller integration increments.

    +
    Parameters
    + + + + + + +
    uThe input signal, which should be defined up to tf.
    tfThe time to simulate to.
    dtTime delta length by which to chunk up the integrations. Ideally this is small.
    insertIntoHistoryWhether to store the result in state memory.
    calculateXddotWhether to use finite differencing to calculate the second time derivative of the state.
    +
    +
    +
    Returns
    Whether the simulation was successful.
    +
    @@ -417,6 +474,8 @@

    +

    Get the current simulation time.

    +

    Member Data Documentation

    @@ -434,6 +493,8 @@

    +

    Model state signal.

    + @@ -450,6 +511,8 @@

    +

    Time derivative of the model state signal.

    +
    The documentation for this class was generated from the following file:

    + - + diff --git a/docs/index.html b/docs/index.html index 184c309..2ec7564 100644 --- a/docs/index.html +++ b/docs/index.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -56,6 +61,22 @@
    +
    + +
    +
    +
    + +
    + - + diff --git a/docs/index.js b/docs/index.js new file mode 100644 index 0000000..4f936bd --- /dev/null +++ b/docs/index.js @@ -0,0 +1,5 @@ +var index = +[ + [ "Introduction", "index.html#intro_sec", null ], + [ "Installation", "index.html#install", null ] +]; \ No newline at end of file diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index 99c59bb..0a46afe 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -56,6 +61,22 @@
    +
    + +
    +
    +
    + +
    getTimeDelta() : signal_utils
    +
    - + diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 2e65076..f12b75e 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -56,6 +61,22 @@
    +
    + +
    +
    +
    + +
    getTimeDelta() : signal_utils
    +
    - + diff --git a/docs/namespaces.html b/docs/namespaces.html index 612a2af..3a2c6c6 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -56,6 +61,22 @@
    +
    + +
    +
    +
    + +
    + - + diff --git a/docs/namespaces_dup.js b/docs/namespaces_dup.js new file mode 100644 index 0000000..78e9c45 --- /dev/null +++ b/docs/namespaces_dup.js @@ -0,0 +1,6 @@ +var namespaces_dup = +[ + [ "signal_utils", "namespacesignal__utils.html", [ + [ "getTimeDelta", "namespacesignal__utils.html#ad7667542f893604d059a5d0022d2890c", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/namespacesignal__utils.html b/docs/namespacesignal__utils.html index eb28eca..b9533da 100644 --- a/docs/namespacesignal__utils.html +++ b/docs/namespacesignal__utils.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    @@ -130,9 +151,13 @@

    + diff --git a/docs/navtree.css b/docs/navtree.css new file mode 100644 index 0000000..6b1e5e4 --- /dev/null +++ b/docs/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url('splitbar.png'); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/navtree.js b/docs/navtree.js new file mode 100644 index 0000000..884b79b --- /dev/null +++ b/docs/navtree.js @@ -0,0 +1,482 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + window.location.href=aname; + animationInProgress=false; + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: () => resizeWidth() }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(() => resizeHeight()); + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = (evt) => evt.preventDefault(); + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/search/search.css b/docs/search/search.css index 19f76f9..d7b0f90 100644 --- a/docs/search/search.css +++ b/docs/search/search.css @@ -25,9 +25,9 @@ dark-mode-toggle { #MSearchBox { display: inline-block; white-space : nowrap; - background: var(--search-background-color); + background: white; border-radius: 0.65em; - box-shadow: var(--search-box-shadow); + box-shadow: inset 0.5px 0.5px 3px 0px #555; z-index: 102; } @@ -42,7 +42,7 @@ dark-mode-toggle { vertical-align: middle; width: 20px; height: 19px; - background-image: var(--search-magnification-select-image); + background-image: url('mag_sel.svg'); margin: 0 0 0 0.3em; padding: 0; } @@ -52,7 +52,7 @@ dark-mode-toggle { vertical-align: middle; width: 10px; height: 19px; - background-image: var(--search-magnification-image); + background-image: url('mag.svg'); margin: 0 0 0 0.5em; padding: 0; } @@ -67,9 +67,9 @@ dark-mode-toggle { padding: 0; line-height: 1em; border:none; - color: var(--search-foreground-color); + color: #909090; outline: none; - font-family: var(--font-family-search); + font-family: Arial,Verdana,sans-serif; -webkit-border-radius: 0px; border-radius: 0px; background: none; @@ -106,7 +106,7 @@ dark-mode-toggle { } .MSearchBoxActive #MSearchField { - color: var(--search-active-color); + color: black; } @@ -117,8 +117,8 @@ dark-mode-toggle { display: none; position: absolute; left: 0; top: 0; - border: 1px solid var(--search-filter-border-color); - background-color: var(--search-filter-background-color); + border: 1px solid #90A5CE; + background-color: #F9FAFC; z-index: 10001; padding-top: 4px; padding-bottom: 4px; @@ -131,7 +131,7 @@ dark-mode-toggle { } .SelectItem { - font: 8pt var(--font-family-search); + font: 8pt Arial,Verdana,sans-serif; padding-left: 2px; padding-right: 12px; border: 0px; @@ -139,7 +139,7 @@ dark-mode-toggle { span.SelectionMark { margin-right: 4px; - font-family: var(--font-family-monospace); + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; outline-style: none; text-decoration: none; } @@ -147,7 +147,7 @@ span.SelectionMark { a.SelectItem { display: block; outline-style: none; - color: var(--search-filter-foreground-color); + color: black; text-decoration: none; padding-left: 6px; padding-right: 12px; @@ -155,14 +155,14 @@ a.SelectItem { a.SelectItem:focus, a.SelectItem:active { - color: var(--search-filter-foreground-color); + color: black; outline-style: none; text-decoration: none; } a.SelectItem:hover { - color: var(--search-filter-highlight-text-color); - background-color: var(--search-filter-highlight-bg-color); + color: white; + background-color: #3D578C; outline-style: none; text-decoration: none; cursor: pointer; @@ -180,8 +180,8 @@ iframe#MSearchResults { display: none; position: absolute; left: 0; top: 0; - border: 1px solid var(--search-results-border-color); - background-color: var(--search-results-background-color); + border: 1px solid black; + background-color: #EEF1F7; z-index:10000; width: 300px; height: 400px; @@ -207,7 +207,7 @@ iframe#MSearchResults { div.SRPage { margin: 5px 2px; - background-color: var(--search-results-background-color); + background-color: #EEF1F7; } .SRChildren { @@ -220,16 +220,16 @@ div.SRPage { .SRSymbol { font-weight: bold; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); + color: #425E97; + font-family: Arial,Verdana,sans-serif; text-decoration: none; outline: none; } a.SRScope { display: block; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); + color: #425E97; + font-family: Arial,Verdana,sans-serif; font-size: 8pt; text-decoration: none; outline: none; @@ -242,14 +242,14 @@ a.SRScope:focus, a.SRScope:active { span.SRScope { padding-left: 4px; - font-family: var(--font-family-search); + font-family: Arial,Verdana,sans-serif; } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; - font-family: var(--font-family-search); + font-family: Arial,Verdana,sans-serif; } .SRResult { @@ -266,7 +266,7 @@ div.searchresults { .pages b { color: white; padding: 5px 5px 3px 5px; - background-image: var(--nav-gradient-active-image-parent); + background-image: url("../tab_a.png"); background-repeat: repeat-x; text-shadow: 0 1px 1px #000000; } diff --git a/docs/structEulerIntegratorSpec-members.html b/docs/structEulerIntegratorSpec-members.html index 0bf56aa..bc5a118 100644 --- a/docs/structEulerIntegratorSpec-members.html +++ b/docs/structEulerIntegratorSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    EulerIntegratorSpec Member List
    @@ -86,9 +107,12 @@
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)EulerIntegratorSpecinlinestatic

    + - + diff --git a/docs/structEulerIntegratorSpec.html b/docs/structEulerIntegratorSpec.html index a1ee4eb..d8dcf59 100644 --- a/docs/structEulerIntegratorSpec.html +++ b/docs/structEulerIntegratorSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    - + diff --git a/docs/structIntegrator-members.html b/docs/structIntegrator-members.html index 44cd81a..da74ac3 100644 --- a/docs/structIntegrator-members.html +++ b/docs/structIntegrator-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Integrator< IntegratorType > Member List
    @@ -87,9 +108,12 @@ integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)Integrator< IntegratorType >inlinestatic integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)Integrator< IntegratorType >inlinestatic + - + diff --git a/docs/structIntegrator.html b/docs/structIntegrator.html index 99f2ea9..6dd2cc1 100644 --- a/docs/structIntegrator.html +++ b/docs/structIntegrator.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    - + diff --git a/docs/structManifoldSignalSpec-members.html b/docs/structManifoldSignalSpec-members.html index 2865f85..0429ca0 100644 --- a/docs/structManifoldSignalSpec-members.html +++ b/docs/structManifoldSignalSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    ManifoldSignalSpec< ManifoldType > Member List
    @@ -88,9 +109,12 @@ Type typedefManifoldSignalSpec< ManifoldType > ZeroType()ManifoldSignalSpec< ManifoldType >inlinestatic + - + diff --git a/docs/structManifoldSignalSpec.html b/docs/structManifoldSignalSpec.html index bcfd71b..b9297f6 100644 --- a/docs/structManifoldSignalSpec.html +++ b/docs/structManifoldSignalSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -176,9 +197,13 @@

    Signal.h

    +
    - + diff --git a/docs/structManifoldSignalSpec.js b/docs/structManifoldSignalSpec.js new file mode 100644 index 0000000..eb895e0 --- /dev/null +++ b/docs/structManifoldSignalSpec.js @@ -0,0 +1,4 @@ +var structManifoldSignalSpec = +[ + [ "Type", "structManifoldSignalSpec.html#ae6292debacd46f629429d03cf7e9a342", null ] +]; \ No newline at end of file diff --git a/docs/structManifoldStateSignalSpec-members.html b/docs/structManifoldStateSignalSpec-members.html index a1cbf4b..c7bdf46 100644 --- a/docs/structManifoldStateSignalSpec-members.html +++ b/docs/structManifoldStateSignalSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    ManifoldStateSignalSpec< T, ManifoldType, PD, TD > Member List
    @@ -88,9 +109,12 @@ Type typedefManifoldStateSignalSpec< T, ManifoldType, PD, TD > ZeroType()ManifoldStateSignalSpec< T, ManifoldType, PD, TD >inlinestatic + - + diff --git a/docs/structManifoldStateSignalSpec.html b/docs/structManifoldStateSignalSpec.html index 7c1babd..492ffe3 100644 --- a/docs/structManifoldStateSignalSpec.html +++ b/docs/structManifoldStateSignalSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -176,9 +197,13 @@

    State.h

    +
    - + diff --git a/docs/structManifoldStateSignalSpec.js b/docs/structManifoldStateSignalSpec.js new file mode 100644 index 0000000..8fa2d7c --- /dev/null +++ b/docs/structManifoldStateSignalSpec.js @@ -0,0 +1,4 @@ +var structManifoldStateSignalSpec = +[ + [ "Type", "structManifoldStateSignalSpec.html#aef8d411c012125303e1faa1d66b35c1c", null ] +]; \ No newline at end of file diff --git a/docs/structRigidBodyDynamics3DOF-members.html b/docs/structRigidBodyDynamics3DOF-members.html index 022c718..026824d 100644 --- a/docs/structRigidBodyDynamics3DOF-members.html +++ b/docs/structRigidBodyDynamics3DOF-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    RigidBodyDynamics3DOF< T > Member List
    @@ -94,9 +115,12 @@ StateType typedefRigidBodyDynamics3DOF< T > update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RigidBodyDynamics3DOF< T >inlinestatic + - + diff --git a/docs/structRigidBodyDynamics3DOF.html b/docs/structRigidBodyDynamics3DOF.html index 58f9391..c7cac46 100644 --- a/docs/structRigidBodyDynamics3DOF.html +++ b/docs/structRigidBodyDynamics3DOF.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -329,9 +350,13 @@

    Models.h

    +
    - + diff --git a/docs/structRigidBodyDynamics3DOF.js b/docs/structRigidBodyDynamics3DOF.js new file mode 100644 index 0000000..67406e7 --- /dev/null +++ b/docs/structRigidBodyDynamics3DOF.js @@ -0,0 +1,11 @@ +var structRigidBodyDynamics3DOF = +[ + [ "InputSignalType", "structRigidBodyDynamics3DOF.html#a4341d5e4a676e15edc8f8faafef5431a", null ], + [ "InputType", "structRigidBodyDynamics3DOF.html#aa90232643a368b1d4b9fd618ae8d57f7", null ], + [ "ParamsType", "structRigidBodyDynamics3DOF.html#afa1ade3cc027b78a2d2c65df867d52b0", null ], + [ "StateDotDotType", "structRigidBodyDynamics3DOF.html#a562a8cc5e6e8dca19982509022a22ba4", null ], + [ "StateDotSignalType", "structRigidBodyDynamics3DOF.html#a28d138392ca0069c5e6274f78fd08e29", null ], + [ "StateDotType", "structRigidBodyDynamics3DOF.html#a7a9fa29ba97531d856e87560806a805c", null ], + [ "StateSignalType", "structRigidBodyDynamics3DOF.html#a0c346a983bc929f1f7a6e5d2be3a0841", null ], + [ "StateType", "structRigidBodyDynamics3DOF.html#a448c5efb998f492d1518eb0d2d7ded74", null ] +]; \ No newline at end of file diff --git a/docs/structRigidBodyDynamics6DOF-members.html b/docs/structRigidBodyDynamics6DOF-members.html index 80a0558..23a099f 100644 --- a/docs/structRigidBodyDynamics6DOF-members.html +++ b/docs/structRigidBodyDynamics6DOF-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    RigidBodyDynamics6DOF< T > Member List
    @@ -94,9 +115,12 @@ StateType typedefRigidBodyDynamics6DOF< T > update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RigidBodyDynamics6DOF< T >inlinestatic + - + diff --git a/docs/structRigidBodyDynamics6DOF.html b/docs/structRigidBodyDynamics6DOF.html index 78b11be..aeb6d64 100644 --- a/docs/structRigidBodyDynamics6DOF.html +++ b/docs/structRigidBodyDynamics6DOF.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -329,9 +350,13 @@

    Models.h

    +
    - + diff --git a/docs/structRigidBodyDynamics6DOF.js b/docs/structRigidBodyDynamics6DOF.js new file mode 100644 index 0000000..4877c13 --- /dev/null +++ b/docs/structRigidBodyDynamics6DOF.js @@ -0,0 +1,11 @@ +var structRigidBodyDynamics6DOF = +[ + [ "InputSignalType", "structRigidBodyDynamics6DOF.html#a8927301269f2ce616317819c769b9364", null ], + [ "InputType", "structRigidBodyDynamics6DOF.html#ac8780c98b59889f8329aa467a5b375fe", null ], + [ "ParamsType", "structRigidBodyDynamics6DOF.html#ad252337a912dcd1cfaa097d9c2d5814e", null ], + [ "StateDotDotType", "structRigidBodyDynamics6DOF.html#a32c92b85c94f66739358385a0a3a07fc", null ], + [ "StateDotSignalType", "structRigidBodyDynamics6DOF.html#afcafc7961087b27b239ad998e436da9a", null ], + [ "StateDotType", "structRigidBodyDynamics6DOF.html#aa664579d3d691fcd4c5824b242dd2061", null ], + [ "StateSignalType", "structRigidBodyDynamics6DOF.html#ad4e0605bf2a0c90acbe9a1a333b9b952", null ], + [ "StateType", "structRigidBodyDynamics6DOF.html#adf5c3e5f6090032d18019c7aeab91f51", null ] +]; \ No newline at end of file diff --git a/docs/structRigidBodyParams1D-members.html b/docs/structRigidBodyParams1D-members.html index 317aad1..e372927 100644 --- a/docs/structRigidBodyParams1D-members.html +++ b/docs/structRigidBodyParams1D-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    RigidBodyParams1D Member List
    @@ -88,9 +109,12 @@ mRigidBodyParams1D RigidBodyParams1D()RigidBodyParams1Dinline + - + diff --git a/docs/structRigidBodyParams1D.html b/docs/structRigidBodyParams1D.html index f26042e..88f28f1 100644 --- a/docs/structRigidBodyParams1D.html +++ b/docs/structRigidBodyParams1D.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Member Functions | @@ -172,9 +193,13 @@

    Models.h

    +
    - + diff --git a/docs/structRigidBodyParams1D.js b/docs/structRigidBodyParams1D.js new file mode 100644 index 0000000..83288f1 --- /dev/null +++ b/docs/structRigidBodyParams1D.js @@ -0,0 +1,6 @@ +var structRigidBodyParams1D = +[ + [ "RigidBodyParams1D", "structRigidBodyParams1D.html#ab2b9c3eb89bcbf0ac06a33e95725e0eb", null ], + [ "g", "structRigidBodyParams1D.html#a823d208bcbabadd83d3cc8f222973c95", null ], + [ "m", "structRigidBodyParams1D.html#a2f5a1c0e6320c14d72d0ff98ad979332", null ] +]; \ No newline at end of file diff --git a/docs/structRigidBodyParams2D-members.html b/docs/structRigidBodyParams2D-members.html index 1b5dbd0..fa5d0bd 100644 --- a/docs/structRigidBodyParams2D-members.html +++ b/docs/structRigidBodyParams2D-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    RigidBodyParams2D Member List
    @@ -89,9 +110,12 @@ mRigidBodyParams2D RigidBodyParams2D()RigidBodyParams2Dinline + - + diff --git a/docs/structRigidBodyParams2D.html b/docs/structRigidBodyParams2D.html index 74f2bfe..3eeb920 100644 --- a/docs/structRigidBodyParams2D.html +++ b/docs/structRigidBodyParams2D.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Member Functions | @@ -192,9 +213,13 @@

    Models.h

    +
    - + diff --git a/docs/structRigidBodyParams2D.js b/docs/structRigidBodyParams2D.js new file mode 100644 index 0000000..695919a --- /dev/null +++ b/docs/structRigidBodyParams2D.js @@ -0,0 +1,7 @@ +var structRigidBodyParams2D = +[ + [ "RigidBodyParams2D", "structRigidBodyParams2D.html#a6febaa8c9f355105b908979da3dd1255", null ], + [ "g", "structRigidBodyParams2D.html#ab212f53241edb1bf232499a6ba963258", null ], + [ "J", "structRigidBodyParams2D.html#aaefd836b5e013be87bc317aaba261a25", null ], + [ "m", "structRigidBodyParams2D.html#a5e37a979a1a69333bcc5576d14397185", null ] +]; \ No newline at end of file diff --git a/docs/structRigidBodyParams3D-members.html b/docs/structRigidBodyParams3D-members.html index 0273f25..b897c07 100644 --- a/docs/structRigidBodyParams3D-members.html +++ b/docs/structRigidBodyParams3D-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    RigidBodyParams3D Member List
    @@ -89,9 +110,12 @@ mRigidBodyParams3D RigidBodyParams3D()RigidBodyParams3Dinline + - + diff --git a/docs/structRigidBodyParams3D.html b/docs/structRigidBodyParams3D.html index 9a160d7..1fc2dc8 100644 --- a/docs/structRigidBodyParams3D.html +++ b/docs/structRigidBodyParams3D.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Member Functions | @@ -192,9 +213,13 @@

    Models.h

    +
    - + diff --git a/docs/structRigidBodyParams3D.js b/docs/structRigidBodyParams3D.js new file mode 100644 index 0000000..6c7b237 --- /dev/null +++ b/docs/structRigidBodyParams3D.js @@ -0,0 +1,7 @@ +var structRigidBodyParams3D = +[ + [ "RigidBodyParams3D", "structRigidBodyParams3D.html#a8aa76fea7a0790ead025bf79e767d0cf", null ], + [ "g", "structRigidBodyParams3D.html#a87b9c6a467ebcd6805a1d9419e6149d1", null ], + [ "J", "structRigidBodyParams3D.html#a049fb70b2897579849053dfe2ea840e6", null ], + [ "m", "structRigidBodyParams3D.html#acfa4c165c3278306dac4c0f51819e694", null ] +]; \ No newline at end of file diff --git a/docs/structRotationalDynamics1DOF-members.html b/docs/structRotationalDynamics1DOF-members.html index 96150d9..c93e4d7 100644 --- a/docs/structRotationalDynamics1DOF-members.html +++ b/docs/structRotationalDynamics1DOF-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    RotationalDynamics1DOF< T > Member List
    @@ -94,9 +115,12 @@ StateType typedefRotationalDynamics1DOF< T > update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RotationalDynamics1DOF< T >inlinestatic + - + diff --git a/docs/structRotationalDynamics1DOF.html b/docs/structRotationalDynamics1DOF.html index 2bc009b..aa77d61 100644 --- a/docs/structRotationalDynamics1DOF.html +++ b/docs/structRotationalDynamics1DOF.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -329,9 +350,13 @@

    Models.h

    +
    - + diff --git a/docs/structRotationalDynamics1DOF.js b/docs/structRotationalDynamics1DOF.js new file mode 100644 index 0000000..54c8085 --- /dev/null +++ b/docs/structRotationalDynamics1DOF.js @@ -0,0 +1,11 @@ +var structRotationalDynamics1DOF = +[ + [ "InputSignalType", "structRotationalDynamics1DOF.html#a80b5f730e292fda15bdcf1e8b96fe02e", null ], + [ "InputType", "structRotationalDynamics1DOF.html#ad43b9ce6a37b65d677d01ceafe448259", null ], + [ "ParamsType", "structRotationalDynamics1DOF.html#a38ff3a3028dc85817407d15587bf3451", null ], + [ "StateDotDotType", "structRotationalDynamics1DOF.html#a5e2f1cd471e7be99dc9e0f3f29f146f3", null ], + [ "StateDotSignalType", "structRotationalDynamics1DOF.html#a32c4979bf8f6aa3f9c1b0f2818ba4abd", null ], + [ "StateDotType", "structRotationalDynamics1DOF.html#a7df05f9db990eecd331f506d1a17597e", null ], + [ "StateSignalType", "structRotationalDynamics1DOF.html#ac321d27d0098cb3e8e64ea0d98500cb6", null ], + [ "StateType", "structRotationalDynamics1DOF.html#aada86d78db85576298e606afda8c928d", null ] +]; \ No newline at end of file diff --git a/docs/structRotationalDynamics3DOF-members.html b/docs/structRotationalDynamics3DOF-members.html index 9e9511a..bcdc030 100644 --- a/docs/structRotationalDynamics3DOF-members.html +++ b/docs/structRotationalDynamics3DOF-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    RotationalDynamics3DOF< T > Member List
    @@ -94,9 +115,12 @@ StateType typedefRotationalDynamics3DOF< T > update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)RotationalDynamics3DOF< T >inlinestatic + - + diff --git a/docs/structRotationalDynamics3DOF.html b/docs/structRotationalDynamics3DOF.html index e21d608..99d3a56 100644 --- a/docs/structRotationalDynamics3DOF.html +++ b/docs/structRotationalDynamics3DOF.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -329,9 +350,13 @@

    Models.h

    +
    - + diff --git a/docs/structRotationalDynamics3DOF.js b/docs/structRotationalDynamics3DOF.js new file mode 100644 index 0000000..7f99ba7 --- /dev/null +++ b/docs/structRotationalDynamics3DOF.js @@ -0,0 +1,11 @@ +var structRotationalDynamics3DOF = +[ + [ "InputSignalType", "structRotationalDynamics3DOF.html#aac317f9992071217ce644f6b9ccd8763", null ], + [ "InputType", "structRotationalDynamics3DOF.html#aafaa22bb44de6a10f6293f66da5c52e5", null ], + [ "ParamsType", "structRotationalDynamics3DOF.html#a2ac951c964726729410488c2bfcfa156", null ], + [ "StateDotDotType", "structRotationalDynamics3DOF.html#a6e75764a6e9b0ec406d716dfb60943b1", null ], + [ "StateDotSignalType", "structRotationalDynamics3DOF.html#a6b1ce3427c65404128d15a66c3d11621", null ], + [ "StateDotType", "structRotationalDynamics3DOF.html#a40c9649794d2d6e82da6451d17c32bb5", null ], + [ "StateSignalType", "structRotationalDynamics3DOF.html#a2814e21ab959a4cb71fdc2682d1cad69", null ], + [ "StateType", "structRotationalDynamics3DOF.html#aaee29651f3b1671b6ab4e10656ea6f9a", null ] +]; \ No newline at end of file diff --git a/docs/structScalarSignalSpec-members.html b/docs/structScalarSignalSpec-members.html index 05ec76c..5f4ebbb 100644 --- a/docs/structScalarSignalSpec-members.html +++ b/docs/structScalarSignalSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    ScalarSignalSpec< T > Member List
    @@ -88,9 +109,12 @@ Type typedefScalarSignalSpec< T > ZeroType()ScalarSignalSpec< T >inlinestatic + - + diff --git a/docs/structScalarSignalSpec.html b/docs/structScalarSignalSpec.html index 4017eb1..2f46f91 100644 --- a/docs/structScalarSignalSpec.html +++ b/docs/structScalarSignalSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -176,9 +197,13 @@

    Signal.h

    +
    - + diff --git a/docs/structScalarSignalSpec.js b/docs/structScalarSignalSpec.js new file mode 100644 index 0000000..b3e0065 --- /dev/null +++ b/docs/structScalarSignalSpec.js @@ -0,0 +1,4 @@ +var structScalarSignalSpec = +[ + [ "Type", "structScalarSignalSpec.html#a4a319643aeb76b94214f8b41d64d5402", null ] +]; \ No newline at end of file diff --git a/docs/structScalarStateSignalSpec-members.html b/docs/structScalarStateSignalSpec-members.html index cfdc7d4..ba5700b 100644 --- a/docs/structScalarStateSignalSpec-members.html +++ b/docs/structScalarStateSignalSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    ScalarStateSignalSpec< T > Member List
    @@ -88,9 +109,12 @@ Type typedefScalarStateSignalSpec< T > ZeroType()ScalarStateSignalSpec< T >inlinestatic + - + diff --git a/docs/structScalarStateSignalSpec.html b/docs/structScalarStateSignalSpec.html index c72dfc2..cdf40eb 100644 --- a/docs/structScalarStateSignalSpec.html +++ b/docs/structScalarStateSignalSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -176,9 +197,13 @@

    State.h

    +
    - + diff --git a/docs/structScalarStateSignalSpec.js b/docs/structScalarStateSignalSpec.js new file mode 100644 index 0000000..87741a1 --- /dev/null +++ b/docs/structScalarStateSignalSpec.js @@ -0,0 +1,4 @@ +var structScalarStateSignalSpec = +[ + [ "Type", "structScalarStateSignalSpec.html#a7ae52069e3aafdb7c45b14168b1ad11b", null ] +]; \ No newline at end of file diff --git a/docs/structSignal_1_1SignalDP-members.html b/docs/structSignal_1_1SignalDP-members.html index 7e53c48..0fa1d53 100644 --- a/docs/structSignal_1_1SignalDP-members.html +++ b/docs/structSignal_1_1SignalDP-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    - -
    Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP Member List
    @@ -92,9 +109,12 @@ xSignal< BaseSignalSpec, TangentSignalSpec >::SignalDP xdotSignal< BaseSignalSpec, TangentSignalSpec >::SignalDP + - + diff --git a/docs/structSignal_1_1SignalDP.html b/docs/structSignal_1_1SignalDP.html index b3b0b3c..3ae2922 100644 --- a/docs/structSignal_1_1SignalDP.html +++ b/docs/structSignal_1_1SignalDP.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    - -
    Public Attributes | @@ -153,9 +170,13 @@

    Signal.h

    +
    - + diff --git a/docs/structSignal_1_1SignalDP.js b/docs/structSignal_1_1SignalDP.js new file mode 100644 index 0000000..553deeb --- /dev/null +++ b/docs/structSignal_1_1SignalDP.js @@ -0,0 +1,6 @@ +var structSignal_1_1SignalDP = +[ + [ "t", "structSignal_1_1SignalDP.html#ac9d0651b25c9bcf14fcfc65a32fcfa86", null ], + [ "x", "structSignal_1_1SignalDP.html#a9b7c7d507ee5f16f1909dccdae98e649", null ], + [ "xdot", "structSignal_1_1SignalDP.html#a31d004bf32039463b33344e4c10bd5bb", null ] +]; \ No newline at end of file diff --git a/docs/structSimpsonIntegratorSpec-members.html b/docs/structSimpsonIntegratorSpec-members.html index 0e95b86..4d1daef 100644 --- a/docs/structSimpsonIntegratorSpec-members.html +++ b/docs/structSimpsonIntegratorSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    SimpsonIntegratorSpec Member List
    @@ -86,9 +107,12 @@
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)SimpsonIntegratorSpecinlinestatic
    + - + diff --git a/docs/structSimpsonIntegratorSpec.html b/docs/structSimpsonIntegratorSpec.html index 78f3bfc..5d74000 100644 --- a/docs/structSimpsonIntegratorSpec.html +++ b/docs/structSimpsonIntegratorSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    - + diff --git a/docs/structState-members.html b/docs/structState-members.html index f2f53a8..a0ad0ab 100644 --- a/docs/structState-members.html +++ b/docs/structState-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > Member List
    @@ -96,9 +117,12 @@ twistState< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > TwistType typedefState< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > + - + diff --git a/docs/structState.html b/docs/structState.html index 8dce7f5..3818197 100644 --- a/docs/structState.html +++ b/docs/structState.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -124,6 +145,7 @@

    Public Attributes

    PoseType pose + TODO.
      TwistType twist   @@ -392,6 +414,8 @@

    +

    TODO.

    +

    @@ -414,9 +438,13 @@

    State.h + - + diff --git a/docs/structState.js b/docs/structState.js new file mode 100644 index 0000000..53be9bf --- /dev/null +++ b/docs/structState.js @@ -0,0 +1,12 @@ +var structState = +[ + [ "PoseType", "structState.html#a31bd8aa44dff5f656b2b2057c8d63821", null ], + [ "TwistType", "structState.html#ab58b6e2fe6ea3c2777c5a8a92f6665a1", null ], + [ "State", "structState.html#adcb914ebe25fe14622a945801267fa7a", null ], + [ "State", "structState.html#a097d236bc46ca02a379e2fd188fe3e97", null ], + [ "State", "structState.html#aa10b450dbe8a806a0b203521b4738c0c", null ], + [ "operator*=", "structState.html#af76faa98cfc18fb81afb0c86f7a0aa75", null ], + [ "operator+=", "structState.html#a7764970f0c29576eac07ab57c28261be", null ], + [ "pose", "structState.html#a0a5874d4c3988770f5498c34ec508c34", null ], + [ "twist", "structState.html#a3f5fb4275701e71a56d2fa1fb8d54080", null ] +]; \ No newline at end of file diff --git a/docs/structTranslationalDynamicsBase-members.html b/docs/structTranslationalDynamicsBase-members.html index 817da6a..d78fb23 100644 --- a/docs/structTranslationalDynamicsBase-members.html +++ b/docs/structTranslationalDynamicsBase-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    TranslationalDynamicsBase< IST, SST, SDST, d, PT > Member List
    @@ -94,9 +115,12 @@ StateType typedefTranslationalDynamicsBase< IST, SST, SDST, d, PT > update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)TranslationalDynamicsBase< IST, SST, SDST, d, PT >inlinestatic + - + diff --git a/docs/structTranslationalDynamicsBase.html b/docs/structTranslationalDynamicsBase.html index 092d53c..72e19e5 100644 --- a/docs/structTranslationalDynamicsBase.html +++ b/docs/structTranslationalDynamicsBase.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -329,9 +350,13 @@

    Models.h

    +
    - + diff --git a/docs/structTranslationalDynamicsBase.js b/docs/structTranslationalDynamicsBase.js new file mode 100644 index 0000000..b7c4ab0 --- /dev/null +++ b/docs/structTranslationalDynamicsBase.js @@ -0,0 +1,11 @@ +var structTranslationalDynamicsBase = +[ + [ "InputSignalType", "structTranslationalDynamicsBase.html#aac403e4db54adf389b8f1fa3700f6f6a", null ], + [ "InputType", "structTranslationalDynamicsBase.html#ac57d5ab2e4cf3e6afe4a5ae550e858bb", null ], + [ "ParamsType", "structTranslationalDynamicsBase.html#a4ba374f05dd1f5c4168adf3d6a15ef0c", null ], + [ "StateDotDotType", "structTranslationalDynamicsBase.html#a4ae3874e31bcc97d54f4cebea0606002", null ], + [ "StateDotSignalType", "structTranslationalDynamicsBase.html#a3870f6b57fcb6cb578b3640401331a39", null ], + [ "StateDotType", "structTranslationalDynamicsBase.html#a25c6532290d222c25e727394a0afa0b7", null ], + [ "StateSignalType", "structTranslationalDynamicsBase.html#a1f0fdd4bbfb73f52878c7e5c7e459f16", null ], + [ "StateType", "structTranslationalDynamicsBase.html#aabb958cc98babacfc8478a04fb7a37dd", null ] +]; \ No newline at end of file diff --git a/docs/structTrapezoidalIntegratorSpec-members.html b/docs/structTrapezoidalIntegratorSpec-members.html index 91b9afb..5045fdc 100644 --- a/docs/structTrapezoidalIntegratorSpec-members.html +++ b/docs/structTrapezoidalIntegratorSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    TrapezoidalIntegratorSpec Member List
    @@ -86,9 +107,12 @@
    integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)TrapezoidalIntegratorSpecinlinestatic
    + - + diff --git a/docs/structTrapezoidalIntegratorSpec.html b/docs/structTrapezoidalIntegratorSpec.html index 2311cc4..8ead93d 100644 --- a/docs/structTrapezoidalIntegratorSpec.html +++ b/docs/structTrapezoidalIntegratorSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    - + diff --git a/docs/structVectorSignalSpec-members.html b/docs/structVectorSignalSpec-members.html index c744670..5165cbb 100644 --- a/docs/structVectorSignalSpec-members.html +++ b/docs/structVectorSignalSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    VectorSignalSpec< T, d > Member List
    @@ -88,9 +109,12 @@ Type typedefVectorSignalSpec< T, d > ZeroType()VectorSignalSpec< T, d >inlinestatic + - + diff --git a/docs/structVectorSignalSpec.html b/docs/structVectorSignalSpec.html index c5c4dfa..6010eb8 100644 --- a/docs/structVectorSignalSpec.html +++ b/docs/structVectorSignalSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -176,9 +197,13 @@

    Signal.h

    +
    - + diff --git a/docs/structVectorSignalSpec.js b/docs/structVectorSignalSpec.js new file mode 100644 index 0000000..ff66fe0 --- /dev/null +++ b/docs/structVectorSignalSpec.js @@ -0,0 +1,4 @@ +var structVectorSignalSpec = +[ + [ "Type", "structVectorSignalSpec.html#ac21d15d01635665373eaf23b62f3d440", null ] +]; \ No newline at end of file diff --git a/docs/structVectorStateSignalSpec-members.html b/docs/structVectorStateSignalSpec-members.html index ba071bc..ffde5cf 100644 --- a/docs/structVectorStateSignalSpec-members.html +++ b/docs/structVectorStateSignalSpec-members.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    VectorStateSignalSpec< T, d > Member List
    @@ -88,9 +109,12 @@ Type typedefVectorStateSignalSpec< T, d > ZeroType()VectorStateSignalSpec< T, d >inlinestatic + - + diff --git a/docs/structVectorStateSignalSpec.html b/docs/structVectorStateSignalSpec.html index 82d17f5..1da5008 100644 --- a/docs/structVectorStateSignalSpec.html +++ b/docs/structVectorStateSignalSpec.html @@ -10,6 +10,10 @@ + + + + @@ -22,6 +26,7 @@ +
    @@ -55,6 +60,23 @@ /* @license-end */ +
    +
    + +
    +
    +
    + +
    -
    Public Types | @@ -176,9 +197,13 @@

    State.h

    +
    - + diff --git a/docs/structVectorStateSignalSpec.js b/docs/structVectorStateSignalSpec.js new file mode 100644 index 0000000..8bcb22b --- /dev/null +++ b/docs/structVectorStateSignalSpec.js @@ -0,0 +1,4 @@ +var structVectorStateSignalSpec = +[ + [ "Type", "structVectorStateSignalSpec.html#a3994948f467b39ca2dcd77d220a8cf3a", null ] +]; \ No newline at end of file diff --git a/docs/tabs.css b/docs/tabs.css index fe4854a..6c21d61 100644 --- a/docs/tabs.css +++ b/docs/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} \ No newline at end of file From 48360acc39f26e8b6cb3841c0e58815082955799 Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Fri, 12 Sep 2025 20:58:30 -0700 Subject: [PATCH 05/11] wip --- .github/_nixshell | 12 + README.md | 46 ++ docs/Integration_8h.html | 58 +- docs/Integration_8h.js | 6 +- docs/Integration_8h_source.html | 43 +- docs/Models_8h.html | 170 ++--- docs/Models_8h.js | 14 +- docs/Models_8h_source.html | 222 +++--- docs/Signal_8h.html | 342 ++++----- docs/Signal_8h.js | 28 +- docs/Signal_8h_source.html | 118 ++-- docs/Signals_8h.html | 18 +- docs/Signals_8h_source.html | 25 +- docs/State_8h.html | 655 +++++++++--------- docs/State_8h.js | 56 +- docs/State_8h_source.html | 125 ++-- docs/Utils_8h.html | 20 +- docs/Utils_8h.js | 2 +- docs/Utils_8h_source.html | 23 +- docs/annotated.html | 18 +- docs/classModel-members.html | 18 +- docs/classModel.html | 106 +-- docs/classSignal-members.html | 28 +- docs/classSignal.html | 182 ++--- docs/classSignal.js | 2 +- docs/classes.html | 18 +- docs/clipboard.js | 4 +- .../dir_661483514bb8dea267426763b771558e.html | 18 +- .../dir_d44c64559bbebec7f509842c48db8b23.html | 18 +- docs/doxygen.css | 70 +- docs/doxygen_crawl.html | 460 ++++++++---- docs/dynsections.js | 4 + docs/files.html | 18 +- docs/functions.html | 22 +- docs/functions_func.html | 18 +- docs/functions_rela.html | 18 +- docs/functions_type.html | 18 +- docs/functions_vars.html | 20 +- docs/globals.html | 126 ++-- docs/globals_defs.html | 18 +- docs/globals_enum.html | 18 +- docs/globals_eval.html | 18 +- docs/globals_func.html | 22 +- docs/globals_type.html | 122 ++-- docs/index.html | 20 +- docs/jquery.js | 190 ++++- docs/menu.js | 4 +- docs/namespacemembers.html | 18 +- docs/namespacemembers_func.html | 18 +- docs/namespaces.html | 18 +- docs/namespacesignal__utils.html | 28 +- docs/navtree.js | 59 +- docs/navtreedata.js | 6 +- docs/navtreeindex0.js | 112 +-- docs/navtreeindex1.js | 1 - docs/resize.js | 104 ++- docs/search/all_10.js | 19 +- docs/search/all_12.js | 60 +- docs/search/all_2.js | 4 +- docs/search/all_3.js | 6 +- docs/search/all_7.js | 9 +- docs/search/all_a.js | 16 +- docs/search/all_b.js | 4 +- docs/search/all_c.js | 6 +- docs/search/all_e.js | 8 +- docs/search/all_f.js | 129 +++- docs/search/classes_1.js | 5 +- docs/search/classes_2.js | 16 +- docs/search/classes_4.js | 69 +- docs/search/classes_5.js | 5 +- docs/search/related_0.js | 2 +- docs/search/typedefs_1.js | 2 +- docs/search/typedefs_5.js | 8 +- docs/search/typedefs_6.js | 26 +- docs/search/typedefs_7.js | 8 +- docs/search/typedefs_8.js | 60 +- docs/search/variables_7.js | 2 +- docs/structEulerIntegratorSpec-members.html | 18 +- docs/structEulerIntegratorSpec.html | 32 +- docs/structIntegrator-members.html | 18 +- docs/structIntegrator.html | 58 +- docs/structManifoldSignalSpec-members.html | 18 +- docs/structManifoldSignalSpec.html | 32 +- ...structManifoldStateSignalSpec-members.html | 18 +- docs/structManifoldStateSignalSpec.html | 32 +- docs/structRigidBodyDynamics3DOF-members.html | 18 +- docs/structRigidBodyDynamics3DOF.html | 66 +- docs/structRigidBodyDynamics6DOF-members.html | 18 +- docs/structRigidBodyDynamics6DOF.html | 66 +- docs/structRigidBodyParams1D-members.html | 18 +- docs/structRigidBodyParams1D.html | 22 +- docs/structRigidBodyParams2D-members.html | 18 +- docs/structRigidBodyParams2D.html | 22 +- docs/structRigidBodyParams3D-members.html | 18 +- docs/structRigidBodyParams3D.html | 22 +- .../structRotationalDynamics1DOF-members.html | 18 +- docs/structRotationalDynamics1DOF.html | 66 +- .../structRotationalDynamics3DOF-members.html | 18 +- docs/structRotationalDynamics3DOF.html | 66 +- docs/structScalarSignalSpec-members.html | 18 +- docs/structScalarSignalSpec.html | 32 +- docs/structScalarStateSignalSpec-members.html | 18 +- docs/structScalarStateSignalSpec.html | 32 +- docs/structSignal_1_1SignalDP-members.html | 18 +- docs/structSignal_1_1SignalDP.html | 24 +- docs/structSimpsonIntegratorSpec-members.html | 18 +- docs/structSimpsonIntegratorSpec.html | 32 +- docs/structState-members.html | 18 +- docs/structState.html | 64 +- ...ructTranslationalDynamicsBase-members.html | 18 +- docs/structTranslationalDynamicsBase.html | 54 +- ...ructTrapezoidalIntegratorSpec-members.html | 18 +- docs/structTrapezoidalIntegratorSpec.html | 32 +- docs/structVectorSignalSpec-members.html | 18 +- docs/structVectorSignalSpec.html | 32 +- docs/structVectorStateSignalSpec-members.html | 18 +- docs/structVectorStateSignalSpec.html | 32 +- docs/tabs.css | 2 +- 118 files changed, 3305 insertions(+), 2284 deletions(-) create mode 100644 .github/_nixshell diff --git a/.github/_nixshell b/.github/_nixshell new file mode 100644 index 0000000..4f76971 --- /dev/null +++ b/.github/_nixshell @@ -0,0 +1,12 @@ +let pkgs = import (builtins.fetchTarball + "https://github.com/goromal/anixpkgs/archive/refs/tags/v6.22.0.tar.gz") {}; +in with pkgs; mkShell { + nativeBuildInputs = [ + cmake + lcov + ]; + buildInputs = [ + boost + eigen + ]; +} diff --git a/README.md b/README.md index 340705d..8e9a2b0 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,52 @@ make # or make install By default, building will also build and run the unit tests, but this can be turned off with the CMake option `BUILD_TESTS`. +### Signals + +Manifold signal types: + +``` +SO3Signal x; +SE3Signal x; +``` + +### Integrators + +Euler integrator: + +```cpp +IntegrateEuler f; +f(SignalType &xInt, TangentSignalType x, double t, bool insertHistory = false); +f(SignalType &xInt, TangentSignalType x, double t, double dt, bool insertHistory = false); +``` + +Trapezoidal integrator: + +```cpp +IntegrateTrapezoidal f; +f(SignalType &xInt, TangentSignalType x, double t, bool insertHistory = false); +f(SignalType &xInt, TangentSignalType x, double t, double dt, bool insertHistory = false); +``` + +### System Models + +*Pending implementations:* + +- `TranslationalDynamics1DOF` + - Point mass system confined to a straight line. +- `TranslationalDynamics2DOF` + - Point mass system confined to a plane. +- `TranslationalDynamics3DOF` + - Point mass system in a 3-dimensional space. +- `RotationalDynamics1DOF` + - Single-axis rotating mass system fixed in space. +- `RotationalDynamics3DOF` + - Rotating mass fixed in 3D space. +- `RigidBodyDynamics3DOF` + - Rigid body system confined to a plane (unicycle model). +- `RigidBodyDynamics6DOF` + - Rigid body system in 3D space. + ## Docs Generation Generate updated docs in the `docs/` directory with diff --git a/docs/Integration_8h.html b/docs/Integration_8h.html index c2628f8..6e6e4b0 100644 --- a/docs/Integration_8h.html +++ b/docs/Integration_8h.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Integration.h File Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -127,17 +131,17 @@ - +

    Macros

    #define MAKE_INTEGRATOR(IntegratorName)   typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator;
    #define MAKE_INTEGRATOR(IntegratorName)
     
    - - - - - - + + + + + +

    Typedefs

    typedef Integrator< EulerIntegratorSpecEulerIntegrator
     
    typedef Integrator< TrapezoidalIntegratorSpecTrapezoidalIntegrator
     
    typedef Integrator< SimpsonIntegratorSpecSimpsonIntegrator
     
    typedef Integrator< EulerIntegratorSpecEulerIntegrator
     
    typedef Integrator< TrapezoidalIntegratorSpecTrapezoidalIntegrator
     
    typedef Integrator< SimpsonIntegratorSpecSimpsonIntegrator
     

    Macro Definition Documentation

    @@ -149,51 +153,53 @@

    #define MAKE_INTEGRATOR ( - IntegratorName) -    typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator; + IntegratorName) +

    - +Value:
    +
    Base type for all integrators.
    Definition Integration.h:18
    +

    Typedef Documentation

    - -

    ◆ EulerIntegrator

    + +

    ◆ EulerIntegrator

    - -

    ◆ SimpsonIntegrator

    + +

    ◆ SimpsonIntegrator

    - -

    ◆ TrapezoidalIntegrator

    + +

    ◆ TrapezoidalIntegrator

    @@ -206,7 +212,7 @@

    diff --git a/docs/Integration_8h.js b/docs/Integration_8h.js index d5a0355..bc66010 100644 --- a/docs/Integration_8h.js +++ b/docs/Integration_8h.js @@ -5,7 +5,7 @@ var Integration_8h = [ "TrapezoidalIntegratorSpec", "structTrapezoidalIntegratorSpec.html", null ], [ "SimpsonIntegratorSpec", "structSimpsonIntegratorSpec.html", null ], [ "MAKE_INTEGRATOR", "Integration_8h.html#ac22028f5bd0a2ecee786d53a348e4073", null ], - [ "EulerIntegrator", "Integration_8h.html#aa77358d3cb26c8b8992d44c2079a2a49", null ], - [ "SimpsonIntegrator", "Integration_8h.html#aa29ec69e4ec01e7fe15ed9bbc59fd93b", null ], - [ "TrapezoidalIntegrator", "Integration_8h.html#a95780a5b17730ea091c504cc3ab98b84", null ] + [ "EulerIntegrator", "Integration_8h.html#a0e36b47220a522ff9899d9624dd7c01b", null ], + [ "SimpsonIntegrator", "Integration_8h.html#a3ac408f7f30b4b1b5b218e5d48eca5ed", null ], + [ "TrapezoidalIntegrator", "Integration_8h.html#a123a7b32e66b7e1acc68d61a997abc96", null ] ]; \ No newline at end of file diff --git a/docs/Integration_8h_source.html b/docs/Integration_8h_source.html index 01e56b3..91a2215 100644 --- a/docs/Integration_8h_source.html +++ b/docs/Integration_8h_source.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Integration.h Source File @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,28 +42,28 @@
    - + + -
    @@ -109,7 +108,7 @@
    Go to the documentation of this file.
    1#pragma once
    2#include "signals/Signal.h"
    -
    3
    +
    3
    16template<typename IntegratorType>
    @@ -130,7 +129,7 @@
    39 return IntegratorType::integrate(xInt, x, t0, tf, insertIntoHistory);
    40 }
    -
    41
    +
    41
    52 template<typename BaseSignalSpec, typename TangentSignalSpec>
    @@ -160,7 +159,7 @@
    77};
    -
    78
    +
    78
    83{
    @@ -178,7 +177,7 @@
    107};
    -
    108
    +
    108
    113{
    @@ -196,7 +195,7 @@
    137};
    -
    138
    +
    138
    143{
    @@ -220,21 +219,21 @@
    171
    172#define MAKE_INTEGRATOR(IntegratorName) typedef Integrator<IntegratorName##IntegratorSpec> IntegratorName##Integrator;
    173
    - -
    175MAKE_INTEGRATOR(Trapezoidal)
    - + +
    175MAKE_INTEGRATOR(Trapezoidal)
    +
    #define MAKE_INTEGRATOR(IntegratorName)
    Definition Integration.h:172
    Definition Signal.h:38
    double t() const
    Definition Signal.h:105
    bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
    Definition Signal.h:174
    bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
    Definition Utils.h:11
    -
    Specification for numerically integrating a black box function using Euler's method.
    Definition Integration.h:83
    +
    Specification for numerically integrating a black box function using Euler's method.
    Definition Integration.h:83
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Euler integration implementation.
    Definition Integration.h:98
    Base type for all integrators.
    Definition Integration.h:18
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)
    Integrate a signal from the current time to the specified end time, chunked up into smaller integrati...
    Definition Integration.h:53
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)
    Integrate a signal from the current time to the specified end time.
    Definition Integration.h:28
    -
    Specification for numerically integrating a black box function using Simpson's method.
    Definition Integration.h:143
    +
    Specification for numerically integrating a black box function using Simpson's method.
    Definition Integration.h:143
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Simpson integration implementation.
    Definition Integration.h:158
    Specification for numerically integrating a black box function using the Trapezoidal method.
    Definition Integration.h:113
    static bool integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
    Trapezoidal integration implementation.
    Definition Integration.h:128
    @@ -244,7 +243,7 @@ diff --git a/docs/Models_8h.html b/docs/Models_8h.html index 10b90aa..3fa732b 100644 --- a/docs/Models_8h.html +++ b/docs/Models_8h.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Models.h File Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -149,49 +153,49 @@ - + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + +

    Typedefs

    template<typename T >
    template<typename T>
    using TranslationalDynamics1DOF
     
    template<typename T >
    template<typename T>
    using TranslationalDynamics2DOF
     
    template<typename T >
    template<typename T>
    using TranslationalDynamics3DOF
     
    template<typename T >
    using Translational1DOFModel = Model< TranslationalDynamics1DOF <T>>
     
    typedef Translational1DOFModel< double > Translational1DOFModeld
    template<typename T>
    using Translational1DOFModel = Model<TranslationalDynamics1DOF<T>>
     
    typedef Translational1DOFModel< double > Translational1DOFModeld
     
    template<typename T >
    using Translational2DOFModel = Model< TranslationalDynamics2DOF <T>>
     
    typedef Translational2DOFModel< double > Translational2DOFModeld
    template<typename T>
    using Translational2DOFModel = Model<TranslationalDynamics2DOF<T>>
     
    typedef Translational2DOFModel< double > Translational2DOFModeld
     
    template<typename T >
    using Translational3DOFModel = Model< TranslationalDynamics3DOF <T>>
     
    typedef Translational3DOFModel< double > Translational3DOFModeld
    template<typename T>
    using Translational3DOFModel = Model<TranslationalDynamics3DOF<T>>
     
    typedef Translational3DOFModel< double > Translational3DOFModeld
     
    template<typename T >
    using Rotational1DOFModel = Model< RotationalDynamics1DOF <T>>
     
    typedef Rotational1DOFModel< double > Rotational1DOFModeld
    template<typename T>
    using Rotational1DOFModel = Model<RotationalDynamics1DOF<T>>
     
    typedef Rotational1DOFModel< double > Rotational1DOFModeld
     
    template<typename T >
    using Rotational3DOFModel = Model< RotationalDynamics3DOF <T>>
     
    typedef Rotational3DOFModel< double > Rotational3DOFModeld
    template<typename T>
    using Rotational3DOFModel = Model<RotationalDynamics3DOF<T>>
     
    typedef Rotational3DOFModel< double > Rotational3DOFModeld
     
    template<typename T >
    using RigidBody3DOFModel = Model< RigidBodyDynamics3DOF <T>>
     
    typedef RigidBody3DOFModel< double > RigidBody3DOFModeld
    template<typename T>
    using RigidBody3DOFModel = Model<RigidBodyDynamics3DOF<T>>
     
    typedef RigidBody3DOFModel< double > RigidBody3DOFModeld
     
    template<typename T >
    using RigidBody6DOFModel = Model< RigidBodyDynamics6DOF <T>>
     
    typedef RigidBody6DOFModel< double > RigidBody6DOFModeld
    template<typename T>
    using RigidBody6DOFModel = Model<RigidBodyDynamics6DOF<T>>
     
    typedef RigidBody6DOFModel< double > RigidBody6DOFModeld
     

    Macro Definition Documentation

    @@ -204,12 +208,12 @@

    #define MAKE_MODEL ( - ModelBaseName, + ModelBaseName, - ModelDOF ) + ModelDOF )

    - -

    ◆ RigidBody6DOFModel

    + +

    ◆ RigidBody6DOFModel

    -template<typename T >
    +template<typename T>
    - +
    using RigidBody6DOFModel = Model< RigidBodyDynamics6DOF <T>>using RigidBody6DOFModel = Model<RigidBodyDynamics6DOF<T>>
    - -

    ◆ Rotational1DOFModel

    + +

    ◆ Rotational1DOFModel

    -template<typename T >
    +template<typename T>
    - +
    using Rotational1DOFModel = Model< RotationalDynamics1DOF <T>>using Rotational1DOFModel = Model<RotationalDynamics1DOF<T>>
    - -

    ◆ Rotational3DOFModel

    + +

    ◆ Rotational3DOFModel

    -template<typename T >
    +template<typename T>
    - +
    using Rotational3DOFModel = Model< RotationalDynamics3DOF <T>>using Rotational3DOFModel = Model<RotationalDynamics3DOF<T>>
    - -

    ◆ Translational1DOFModel

    + +

    ◆ Translational1DOFModel

    -template<typename T >
    +template<typename T>
    - +
    using Translational1DOFModel = Model< TranslationalDynamics1DOF <T>>using Translational1DOFModel = Model<TranslationalDynamics1DOF<T>>
    - -

    ◆ Translational2DOFModel

    + +

    ◆ Translational2DOFModel

    -template<typename T >
    +template<typename T>
    - +
    using Translational2DOFModel = Model< TranslationalDynamics2DOF <T>>using Translational2DOFModel = Model<TranslationalDynamics2DOF<T>>
    - -

    ◆ Translational3DOFModel

    + +

    ◆ Translational3DOFModel

    -template<typename T >
    +template<typename T>
    - +
    using Translational3DOFModel = Model< TranslationalDynamics3DOF <T>>using Translational3DOFModel = Model<TranslationalDynamics3DOF<T>>
    @@ -437,7 +441,7 @@

    -template<typename T >
    +template<typename T>
    @@ -445,8 +449,8 @@

    Initial value:
    -
    -
    Definition Signal.h:38
    + +
    Signal< ScalarStateSignalSpec< T >, ScalarStateSignalSpec< T > > ScalarStateSignal
    Definition State.h:213
    Parameters for a 1D rigid body model.
    Definition Models.h:165
    Base class for defining the dynamics for 1D, 2D, and 3D point masses.
    Definition Models.h:236
    @@ -458,7 +462,7 @@

    -template<typename T >
    +template<typename T>

    using TranslationalDynamics1DOF
    @@ -466,7 +470,8 @@

    Initial value: @@ -477,7 +482,7 @@

    -template<typename T >
    +template<typename T>

    using TranslationalDynamics2DOF
    @@ -485,7 +490,8 @@

    Initial value: @@ -496,7 +502,7 @@

    diff --git a/docs/Models_8h.js b/docs/Models_8h.js index 7435468..e54d3a9 100644 --- a/docs/Models_8h.js +++ b/docs/Models_8h.js @@ -10,19 +10,19 @@ var Models_8h = [ "RigidBodyDynamics3DOF< T >", "structRigidBodyDynamics3DOF.html", "structRigidBodyDynamics3DOF" ], [ "RigidBodyDynamics6DOF< T >", "structRigidBodyDynamics6DOF.html", "structRigidBodyDynamics6DOF" ], [ "MAKE_MODEL", "Models_8h.html#a01637abb86bd3009fcff2cebc8a8735a", null ], - [ "RigidBody3DOFModel", "Models_8h.html#a253b3866118f6e70cfc4f08b471c2975", null ], + [ "RigidBody3DOFModel", "Models_8h.html#ab084e172ef604e5975b5ff17e33d06ce", null ], [ "RigidBody3DOFModeld", "Models_8h.html#a46f2319cb159c02e4eb4801d850d54d9", null ], - [ "RigidBody6DOFModel", "Models_8h.html#ac6b34f1aa0a10dcb6e9fda4a2814a9b3", null ], + [ "RigidBody6DOFModel", "Models_8h.html#a8f7d8c7063cb9c51d2bb794931db3a34", null ], [ "RigidBody6DOFModeld", "Models_8h.html#a40c2fc8d427c1bd6dfee02295ccb3cb6", null ], - [ "Rotational1DOFModel", "Models_8h.html#a44917fd68b589ce4fc82e69e00c41201", null ], + [ "Rotational1DOFModel", "Models_8h.html#abc1d5223da3343a9537cc0a6f5abd239", null ], [ "Rotational1DOFModeld", "Models_8h.html#af9b104589a404874af160185cf8a725c", null ], - [ "Rotational3DOFModel", "Models_8h.html#ad5282fd410476dbdd8381772a38ac2f1", null ], + [ "Rotational3DOFModel", "Models_8h.html#a287ab38fdf9b2634bf844a17719b9115", null ], [ "Rotational3DOFModeld", "Models_8h.html#a51e40a2924a4b6ff134878368461bb1a", null ], - [ "Translational1DOFModel", "Models_8h.html#a06f4823dd2b571a8718ccad09ce44fe7", null ], + [ "Translational1DOFModel", "Models_8h.html#af9ad4901a092a7e81f8b092d1dbcf5f5", null ], [ "Translational1DOFModeld", "Models_8h.html#ab405c6c48aa770f74c7e942302b956c5", null ], - [ "Translational2DOFModel", "Models_8h.html#aa8b7fa1f2cfd2453d95d80ce49abd8fc", null ], + [ "Translational2DOFModel", "Models_8h.html#aee5681b9331f5514938a77680e9e1162", null ], [ "Translational2DOFModeld", "Models_8h.html#a7768cd6b33a5d94a677357664052d096", null ], - [ "Translational3DOFModel", "Models_8h.html#aae658b45855be04ff99456f612008b96", null ], + [ "Translational3DOFModel", "Models_8h.html#a3d0d9bd06d48c1d0022090b040895a62", null ], [ "Translational3DOFModeld", "Models_8h.html#a3c501b1f5d946eb9aa36b92d2ec611c5", null ], [ "TranslationalDynamics1DOF", "Models_8h.html#aac436ed3df206f07f93110e3daffe773", null ], [ "TranslationalDynamics2DOF", "Models_8h.html#ae3889fdff8dd169aef62fcdf6340e0e1", null ], diff --git a/docs/Models_8h_source.html b/docs/Models_8h_source.html index dffeaeb..0da6b03 100644 --- a/docs/Models_8h_source.html +++ b/docs/Models_8h_source.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Models.h Source File @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,28 +42,28 @@

    using TranslationalDynamics3DOF

    - + + -
    @@ -113,17 +112,17 @@
    5
    6using namespace Eigen;
    -
    7
    +
    7
    23template<typename DynamicsType>
    -
    24class Model
    +
    24class Model
    25{
    26public:
    27 using InputSignalType = typename DynamicsType::InputSignalType;
    28 using StateDotSignalType = typename DynamicsType::StateDotSignalType;
    29 using StateSignalType = typename DynamicsType::StateSignalType;
    30 using ParamsType = typename DynamicsType::ParamsType;
    -
    31
    +
    31
    40
    @@ -133,21 +132,21 @@
    43 reset();
    44 }
    -
    45
    +
    45
    51 void setParams(const ParamsType& params)
    52 {
    53 params_ = params;
    54 }
    -
    55
    +
    55
    59 bool hasParams()
    60 {
    61 return params_.has_value();
    62 }
    -
    63
    +
    63
    67 void reset()
    68 {
    @@ -155,14 +154,14 @@
    70 xdot.reset();
    71 }
    -
    72
    +
    72
    76 double t() const
    77 {
    78 return x.t();
    79 }
    -
    80
    +
    80
    89 template<typename IntegratorType>
    @@ -189,7 +188,7 @@
    111 return true;
    112 }
    -
    113
    +
    113
    124 template<typename IntegratorType>
    @@ -227,18 +226,18 @@
    156 std::optional<ParamsType> params_;
    157};
    -
    158
    +
    158
    - +
    165{
    166 RigidBodyParams1D() : m(1), g(0) {}
    170 double m;
    176 double g;
    177};
    -
    178
    +
    178
    - +
    185{
    186 RigidBodyParams2D() : m(1), J(1), g(Vector2d::Zero()) {}
    190 double m;
    @@ -246,9 +245,9 @@
    202 Vector2d g;
    203};
    -
    204
    +
    204
    - +
    211{
    212 RigidBodyParams3D() : m(1), J(Matrix3d::Identity()), g(Vector3d::Zero()) {}
    216 double m;
    @@ -256,7 +255,7 @@
    228 Vector3d g;
    229};
    -
    230
    +
    230
    234template<typename IST, typename SST, typename SDST, size_t d, typename PT>
    @@ -271,7 +270,7 @@
    244 using StateDotDotType = typename StateDotSignalType::TangentType;
    245
    246 using ParamsType = PT;
    -
    247
    +
    247
    259 static bool update(StateDotSignalType& xdot,
    260 const StateSignalType& x,
    @@ -287,15 +286,15 @@
    270
    271 StateDotType xdot_k;
    272 xdot_k.pose = x_k.twist;
    -
    273 xdot_k.twist = -params.g + u_k / params.m;
    +
    273 xdot_k.twist = -params.g + u_k / params.m;
    274
    275 if (calculateXddot)
    276 {
    -
    277 return xdot.update(tf, xdot_k, insertIntoHistory);
    +
    277 return xdot.update(tf, xdot_k, insertIntoHistory);
    278 }
    279 else
    280 {
    -
    281 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    +
    281 return xdot.update(tf, xdot_k, StateDotDotType::identity(), insertIntoHistory);
    282 }
    283 }
    @@ -303,39 +302,39 @@
    285
    286template<typename T>
    - - + +
    289
    290template<typename T>
    - - + +
    293
    294template<typename T>
    - - -
    297
    + + +
    297
    301template<typename T>
    303{
    - - - + + +
    307
    312
    - -
    314
    + +
    314
    -
    326 static bool update(StateDotSignalType& xdot,
    -
    327 const StateSignalType& x,
    -
    328 const InputSignalType& u,
    +
    326 static bool update(StateDotSignalType& xdot,
    +
    327 const StateSignalType& x,
    +
    328 const InputSignalType& u,
    329 const double& t0,
    330 const double& tf,
    -
    331 const ParamsType& params,
    +
    331 const ParamsType& params,
    332 const bool& insertIntoHistory = false,
    333 const bool& calculateXddot = false)
    334 {
    @@ -358,29 +357,29 @@
    351};
    -
    352
    +
    352
    356template<typename T>
    358{
    - - - + + +
    362
    367
    - -
    369
    + +
    369
    -
    381 static bool update(StateDotSignalType& xdot,
    -
    382 const StateSignalType& x,
    -
    383 const InputSignalType& u,
    +
    381 static bool update(StateDotSignalType& xdot,
    +
    382 const StateSignalType& x,
    +
    383 const InputSignalType& u,
    384 const double& t0,
    385 const double& tf,
    -
    386 const ParamsType& params,
    +
    386 const ParamsType& params,
    387 const bool& insertIntoHistory = false,
    388 const bool& calculateXddot = false)
    389 {
    @@ -403,29 +402,29 @@
    406};
    -
    407
    +
    407
    411template<typename T>
    413{
    - - - + + +
    417
    422
    - -
    424
    + +
    424
    -
    436 static bool update(StateDotSignalType& xdot,
    -
    437 const StateSignalType& x,
    -
    438 const InputSignalType& u,
    +
    436 static bool update(StateDotSignalType& xdot,
    +
    437 const StateSignalType& x,
    +
    438 const InputSignalType& u,
    439 const double& t0,
    440 const double& tf,
    -
    441 const ParamsType& params,
    +
    441 const ParamsType& params,
    442 const bool& insertIntoHistory = false,
    443 const bool& calculateXddot = false)
    444 {
    @@ -451,29 +450,29 @@
    464};
    -
    465
    +
    465
    469template<typename T>
    471{
    - - - + + +
    475
    480
    - -
    482
    + +
    482
    -
    494 static bool update(StateDotSignalType& xdot,
    -
    495 const StateSignalType& x,
    -
    496 const InputSignalType& u,
    +
    494 static bool update(StateDotSignalType& xdot,
    +
    495 const StateSignalType& x,
    +
    496 const InputSignalType& u,
    497 const double& t0,
    498 const double& tf,
    -
    499 const ParamsType& params,
    +
    499 const ParamsType& params,
    500 const bool& insertIntoHistory = false,
    501 const bool& calculateXddot = false)
    502 {
    @@ -514,47 +513,68 @@
    534 typedef ModelBaseName##ModelDOF##Model<double> ModelBaseName##ModelDOF##Modeld;
    535
    -
    536MAKE_MODEL(Translational, 1DOF)
    -
    537MAKE_MODEL(Translational, 2DOF)
    -
    538MAKE_MODEL(Translational, 3DOF)
    -
    539MAKE_MODEL(Rotational, 1DOF)
    -
    540MAKE_MODEL(Rotational, 3DOF)
    -
    541MAKE_MODEL(RigidBody, 3DOF)
    -
    542MAKE_MODEL(RigidBody, 6DOF)
    +
    536MAKE_MODEL(Translational, 1DOF)
    +
    537MAKE_MODEL(Translational, 2DOF)
    +
    538MAKE_MODEL(Translational, 3DOF)
    +
    539MAKE_MODEL(Rotational, 1DOF)
    +
    540MAKE_MODEL(Rotational, 3DOF)
    +
    541MAKE_MODEL(RigidBody, 3DOF)
    +
    542MAKE_MODEL(RigidBody, 6DOF)
    #define MAKE_MODEL(ModelBaseName, ModelDOF)
    Definition Models.h:531
    +
    TranslationalDynamicsBase< ScalarSignal< T >, ScalarStateSignal< T >, ScalarStateSignal< T >, 1, RigidBodyParams1D > TranslationalDynamics1DOF
    Definition Models.h:287
    +
    TranslationalDynamicsBase< Vector3Signal< T >, Vector3StateSignal< T >, Vector3StateSignal< T >, 3, RigidBodyParams3D > TranslationalDynamics3DOF
    Definition Models.h:295
    +
    TranslationalDynamicsBase< Vector2Signal< T >, Vector2StateSignal< T >, Vector2StateSignal< T >, 2, RigidBodyParams2D > TranslationalDynamics2DOF
    Definition Models.h:291
    +
    VectorSignal< T, 6 > Vector6Signal
    Definition Signal.h:706
    +
    VectorSignal< T, 1 > Vector1Signal
    Definition Signal.h:701
    +
    VectorSignal< T, 3 > Vector3Signal
    Definition Signal.h:703
    -
    Base type for all model simulators.
    Definition Models.h:25
    +
    ManifoldStateSignal< T, SO3< T >, 4, 3 > SO3StateSignal
    Definition State.h:274
    +
    VectorStateSignal< T, 6 > Vector6StateSignal
    Definition State.h:268
    +
    ManifoldStateSignal< T, SE3< T >, 7, 6 > SE3StateSignal
    Definition State.h:276
    +
    ManifoldStateSignal< T, SO2< T >, 2, 1 > SO2StateSignal
    Definition State.h:273
    +
    Signal< ScalarStateSignalSpec< T >, ScalarStateSignalSpec< T > > ScalarStateSignal
    Definition State.h:213
    +
    VectorStateSignal< T, 2 > Vector2StateSignal
    Definition State.h:264
    +
    VectorStateSignal< T, 1 > Vector1StateSignal
    Definition State.h:263
    +
    VectorStateSignal< T, 3 > Vector3StateSignal
    Definition State.h:265
    +
    ManifoldStateSignal< T, SE2< T >, 4, 3 > SE2StateSignal
    Definition State.h:275
    Model()
    Definition Models.h:41
    -
    bool hasParams()
    Verify that the model has parameters explicity set by setParams().
    Definition Models.h:59
    +
    bool hasParams()
    Definition Models.h:59
    typename DynamicsType::StateSignalType StateSignalType
    Definition Models.h:29
    -
    double t() const
    Get the current simulation time.
    Definition Models.h:76
    +
    double t() const
    Definition Models.h:76
    void reset()
    Zero out the model state and derivative variables and reset simulation time to zero.
    Definition Models.h:67
    typename DynamicsType::StateDotSignalType StateDotSignalType
    Definition Models.h:28
    -
    void setParams(const ParamsType &params)
    Initialize the model with any required parameters.
    Definition Models.h:51
    -
    StateDotSignalType xdot
    Time derivative of the model state signal.
    Definition Models.h:39
    -
    StateSignalType x
    Model state signal.
    Definition Models.h:35
    -
    bool simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Simulate the system response to an input over a specified time interval, chunked up into smaller inte...
    Definition Models.h:125
    -
    bool simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Simulate the system response to an input over a specified time interval.
    Definition Models.h:90
    +
    void setParams(const ParamsType &params)
    Definition Models.h:51
    +
    StateDotSignalType xdot
    Definition Models.h:39
    +
    StateSignalType x
    Definition Models.h:35
    +
    bool simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:125
    +
    bool simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Definition Models.h:90
    typename DynamicsType::InputSignalType InputSignalType
    Definition Models.h:27
    typename DynamicsType::ParamsType ParamsType
    Definition Models.h:30
    -
    Definition Signal.h:38
    -
    typename BaseSignalSpec::Type BaseType
    Definition Signal.h:40
    -
    typename TangentSignalSpec::Type TangentType
    Definition Signal.h:41
    +
    typename VectorSignalSpec< T, d >::Type BaseType
    Definition Signal.h:40
    +
    typename VectorStateSignalSpec< T, d >::Type TangentType
    Definition Signal.h:41
    bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
    Definition Signal.h:174
    bool getTimeDelta(double &dt, const double &t0, const double &tf, const double &dt_max=std::numeric_limits< double >::max())
    Definition Utils.h:11
    -
    Definition of the dynamics for planar motion of a mass that's allowed to rotate.
    Definition Models.h:413
    +
    Definition of the dynamics for planar motion of a mass that's allowed to rotate.
    Definition Models.h:413
    +
    SE2StateSignal< T > StateSignalType
    Definition Models.h:415
    +
    Vector3StateSignal< T > StateDotSignalType
    Definition Models.h:416
    +
    Vector3Signal< T > InputSignalType
    Definition Models.h:414
    typename StateSignalType::BaseType StateType
    Definition Models.h:419
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:421
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:420
    typename InputSignalType::BaseType InputType
    Definition Models.h:418
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:436
    +
    RigidBodyParams2D ParamsType
    Definition Models.h:423
    Definition of the dynamics for a 3D rigid body that can rotate about any axis.
    Definition Models.h:471
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:479
    +
    Vector6Signal< T > InputSignalType
    Definition Models.h:472
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:478
    typename InputSignalType::BaseType InputType
    Definition Models.h:476
    +
    RigidBodyParams3D ParamsType
    Definition Models.h:481
    +
    SE3StateSignal< T > StateSignalType
    Definition Models.h:473
    typename StateSignalType::BaseType StateType
    Definition Models.h:477
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:494
    +
    Vector6StateSignal< T > StateDotSignalType
    Definition Models.h:474
    Parameters for a 1D rigid body model.
    Definition Models.h:165
    double m
    Model mass.
    Definition Models.h:170
    double g
    Gravitational constant.
    Definition Models.h:176
    @@ -570,14 +590,22 @@
    RigidBodyParams3D()
    Definition Models.h:212
    double m
    Model mass.
    Definition Models.h:216
    Definition of the dynamics for planar rotation-only motion of a mass.
    Definition Models.h:303
    +
    Vector1StateSignal< T > StateDotSignalType
    Definition Models.h:306
    +
    RigidBodyParams2D ParamsType
    Definition Models.h:313
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:326
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:311
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:310
    +
    Vector1Signal< T > InputSignalType
    Definition Models.h:304
    typename StateSignalType::BaseType StateType
    Definition Models.h:309
    +
    SO2StateSignal< T > StateSignalType
    Definition Models.h:305
    typename InputSignalType::BaseType InputType
    Definition Models.h:308
    Definition of the dynamics for 3D rotation-only motion of a mass.
    Definition Models.h:358
    +
    SO3StateSignal< T > StateSignalType
    Definition Models.h:360
    +
    RigidBodyParams3D ParamsType
    Definition Models.h:368
    typename StateDotSignalType::BaseType StateDotType
    Definition Models.h:365
    +
    Vector3StateSignal< T > StateDotSignalType
    Definition Models.h:361
    typename StateDotSignalType::TangentType StateDotDotType
    Definition Models.h:366
    +
    Vector3Signal< T > InputSignalType
    Definition Models.h:359
    typename StateSignalType::BaseType StateType
    Definition Models.h:364
    typename InputSignalType::BaseType InputType
    Definition Models.h:363
    static bool update(StateDotSignalType &xdot, const StateSignalType &x, const InputSignalType &u, const double &t0, const double &tf, const ParamsType &params, const bool &insertIntoHistory=false, const bool &calculateXddot=false)
    Update a provided state time derivative given an input and time interval.
    Definition Models.h:381
    @@ -597,7 +625,7 @@ diff --git a/docs/Signal_8h.html b/docs/Signal_8h.html index b407a64..fe1d507 100644 --- a/docs/Signal_8h.html +++ b/docs/Signal_8h.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Signal.h File Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -141,86 +145,86 @@ - + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + +

    Typedefs

    template<typename T >
    template<typename T>
    using ScalarSignal = Signal<ScalarSignalSpec<T>, ScalarSignalSpec<T>>
     
    template<typename T , size_t d>
    template<typename T, size_t d>
    using VectorSignal = Signal<VectorSignalSpec<T, d>, VectorSignalSpec<T, d>>
     
    template<typename T , typename ManifoldType , size_t d>
    template<typename T, typename ManifoldType, size_t d>
    using ManifoldSignal = Signal<ManifoldSignalSpec<ManifoldType>, VectorSignalSpec<T, d>>
     
    typedef ScalarSignal< double > ScalardSignal
     
    template<typename T >
    using Vector1Signal = VectorSignal<T, 1 >
     
    typedef Vector1Signal< double > Vector1dSignal
    template<typename T>
    using Vector1Signal = VectorSignal<T, 1>
     
    typedef Vector1Signal< double > Vector1dSignal
     
    template<typename T >
    using Vector2Signal = VectorSignal<T, 2 >
     
    typedef Vector2Signal< double > Vector2dSignal
    template<typename T>
    using Vector2Signal = VectorSignal<T, 2>
     
    typedef Vector2Signal< double > Vector2dSignal
     
    template<typename T >
    using Vector3Signal = VectorSignal<T, 3 >
     
    typedef Vector3Signal< double > Vector3dSignal
    template<typename T>
    using Vector3Signal = VectorSignal<T, 3>
     
    typedef Vector3Signal< double > Vector3dSignal
     
    template<typename T >
    using Vector4Signal = VectorSignal<T, 4 >
     
    typedef Vector4Signal< double > Vector4dSignal
    template<typename T>
    using Vector4Signal = VectorSignal<T, 4>
     
    typedef Vector4Signal< double > Vector4dSignal
     
    template<typename T >
    using Vector5Signal = VectorSignal<T, 5 >
     
    typedef Vector5Signal< double > Vector5dSignal
    template<typename T>
    using Vector5Signal = VectorSignal<T, 5>
     
    typedef Vector5Signal< double > Vector5dSignal
     
    template<typename T >
    using Vector6Signal = VectorSignal<T, 6 >
     
    typedef Vector6Signal< double > Vector6dSignal
    template<typename T>
    using Vector6Signal = VectorSignal<T, 6>
     
    typedef Vector6Signal< double > Vector6dSignal
     
    template<typename T >
    using Vector7Signal = VectorSignal<T, 7 >
     
    typedef Vector7Signal< double > Vector7dSignal
    template<typename T>
    using Vector7Signal = VectorSignal<T, 7>
     
    typedef Vector7Signal< double > Vector7dSignal
     
    template<typename T >
    using Vector8Signal = VectorSignal<T, 8 >
     
    typedef Vector8Signal< double > Vector8dSignal
    template<typename T>
    using Vector8Signal = VectorSignal<T, 8>
     
    typedef Vector8Signal< double > Vector8dSignal
     
    template<typename T >
    using Vector9Signal = VectorSignal<T, 9 >
     
    typedef Vector9Signal< double > Vector9dSignal
    template<typename T>
    using Vector9Signal = VectorSignal<T, 9>
     
    typedef Vector9Signal< double > Vector9dSignal
     
    template<typename T >
    using Vector10Signal = VectorSignal<T, 10 >
     
    typedef Vector10Signal< double > Vector10dSignal
    template<typename T>
    using Vector10Signal = VectorSignal<T, 10>
     
    typedef Vector10Signal< double > Vector10dSignal
     
    template<typename T >
    using SO2Signal = ManifoldSignal<T, SO2 <T>, 1 >
     
    typedef SO2Signal< double > SO2dSignal
    template<typename T>
    using SO2Signal = ManifoldSignal<T, SO2<T>, 1>
     
    typedef SO2Signal< double > SO2dSignal
     
    template<typename T >
    using SO3Signal = ManifoldSignal<T, SO3 <T>, 3 >
     
    typedef SO3Signal< double > SO3dSignal
    template<typename T>
    using SO3Signal = ManifoldSignal<T, SO3<T>, 3>
     
    typedef SO3Signal< double > SO3dSignal
     
    template<typename T >
    using SE2Signal = ManifoldSignal<T, SE2 <T>, 3 >
     
    typedef SE2Signal< double > SE2dSignal
    template<typename T>
    using SE2Signal = ManifoldSignal<T, SE2<T>, 3>
     
    typedef SE2Signal< double > SE2dSignal
     
    template<typename T >
    using SE3Signal = ManifoldSignal<T, SE3 <T>, 6 >
     
    typedef SE3Signal< double > SE3dSignal
    template<typename T>
    using SE3Signal = ManifoldSignal<T, SE3<T>, 6>
     
    typedef SE3Signal< double > SE3dSignal
     

    @@ -243,25 +247,25 @@

    - + - + - + - + - + - + - +

    Functions

    template<typename BaseSignalSpec , typename TangentSignalSpec >
    template<typename BaseSignalSpec, typename TangentSignalSpec>
    Signal< BaseSignalSpec, TangentSignalSpec > operator+ (const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< TangentSignalSpec, TangentSignalSpec > &r)
     
    template<typename BaseSignalSpec , typename TangentSignalSpec >
    template<typename BaseSignalSpec, typename TangentSignalSpec>
    Signal< TangentSignalSpec, TangentSignalSpec > operator- (const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r)
     
    template<typename BaseSignalSpec , typename TangentSignalSpec >
    template<typename BaseSignalSpec, typename TangentSignalSpec>
    Signal< BaseSignalSpec, TangentSignalSpec > operator* (const double &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r)
     
    template<typename BaseSignalSpec , typename TangentSignalSpec >
    template<typename BaseSignalSpec, typename TangentSignalSpec>
    Signal< BaseSignalSpec, TangentSignalSpec > operator* (const Signal< BaseSignalSpec, TangentSignalSpec > &l, const double &r)
     
    template<typename T >
    template<typename T>
    std::ostream & operator<< (std::ostream &os, const ScalarSignal< T > &x)
     
    template<typename T , size_t d>
    template<typename T, size_t d>
    std::ostream & operator<< (std::ostream &os, const VectorSignal< T, d > &x)
     
    template<typename T , typename ManifoldType , size_t d>
    template<typename T, typename ManifoldType, size_t d>
    std::ostream & operator<< (std::ostream &os, const ManifoldSignal< T, ManifoldType, d > &x)
     
    @@ -275,18 +279,19 @@

    #define MAKE_MANIF_SIGNAL ( - Manif, + Manif, - Dimension ) + Dimension )

    Value:
    template<typename T> \
    -
    +
    using Manif##Signal = ManifoldSignal<T, Manif<T>, Dimension>; \
    typedef Manif##Signal<double> Manif##dSignal;
    +
    Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > > ManifoldSignal
    Definition Signal.h:681
    Definition Signal.h:38
    @@ -300,14 +305,15 @@

    #define MAKE_VECTOR_SIGNAL ( - Dimension) + Dimension)

    Value:
    template<typename T> \
    -
    +
    using Vector##Dimension##Signal = VectorSignal<T, Dimension>; \
    typedef Vector##Dimension##Signal<double> Vector##Dimension##dSignal;
    +
    Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > > VectorSignal
    Definition Signal.h:671
    @@ -318,7 +324,7 @@

    -template<typename T , typename ManifoldType , size_t d>
    +template<typename T, typename ManifoldType, size_t d>
    @@ -348,7 +354,7 @@

    -template<typename T >
    +template<typename T>

    using ManifoldSignal = Signal<ManifoldSignalSpec<ManifoldType>, VectorSignalSpec<T, d>>
    @@ -365,23 +371,23 @@

    using ScalarSignal = Signal<ScalarSignalSpec<T>, ScalarSignalSpec<T>>
    - +
    typedef SE2Signal<double> SE2dSignaltypedef SE2Signal<double> SE2dSignal

    - -

    ◆ SE2Signal

    + +

    ◆ SE2Signal

    -template<typename T >
    +template<typename T>
    - +
    using SE2Signal = ManifoldSignal<T, SE2 <T>, 3 >using SE2Signal = ManifoldSignal<T, SE2<T>, 3>
    - -

    ◆ SE3Signal

    + +

    ◆ SE3Signal

    -template<typename T >
    +template<typename T>
    - +
    using SE3Signal = ManifoldSignal<T, SE3 <T>, 6 >using SE3Signal = ManifoldSignal<T, SE3<T>, 6>
    - -

    ◆ SO2Signal

    + +

    ◆ SO2Signal

    -template<typename T >
    +template<typename T>
    - +
    using SO2Signal = ManifoldSignal<T, SO2 <T>, 1 >using SO2Signal = ManifoldSignal<T, SO2<T>, 1>
    - -

    ◆ SO3Signal

    + +

    ◆ SO3Signal

    -template<typename T >
    +template<typename T>
    - +
    using SO3Signal = ManifoldSignal<T, SO3 <T>, 3 >using SO3Signal = ManifoldSignal<T, SO3<T>, 3>
    - -

    ◆ Vector10Signal

    + +

    ◆ Vector10Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector10Signal = VectorSignal<T, 10 >using Vector10Signal = VectorSignal<T, 10>
    - -

    ◆ Vector1Signal

    + +

    ◆ Vector1Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector1Signal = VectorSignal<T, 1 >using Vector1Signal = VectorSignal<T, 1>
    - -

    ◆ Vector2Signal

    + +

    ◆ Vector2Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector2Signal = VectorSignal<T, 2 >using Vector2Signal = VectorSignal<T, 2>
    - -

    ◆ Vector3Signal

    + +

    ◆ Vector3Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector3Signal = VectorSignal<T, 3 >using Vector3Signal = VectorSignal<T, 3>
    - -

    ◆ Vector4Signal

    + +

    ◆ Vector4Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector4Signal = VectorSignal<T, 4 >using Vector4Signal = VectorSignal<T, 4>
    - -

    ◆ Vector5Signal

    + +

    ◆ Vector5Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector5Signal = VectorSignal<T, 5 >using Vector5Signal = VectorSignal<T, 5>
    - -

    ◆ Vector6Signal

    + +

    ◆ Vector6Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector6Signal = VectorSignal<T, 6 >using Vector6Signal = VectorSignal<T, 6>
    - -

    ◆ Vector7Signal

    + +

    ◆ Vector7Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector7Signal = VectorSignal<T, 7 >using Vector7Signal = VectorSignal<T, 7>
    - -

    ◆ Vector8Signal

    + +

    ◆ Vector8Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector8Signal = VectorSignal<T, 8 >using Vector8Signal = VectorSignal<T, 8>
    - -

    ◆ Vector9Signal

    + +

    ◆ Vector9Signal

    -template<typename T >
    +template<typename T>
    - +
    using Vector9Signal = VectorSignal<T, 9 >using Vector9Signal = VectorSignal<T, 9>
    @@ -784,7 +790,7 @@

    -template<typename T , size_t d>
    +template<typename T, size_t d>
    @@ -860,12 +866,12 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    using VectorSignal = Signal<VectorSignalSpec<T, d>, VectorSignalSpec<T, d>>
    - + @@ -883,12 +889,12 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    Signal< BaseSignalSpec, TangentSignalSpec > operator* (const double & l, const double & l,
    - + @@ -906,12 +912,12 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    Signal< BaseSignalSpec, TangentSignalSpec > operator* (const Signal< BaseSignalSpec, TangentSignalSpec > & l, const Signal< BaseSignalSpec, TangentSignalSpec > & l,
    - + @@ -929,12 +935,12 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    Signal< BaseSignalSpec, TangentSignalSpec > operator+ (const Signal< BaseSignalSpec, TangentSignalSpec > & l, const Signal< BaseSignalSpec, TangentSignalSpec > & l,
    - + @@ -952,7 +958,7 @@

    -template<typename T , typename ManifoldType , size_t d>
    +template<typename T, typename ManifoldType, size_t d>

    Signal< TangentSignalSpec, TangentSignalSpec > operator- (const Signal< BaseSignalSpec, TangentSignalSpec > & l, const Signal< BaseSignalSpec, TangentSignalSpec > & l,
    - + @@ -970,7 +976,7 @@

    -inline +inline

    @@ -960,7 +966,7 @@

    std::ostream & operator<<

    (std::ostream & os, std::ostream & os,

    @@ -1045,7 +1051,7 @@

    diff --git a/docs/Signal_8h.js b/docs/Signal_8h.js index d2f5430..bac5337 100644 --- a/docs/Signal_8h.js +++ b/docs/Signal_8h.js @@ -11,33 +11,33 @@ var Signal_8h = [ "ScalardSignal", "Signal_8h.html#a5d3a7fde60e049b3fb16e62c397585a0", null ], [ "ScalarSignal", "Signal_8h.html#a19e9e3fdf9dac462c6fb79ee572d2b4c", null ], [ "SE2dSignal", "Signal_8h.html#a27317de3cebe688fdf9b1f89e8d749ea", null ], - [ "SE2Signal", "Signal_8h.html#ad643119cf3272132185b21288c55d408", null ], + [ "SE2Signal", "Signal_8h.html#a5c686d1c1e780f578c950182943ecf41", null ], [ "SE3dSignal", "Signal_8h.html#a13875f09fcdcc6dd114766bacc38f01b", null ], - [ "SE3Signal", "Signal_8h.html#a765b6ae13329153a6b634a059a9402a3", null ], + [ "SE3Signal", "Signal_8h.html#ab87588076a67398d28c7f77a2103470b", null ], [ "SO2dSignal", "Signal_8h.html#a43a8b3bb4241f080c75114c98502e21b", null ], - [ "SO2Signal", "Signal_8h.html#ac36c4f295327639b98a801301e288845", null ], + [ "SO2Signal", "Signal_8h.html#acbd9dbde916447b024121b565ee6ea96", null ], [ "SO3dSignal", "Signal_8h.html#a1fbce3445fc6d54d3dfc2aa95fdcc37f", null ], - [ "SO3Signal", "Signal_8h.html#afca3faa089af1abf0b808bcb6be5e740", null ], + [ "SO3Signal", "Signal_8h.html#a25f5e910566ad4b1b610a8eebb96274d", null ], [ "Vector10dSignal", "Signal_8h.html#a75b25f1facc38a02d21c155ec05655cc", null ], - [ "Vector10Signal", "Signal_8h.html#ae39387d9fa8cf1afc6a66334312b3e68", null ], + [ "Vector10Signal", "Signal_8h.html#acda8904322955c5f969f290bf1a42595", null ], [ "Vector1dSignal", "Signal_8h.html#a22bc2b41e336fe6237cfa41ac7b57d0b", null ], - [ "Vector1Signal", "Signal_8h.html#a655827b9e6d4727905cbaae6a996df8f", null ], + [ "Vector1Signal", "Signal_8h.html#a532b7bae92d23faa5962b50fab59ee1a", null ], [ "Vector2dSignal", "Signal_8h.html#a718e737386d2321f3e31df01ffe2fd61", null ], - [ "Vector2Signal", "Signal_8h.html#af705b24c209ce15ac1b412cbe7e52615", null ], + [ "Vector2Signal", "Signal_8h.html#af4c2088cbc0c8f8c95be6f22e990d0d1", null ], [ "Vector3dSignal", "Signal_8h.html#addff0c3095fce02a8ae3d8669292ea8a", null ], - [ "Vector3Signal", "Signal_8h.html#a6f00143250c4d5856a25417d2fb5908f", null ], + [ "Vector3Signal", "Signal_8h.html#a59c30838434bb9eabab59a54a0dceb9f", null ], [ "Vector4dSignal", "Signal_8h.html#a785560e5ddb26fcf9edc2eb9f34e7ec8", null ], - [ "Vector4Signal", "Signal_8h.html#a30e3e4193a15b7c565df9edcf0b1a81b", null ], + [ "Vector4Signal", "Signal_8h.html#a04b5a6ff0c189cb66f0e3137b1362c30", null ], [ "Vector5dSignal", "Signal_8h.html#ad0b807d45bcfe07cc9a2f54648dd4821", null ], - [ "Vector5Signal", "Signal_8h.html#ab517aee0ae3891deb305ebd61de6f0e4", null ], + [ "Vector5Signal", "Signal_8h.html#a9f0b242918cfdc4b6eaecdeb6574b6cb", null ], [ "Vector6dSignal", "Signal_8h.html#acb50cf2886559fdfc3aba4ee722f511a", null ], - [ "Vector6Signal", "Signal_8h.html#a74174cf187bc4e74b3e7494b247e0284", null ], + [ "Vector6Signal", "Signal_8h.html#a4da3e39a6224769606055a56f1508e6b", null ], [ "Vector7dSignal", "Signal_8h.html#afea76be78e2b329344fb610a62c421e9", null ], - [ "Vector7Signal", "Signal_8h.html#a992c3596420601f0271876e30a152c1b", null ], + [ "Vector7Signal", "Signal_8h.html#ac71cd26f6afca210f51cc394d520779b", null ], [ "Vector8dSignal", "Signal_8h.html#ad2214d5fb3267b191128fcccb515448b", null ], - [ "Vector8Signal", "Signal_8h.html#afaa686fc5ec63962f7da9907e6093e65", null ], + [ "Vector8Signal", "Signal_8h.html#a6fe111909e599c7d732507ef08213e06", null ], [ "Vector9dSignal", "Signal_8h.html#acd349d949f45a7bce633414d05043cc3", null ], - [ "Vector9Signal", "Signal_8h.html#a20d6ecf779577c444e3d1299861a3f8b", null ], + [ "Vector9Signal", "Signal_8h.html#ae78698ceb51c16ea2ffea1ea2b5507e3", null ], [ "VectorSignal", "Signal_8h.html#a51a32a4dd69ee28867dba6202c812c5a", null ], [ "DerivativeMethod", "Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242", [ [ "DIRTY", "Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242a6a4e132eb192a22c351397837d4c082c", null ], diff --git a/docs/Signal_8h_source.html b/docs/Signal_8h_source.html index a56564b..92ae6c9 100644 --- a/docs/Signal_8h_source.html +++ b/docs/Signal_8h_source.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Signal.h Source File @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,28 +42,28 @@
    - + + -
    @@ -118,14 +117,14 @@
    9#include "Utils.h"
    10
    11using namespace Eigen;
    -
    12
    +
    12
    22
    @@ -133,21 +132,21 @@
    24{
    - -
    28};
    + +
    28};
    29
    35
    36template<typename BaseSignalSpec, typename TangentSignalSpec>
    -
    37class Signal
    +
    37class Signal
    38{
    39public:
    40 using BaseType = typename BaseSignalSpec::Type;
    @@ -168,7 +167,7 @@
    53 {
    54 return a.t < b.t;
    55 }
    - +
    57
    @@ -185,7 +184,7 @@
    69
    -
    70 Signal(const Signal& other)
    +
    70 Signal(const Signal& other)
    71 {
    72 this->interpolationMethod = other.interpolationMethod;
    73 this->extrapolationMethod = other.extrapolationMethod;
    @@ -199,9 +198,9 @@
    81
    - +
    83 {
    - +
    85 for (auto signalDP : signalHistory_)
    86 {
    87 signalDot.update(signalDP.t, signalDP.xdot, true);
    @@ -212,16 +211,16 @@
    92
    93 template<typename BSS, typename TSS>
    - +
    95
    96 template<typename BSS, typename TSS>
    - +
    98
    99 template<typename BSS, typename TSS>
    -
    100 friend Signal<BSS, TSS> operator*(const double& l, const Signal<BSS, TSS>& r);
    +
    100 friend Signal<BSS, TSS> operator*(const double& l, const Signal<BSS, TSS>& r);
    101
    102 template<typename BSS, typename TSS>
    -
    103 friend Signal<BSS, TSS> operator*(const Signal<BSS, TSS>& l, const double& r);
    +
    103 friend Signal<BSS, TSS> operator*(const Signal<BSS, TSS>& l, const double& r);
    104
    105 double t() const
    @@ -338,7 +337,7 @@
    192 {
    193 if (needsSort_)
    194 {
    -
    195 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
    +
    195 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
    196 needsSort_ = false;
    197 }
    198 return true;
    @@ -375,7 +374,7 @@
    227 }
    228 if (needsSort_)
    229 {
    -
    230 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
    +
    230 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
    231 needsSort_ = false;
    232 }
    233 return true;
    @@ -403,7 +402,7 @@
    253 }
    254 if (needsSort_)
    255 {
    -
    256 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
    +
    256 std::sort(signalHistory_.begin(), signalHistory_.end(), SignalDPComparator);
    257 needsSort_ = false;
    258 }
    259 return true;
    @@ -836,11 +835,11 @@
    659
    660template<typename T>
    - +
    662
    663template<typename T>
    -
    664inline std::ostream& operator<<(std::ostream& os, const ScalarSignal<T>& x)
    +
    664inline std::ostream& operator<<(std::ostream& os, const ScalarSignal<T>& x)
    665{
    666 os << "ScalarSignal at t=" << x.t() << ": " << x();
    667 return os;
    @@ -848,11 +847,11 @@
    669
    670template<typename T, size_t d>
    - +
    672
    673template<typename T, size_t d>
    -
    674inline std::ostream& operator<<(std::ostream& os, const VectorSignal<T, d>& x)
    +
    674inline std::ostream& operator<<(std::ostream& os, const VectorSignal<T, d>& x)
    675{
    676 os << "VectorSignal at t=" << x.t() << ": " << x().transpose();
    677 return os;
    @@ -860,11 +859,11 @@
    679
    680template<typename T, typename ManifoldType, size_t d>
    - +
    682
    683template<typename T, typename ManifoldType, size_t d>
    -
    684inline std::ostream& operator<<(std::ostream& os, const ManifoldSignal<T, ManifoldType, d>& x)
    +
    684inline std::ostream& operator<<(std::ostream& os, const ManifoldSignal<T, ManifoldType, d>& x)
    685{
    686 os << "ManifoldSignal at t=" << x.t() << ": " << x();
    687 return os;
    @@ -885,7 +884,7 @@
    698 typedef Manif##Signal<double> Manif##dSignal;
    699
    - + @@ -900,11 +899,14 @@ +
    Signal< ScalarSignalSpec< T >, ScalarSignalSpec< T > > ScalarSignal
    Definition Signal.h:661
    +
    Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > > ManifoldSignal
    Definition Signal.h:681
    DerivativeMethod
    Definition Signal.h:31
    @ FINITE_DIFF
    Definition Signal.h:33
    @ DIRTY
    Definition Signal.h:32
    #define MAKE_VECTOR_SIGNAL(Dimension)
    Definition Signal.h:690
    std::ostream & operator<<(std::ostream &os, const ScalarSignal< T > &x)
    Definition Signal.h:664
    +
    Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > > VectorSignal
    Definition Signal.h:671
    ScalarSignal< double > ScalardSignal
    Definition Signal.h:700
    ExtrapolationMethod
    Definition Signal.h:24
    @ ZEROS
    Definition Signal.h:26
    @@ -921,33 +923,33 @@
    Definition Signal.h:38
    double t() const
    Definition Signal.h:105
    -
    friend Signal< TSS, TSS > operator-(const Signal< BSS, TSS > &l, const Signal< BSS, TSS > &r)
    +
    friend Signal< TSS, TSS > operator-(const Signal< BSS, TSS > &l, const Signal< BSS, TSS > &r)
    BaseType operator()() const
    Definition Signal.h:110
    -
    struct Signal::@0 SignalDPComparator
    -
    bool update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory)
    Definition Signal.h:208
    -
    bool update(const double &_t, const BaseType &_x, const TangentType &_xdot, bool insertHistory=false)
    Definition Signal.h:184
    -
    bool update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory, const std::vector< TangentType > &_xdotHistory)
    Definition Signal.h:236
    -
    Signal(const Signal &other)
    Definition Signal.h:70
    -
    TangentType dot(const double &t) const
    Definition Signal.h:125
    +
    bool update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory)
    Definition Signal.h:208
    +
    bool update(const double &_t, const BaseType &_x, const TangentType &_xdot, bool insertHistory=false)
    Definition Signal.h:184
    +
    struct Signal::@053250032031010315204017007310244260026177164207 SignalDPComparator
    +
    bool update(const std::vector< double > &_tHistory, const std::vector< BaseType > &_xHistory, const std::vector< TangentType > &_xdotHistory)
    Definition Signal.h:236
    +
    Signal(const Signal &other)
    Definition Signal.h:70
    +
    TangentType dot(const double &t) const
    Definition Signal.h:125
    TangentType dot() const
    Definition Signal.h:115
    Signal()
    Definition Signal.h:62
    -
    void setDerivativeMethod(DerivativeMethod method)
    Definition Signal.h:160
    +
    void setDerivativeMethod(DerivativeMethod method)
    Definition Signal.h:160
    void reset()
    Definition Signal.h:165
    -
    Signal< TangentSignalSpec, TangentSignalSpec > dotSignal()
    Definition Signal.h:82
    +
    Signal< ScalarSignalSpec< T >, ScalarSignalSpec< T > > dotSignal()
    Definition Signal.h:82
    typename BaseSignalSpec::Type BaseType
    Definition Signal.h:40
    typename TangentSignalSpec::Type TangentType
    Definition Signal.h:41
    -
    std::vector< TangentType > dot(const std::vector< double > &t) const
    Definition Signal.h:140
    +
    std::vector< TangentType > dot(const std::vector< double > &t) const
    Definition Signal.h:140
    bool update(const double &_t, const BaseType &_x, bool insertHistory=false)
    Definition Signal.h:174
    -
    std::vector< BaseType > operator()(const std::vector< double > &t) const
    Definition Signal.h:130
    -
    DerivativeMethod derivativeMethod
    Definition Signal.h:60
    -
    void setExtrapolationMethod(ExtrapolationMethod method)
    Definition Signal.h:155
    -
    BaseType operator()(const double &t) const
    Definition Signal.h:120
    -
    friend Signal< BSS, TSS > operator*(const double &l, const Signal< BSS, TSS > &r)
    -
    InterpolationMethod interpolationMethod
    Definition Signal.h:58
    -
    friend Signal< BSS, TSS > operator*(const Signal< BSS, TSS > &l, const double &r)
    -
    friend Signal< BSS, TSS > operator+(const Signal< BSS, TSS > &l, const Signal< TSS, TSS > &r)
    -
    void setInterpolationMethod(InterpolationMethod method)
    Definition Signal.h:150
    -
    ExtrapolationMethod extrapolationMethod
    Definition Signal.h:59
    +
    std::vector< BaseType > operator()(const std::vector< double > &t) const
    Definition Signal.h:130
    +
    DerivativeMethod derivativeMethod
    Definition Signal.h:60
    +
    void setExtrapolationMethod(ExtrapolationMethod method)
    Definition Signal.h:155
    +
    BaseType operator()(const double &t) const
    Definition Signal.h:120
    +
    friend Signal< BSS, TSS > operator*(const double &l, const Signal< BSS, TSS > &r)
    +
    InterpolationMethod interpolationMethod
    Definition Signal.h:58
    +
    friend Signal< BSS, TSS > operator*(const Signal< BSS, TSS > &l, const double &r)
    +
    friend Signal< BSS, TSS > operator+(const Signal< BSS, TSS > &l, const Signal< TSS, TSS > &r)
    +
    void setInterpolationMethod(InterpolationMethod method)
    Definition Signal.h:150
    +
    ExtrapolationMethod extrapolationMethod
    Definition Signal.h:59
    Definition Signal.h:648
    static Type ZeroType()
    Definition Signal.h:650
    static Type NansType()
    Definition Signal.h:654
    @@ -970,7 +972,7 @@ diff --git a/docs/Signals_8h.html b/docs/Signals_8h.html index 12bafae..06b08bb 100644 --- a/docs/Signals_8h.html +++ b/docs/Signals_8h.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Signals.h File Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -114,7 +118,7 @@ diff --git a/docs/Signals_8h_source.html b/docs/Signals_8h_source.html index ebb3b60..0cd2635 100644 --- a/docs/Signals_8h_source.html +++ b/docs/Signals_8h_source.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Signals.h Source File @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,28 +42,28 @@
    - + + -
    @@ -113,7 +112,7 @@
    5#include "signals/State.h"
    6#include "signals/Models.h"
    -
    7
    +
    7
    @@ -124,7 +123,7 @@ diff --git a/docs/State_8h.html b/docs/State_8h.html index b36a0da..35370a9 100644 --- a/docs/State_8h.html +++ b/docs/State_8h.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/State.h File Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -132,208 +136,208 @@ - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + - +

    Typedefs

    template<typename T >
    template<typename T>
    using ScalarStateType = State<T, ScalarSignalSpec<T>, 1, ScalarSignalSpec<T>, 1>
     
    template<typename T , size_t d>
    template<typename T, size_t d>
    using VectorStateType = State<T, VectorSignalSpec<T, d>, d, VectorSignalSpec<T, d>, d>
     
    template<typename T , typename ManifoldType , size_t PD, size_t TD>
    template<typename T, typename ManifoldType, size_t PD, size_t TD>
    using ManifoldStateType = State<T, ManifoldSignalSpec<ManifoldType>, PD, VectorSignalSpec<T, TD>, TD>
     
    template<typename T >
    template<typename T>
    using ScalarStateSignal = Signal<ScalarStateSignalSpec<T>, ScalarStateSignalSpec<T>>
     
    template<typename T , size_t d>
    template<typename T, size_t d>
    using VectorStateSignal = Signal<VectorStateSignalSpec<T, d>, VectorStateSignalSpec<T, d>>
     
    template<typename T , typename ManifoldType , size_t PD, size_t TD>
    template<typename T, typename ManifoldType, size_t PD, size_t TD>
    using ManifoldStateSignal = Signal<ManifoldStateSignalSpec<T, ManifoldType, PD, TD>, VectorStateSignalSpec<T, TD>>
     
    template<typename T >
    template<typename T>
    using ScalarState = ScalarStateType<T>
     
    typedef ScalarState< double > ScalardState
     
    typedef ScalarStateSignal< double > ScalardStateSignal
     
    template<typename T >
    using Vector1State = VectorStateType<T, 1 >
     
    template<typename T >
    using Vector1StateSignal = VectorStateSignal<T, 1 >
     
    typedef Vector1State< double > Vector1dState
    template<typename T>
    using Vector1State = VectorStateType<T, 1>
     
    template<typename T>
    using Vector1StateSignal = VectorStateSignal<T, 1>
     
    typedef Vector1State< double > Vector1dState
     
    typedef Vector1StateSignal< double > Vector1dStateSignal
    typedef Vector1StateSignal< double > Vector1dStateSignal
     
    template<typename T >
    using Vector2State = VectorStateType<T, 2 >
     
    template<typename T >
    using Vector2StateSignal = VectorStateSignal<T, 2 >
     
    typedef Vector2State< double > Vector2dState
    template<typename T>
    using Vector2State = VectorStateType<T, 2>
     
    template<typename T>
    using Vector2StateSignal = VectorStateSignal<T, 2>
     
    typedef Vector2State< double > Vector2dState
     
    typedef Vector2StateSignal< double > Vector2dStateSignal
    typedef Vector2StateSignal< double > Vector2dStateSignal
     
    template<typename T >
    using Vector3State = VectorStateType<T, 3 >
     
    template<typename T >
    using Vector3StateSignal = VectorStateSignal<T, 3 >
     
    typedef Vector3State< double > Vector3dState
    template<typename T>
    using Vector3State = VectorStateType<T, 3>
     
    template<typename T>
    using Vector3StateSignal = VectorStateSignal<T, 3>
     
    typedef Vector3State< double > Vector3dState
     
    typedef Vector3StateSignal< double > Vector3dStateSignal
    typedef Vector3StateSignal< double > Vector3dStateSignal
     
    template<typename T >
    using Vector4State = VectorStateType<T, 4 >
     
    template<typename T >
    using Vector4StateSignal = VectorStateSignal<T, 4 >
     
    typedef Vector4State< double > Vector4dState
    template<typename T>
    using Vector4State = VectorStateType<T, 4>
     
    template<typename T>
    using Vector4StateSignal = VectorStateSignal<T, 4>
     
    typedef Vector4State< double > Vector4dState
     
    typedef Vector4StateSignal< double > Vector4dStateSignal
    typedef Vector4StateSignal< double > Vector4dStateSignal
     
    template<typename T >
    using Vector5State = VectorStateType<T, 5 >
     
    template<typename T >
    using Vector5StateSignal = VectorStateSignal<T, 5 >
     
    typedef Vector5State< double > Vector5dState
    template<typename T>
    using Vector5State = VectorStateType<T, 5>
     
    template<typename T>
    using Vector5StateSignal = VectorStateSignal<T, 5>
     
    typedef Vector5State< double > Vector5dState
     
    typedef Vector5StateSignal< double > Vector5dStateSignal
    typedef Vector5StateSignal< double > Vector5dStateSignal
     
    template<typename T >
    using Vector6State = VectorStateType<T, 6 >
     
    template<typename T >
    using Vector6StateSignal = VectorStateSignal<T, 6 >
     
    typedef Vector6State< double > Vector6dState
    template<typename T>
    using Vector6State = VectorStateType<T, 6>
     
    template<typename T>
    using Vector6StateSignal = VectorStateSignal<T, 6>
     
    typedef Vector6State< double > Vector6dState
     
    typedef Vector6StateSignal< double > Vector6dStateSignal
    typedef Vector6StateSignal< double > Vector6dStateSignal
     
    template<typename T >
    using Vector7State = VectorStateType<T, 7 >
     
    template<typename T >
    using Vector7StateSignal = VectorStateSignal<T, 7 >
     
    typedef Vector7State< double > Vector7dState
    template<typename T>
    using Vector7State = VectorStateType<T, 7>
     
    template<typename T>
    using Vector7StateSignal = VectorStateSignal<T, 7>
     
    typedef Vector7State< double > Vector7dState
     
    typedef Vector7StateSignal< double > Vector7dStateSignal
    typedef Vector7StateSignal< double > Vector7dStateSignal
     
    template<typename T >
    using Vector8State = VectorStateType<T, 8 >
     
    template<typename T >
    using Vector8StateSignal = VectorStateSignal<T, 8 >
     
    typedef Vector8State< double > Vector8dState
    template<typename T>
    using Vector8State = VectorStateType<T, 8>
     
    template<typename T>
    using Vector8StateSignal = VectorStateSignal<T, 8>
     
    typedef Vector8State< double > Vector8dState
     
    typedef Vector8StateSignal< double > Vector8dStateSignal
    typedef Vector8StateSignal< double > Vector8dStateSignal
     
    template<typename T >
    using Vector9State = VectorStateType<T, 9 >
     
    template<typename T >
    using Vector9StateSignal = VectorStateSignal<T, 9 >
     
    typedef Vector9State< double > Vector9dState
    template<typename T>
    using Vector9State = VectorStateType<T, 9>
     
    template<typename T>
    using Vector9StateSignal = VectorStateSignal<T, 9>
     
    typedef Vector9State< double > Vector9dState
     
    typedef Vector9StateSignal< double > Vector9dStateSignal
    typedef Vector9StateSignal< double > Vector9dStateSignal
     
    template<typename T >
    using Vector10State = VectorStateType<T, 10 >
     
    template<typename T >
    using Vector10StateSignal = VectorStateSignal<T, 10 >
     
    typedef Vector10State< double > Vector10dState
    template<typename T>
    using Vector10State = VectorStateType<T, 10>
     
    template<typename T>
    using Vector10StateSignal = VectorStateSignal<T, 10>
     
    typedef Vector10State< double > Vector10dState
     
    typedef Vector10StateSignal< double > Vector10dStateSignal
    typedef Vector10StateSignal< double > Vector10dStateSignal
     
    template<typename T >
    using SO2State = ManifoldStateType<T, SO2 <T>, 2 , 1 >
     
    template<typename T >
    using SO2StateSignal = ManifoldStateSignal<T, SO2 <T>, 2 , 1 >
     
    typedef SO2State< double > SO2dState
    template<typename T>
    using SO2State = ManifoldStateType<T, SO2<T>, 2, 1>
     
    template<typename T>
    using SO2StateSignal = ManifoldStateSignal<T, SO2<T>, 2, 1>
     
    typedef SO2State< double > SO2dState
     
    typedef SO2StateSignal< double > SO2dStateSignal
    typedef SO2StateSignal< double > SO2dStateSignal
     
    template<typename T >
    using SO3State = ManifoldStateType<T, SO3 <T>, 4 , 3 >
     
    template<typename T >
    using SO3StateSignal = ManifoldStateSignal<T, SO3 <T>, 4 , 3 >
     
    typedef SO3State< double > SO3dState
    template<typename T>
    using SO3State = ManifoldStateType<T, SO3<T>, 4, 3>
     
    template<typename T>
    using SO3StateSignal = ManifoldStateSignal<T, SO3<T>, 4, 3>
     
    typedef SO3State< double > SO3dState
     
    typedef SO3StateSignal< double > SO3dStateSignal
    typedef SO3StateSignal< double > SO3dStateSignal
     
    template<typename T >
    using SE2State = ManifoldStateType<T, SE2 <T>, 4 , 3 >
     
    template<typename T >
    using SE2StateSignal = ManifoldStateSignal<T, SE2 <T>, 4 , 3 >
     
    typedef SE2State< double > SE2dState
    template<typename T>
    using SE2State = ManifoldStateType<T, SE2<T>, 4, 3>
     
    template<typename T>
    using SE2StateSignal = ManifoldStateSignal<T, SE2<T>, 4, 3>
     
    typedef SE2State< double > SE2dState
     
    typedef SE2StateSignal< double > SE2dStateSignal
    typedef SE2StateSignal< double > SE2dStateSignal
     
    template<typename T >
    using SE3State = ManifoldStateType<T, SE3 <T>, 7 , 6 >
     
    template<typename T >
    using SE3StateSignal = ManifoldStateSignal<T, SE3 <T>, 7 , 6 >
     
    typedef SE3State< double > SE3dState
    template<typename T>
    using SE3State = ManifoldStateType<T, SE3<T>, 7, 6>
     
    template<typename T>
    using SE3StateSignal = ManifoldStateSignal<T, SE3<T>, 7, 6>
     
    typedef SE3State< double > SE3dState
     
    typedef SE3StateSignal< double > SE3dStateSignal
    typedef SE3StateSignal< double > SE3dStateSignal
     
    - + - + - + - + - + - + - + - + - + - + - + - +

    Functions

    template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    State< T, PTS, PD, TTS, TD > operator+ (const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r)
     
    template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    State< T, TTS, TD, TTS, TD > operator- (const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r)
     
    template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    State< T, PTS, PD, TTS, TD > operator* (const double &l, const State< T, PTS, PD, TTS, TD > &r)
     
    template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>
    State< T, PTS, PD, TTS, TD > operator* (const State< T, PTS, PD, TTS, TD > &l, const double &r)
     
    template<typename T >
    template<typename T>
    std::ostream & operator<< (std::ostream &os, const ScalarStateType< T > &x)
     
    template<typename T >
    template<typename T>
    ScalarStateType< T > operator/ (const ScalarStateType< T > &l, const double &r)
     
    template<typename T , size_t d>
    template<typename T, size_t d>
    std::ostream & operator<< (std::ostream &os, const VectorStateType< T, d > &x)
     
    template<typename T , size_t d>
    template<typename T, size_t d>
    VectorStateType< T, d > operator/ (const VectorStateType< T, d > &l, const double &r)
     
    template<typename T , typename ManifoldType , size_t PD, size_t TD>
    template<typename T, typename ManifoldType, size_t PD, size_t TD>
    std::ostream & operator<< (std::ostream &os, const ManifoldStateType< T, ManifoldType, PD, TD > &x)
     
    template<typename T >
    template<typename T>
    std::ostream & operator<< (std::ostream &os, const ScalarStateSignal< T > &x)
     
    template<typename T , size_t d>
    template<typename T, size_t d>
    std::ostream & operator<< (std::ostream &os, const VectorStateSignal< T, d > &x)
     
    template<typename T , typename ManifoldType , size_t PD, size_t TD>
    template<typename T, typename ManifoldType, size_t PD, size_t TD>
    std::ostream & operator<< (std::ostream &os, const ManifoldStateSignal< T, ManifoldType, PD, TD > &x)
     
    @@ -347,27 +351,28 @@

    #define MAKE_MANIF_STATES ( - Manif, + Manif, - Dimension, + Dimension, - TangentDimension ) + TangentDimension )

    Value:
    template<typename T> \
    -
    using Manif##State = ManifoldStateType<T, Manif<T>, Dimension, TangentDimension>; \
    +
    using Manif##State = ManifoldStateType<T, Manif<T>, Dimension, TangentDimension>; \
    template<typename T> \
    -
    using Manif##StateSignal = ManifoldStateSignal<T, Manif<T>, Dimension, TangentDimension>; \
    +
    using Manif##StateSignal = ManifoldStateSignal<T, Manif<T>, Dimension, TangentDimension>; \
    typedef Manif##State<double> Manif##dState; \
    typedef Manif##StateSignal<double> Manif##dStateSignal;
    -
    Definition Signal.h:38
    +
    Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > > ManifoldStateSignal
    Definition State.h:234
    +
    State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD > ManifoldStateType
    Definition State.h:161
    Base type for all Model state representations.
    Definition State.h:34
    @@ -381,17 +386,19 @@

    #define MAKE_VECTOR_STATES ( - Dimension) + Dimension)

    Value:
    template<typename T> \
    -
    +
    using Vector##Dimension##State = VectorStateType<T, Dimension>; \
    template<typename T> \
    -
    using Vector##Dimension##StateSignal = VectorStateSignal<T, Dimension>; \
    +
    using Vector##Dimension##StateSignal = VectorStateSignal<T, Dimension>; \
    typedef Vector##Dimension##State<double> Vector##Dimension##dState; \
    typedef Vector##Dimension##StateSignal<double> Vector##Dimension##dStateSignal;
    +
    Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > > VectorStateSignal
    Definition State.h:223
    +
    State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d > VectorStateType
    Definition State.h:142
    @@ -402,7 +409,7 @@

    -template<typename T , typename ManifoldType , size_t PD, size_t TD>
    +template<typename T, typename ManifoldType, size_t PD, size_t TD>
    @@ -418,7 +425,7 @@

    -template<typename T , typename ManifoldType , size_t PD, size_t TD>
    +template<typename T, typename ManifoldType, size_t PD, size_t TD>

    using ManifoldStateSignal = Signal<ManifoldStateSignalSpec<T, ManifoldType, PD, TD>, VectorStateSignalSpec<T, TD>>
    @@ -462,7 +469,7 @@

    -template<typename T >
    +template<typename T>

    using ManifoldStateType = State<T, ManifoldSignalSpec<ManifoldType>, PD, VectorSignalSpec<T, TD>, TD>
    @@ -478,7 +485,7 @@

    -template<typename T >
    +template<typename T>

    using ScalarState = ScalarStateType<T>
    @@ -494,7 +501,7 @@

    -template<typename T >
    +template<typename T>

    using ScalarStateSignal = Signal<ScalarStateSignalSpec<T>, ScalarStateSignalSpec<T>>
    @@ -511,7 +518,7 @@

    using ScalarStateType = State<T, ScalarSignalSpec<T>, 1, ScalarSignalSpec<T>, 1>
    - +
    typedef SE2State<double> SE2dStatetypedef SE2State<double> SE2dState

    - -

    ◆ SE2State

    + +

    ◆ SE2State

    -template<typename T >
    +template<typename T>
    - +
    using SE2State = ManifoldStateType<T, SE2 <T>, 4 , 3 >using SE2State = ManifoldStateType<T, SE2<T>, 4, 3>
    - -

    ◆ SE2StateSignal

    + +

    ◆ SE2StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using SE2StateSignal = ManifoldStateSignal<T, SE2 <T>, 4 , 3 >using SE2StateSignal = ManifoldStateSignal<T, SE2<T>, 4, 3>
    - -

    ◆ SE3State

    + +

    ◆ SE3State

    -template<typename T >
    +template<typename T>
    - +
    using SE3State = ManifoldStateType<T, SE3 <T>, 7 , 6 >using SE3State = ManifoldStateType<T, SE3<T>, 7, 6>
    - -

    ◆ SE3StateSignal

    + +

    ◆ SE3StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using SE3StateSignal = ManifoldStateSignal<T, SE3 <T>, 7 , 6 >using SE3StateSignal = ManifoldStateSignal<T, SE3<T>, 7, 6>
    - -

    ◆ SO2State

    + +

    ◆ SO2State

    -template<typename T >
    +template<typename T>
    - +
    using SO2State = ManifoldStateType<T, SO2 <T>, 2 , 1 >using SO2State = ManifoldStateType<T, SO2<T>, 2, 1>
    - -

    ◆ SO2StateSignal

    + +

    ◆ SO2StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using SO2StateSignal = ManifoldStateSignal<T, SO2 <T>, 2 , 1 >using SO2StateSignal = ManifoldStateSignal<T, SO2<T>, 2, 1>
    - -

    ◆ SO3State

    + +

    ◆ SO3State

    -template<typename T >
    +template<typename T>
    - +
    using SO3State = ManifoldStateType<T, SO3 <T>, 4 , 3 >using SO3State = ManifoldStateType<T, SO3<T>, 4, 3>
    - -

    ◆ SO3StateSignal

    + +

    ◆ SO3StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using SO3StateSignal = ManifoldStateSignal<T, SO3 <T>, 4 , 3 >using SO3StateSignal = ManifoldStateSignal<T, SO3<T>, 4, 3>
    - -

    ◆ Vector10State

    + +

    ◆ Vector10State

    -template<typename T >
    +template<typename T>
    - +
    using Vector10State = VectorStateType<T, 10 >using Vector10State = VectorStateType<T, 10>
    - -

    ◆ Vector10StateSignal

    + +

    ◆ Vector10StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector10StateSignal = VectorStateSignal<T, 10 >using Vector10StateSignal = VectorStateSignal<T, 10>
    - -

    ◆ Vector1State

    + +

    ◆ Vector1State

    -template<typename T >
    +template<typename T>
    - +
    using Vector1State = VectorStateType<T, 1 >using Vector1State = VectorStateType<T, 1>
    - -

    ◆ Vector1StateSignal

    + +

    ◆ Vector1StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector1StateSignal = VectorStateSignal<T, 1 >using Vector1StateSignal = VectorStateSignal<T, 1>
    - -

    ◆ Vector2State

    + +

    ◆ Vector2State

    -template<typename T >
    +template<typename T>
    - +
    using Vector2State = VectorStateType<T, 2 >using Vector2State = VectorStateType<T, 2>
    - -

    ◆ Vector2StateSignal

    + +

    ◆ Vector2StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector2StateSignal = VectorStateSignal<T, 2 >using Vector2StateSignal = VectorStateSignal<T, 2>
    - -

    ◆ Vector3State

    + +

    ◆ Vector3State

    -template<typename T >
    +template<typename T>
    - +
    using Vector3State = VectorStateType<T, 3 >using Vector3State = VectorStateType<T, 3>
    - -

    ◆ Vector3StateSignal

    + +

    ◆ Vector3StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector3StateSignal = VectorStateSignal<T, 3 >using Vector3StateSignal = VectorStateSignal<T, 3>
    - -

    ◆ Vector4State

    + +

    ◆ Vector4State

    -template<typename T >
    +template<typename T>
    - +
    using Vector4State = VectorStateType<T, 4 >using Vector4State = VectorStateType<T, 4>
    - -

    ◆ Vector4StateSignal

    + +

    ◆ Vector4StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector4StateSignal = VectorStateSignal<T, 4 >using Vector4StateSignal = VectorStateSignal<T, 4>
    - -

    ◆ Vector5State

    + +

    ◆ Vector5State

    -template<typename T >
    +template<typename T>
    - +
    using Vector5State = VectorStateType<T, 5 >using Vector5State = VectorStateType<T, 5>
    - -

    ◆ Vector5StateSignal

    + +

    ◆ Vector5StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector5StateSignal = VectorStateSignal<T, 5 >using Vector5StateSignal = VectorStateSignal<T, 5>
    - -

    ◆ Vector6State

    + +

    ◆ Vector6State

    -template<typename T >
    +template<typename T>
    - +
    using Vector6State = VectorStateType<T, 6 >using Vector6State = VectorStateType<T, 6>
    - -

    ◆ Vector6StateSignal

    + +

    ◆ Vector6StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector6StateSignal = VectorStateSignal<T, 6 >using Vector6StateSignal = VectorStateSignal<T, 6>
    - -

    ◆ Vector7State

    + +

    ◆ Vector7State

    -template<typename T >
    +template<typename T>
    - +
    using Vector7State = VectorStateType<T, 7 >using Vector7State = VectorStateType<T, 7>
    - -

    ◆ Vector7StateSignal

    + +

    ◆ Vector7StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector7StateSignal = VectorStateSignal<T, 7 >using Vector7StateSignal = VectorStateSignal<T, 7>
    - -

    ◆ Vector8State

    + +

    ◆ Vector8State

    -template<typename T >
    +template<typename T>
    - +
    using Vector8State = VectorStateType<T, 8 >using Vector8State = VectorStateType<T, 8>
    - -

    ◆ Vector8StateSignal

    + +

    ◆ Vector8StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector8StateSignal = VectorStateSignal<T, 8 >using Vector8StateSignal = VectorStateSignal<T, 8>
    - -

    ◆ Vector9State

    + +

    ◆ Vector9State

    -template<typename T >
    +template<typename T>
    - +
    using Vector9State = VectorStateType<T, 9 >using Vector9State = VectorStateType<T, 9>
    - -

    ◆ Vector9StateSignal

    + +

    ◆ Vector9StateSignal

    -template<typename T >
    +template<typename T>
    - +
    using Vector9StateSignal = VectorStateSignal<T, 9 >using Vector9StateSignal = VectorStateSignal<T, 9>
    @@ -1350,7 +1357,7 @@

    -template<typename T , size_t d>
    +template<typename T, size_t d>
    @@ -1366,7 +1373,7 @@

    -template<typename T , size_t d>
    +template<typename T, size_t d>

    using VectorStateSignal = Signal<VectorStateSignalSpec<T, d>, VectorStateSignalSpec<T, d>>
    @@ -1383,12 +1390,12 @@

    -template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    +template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>

    using VectorStateType = State<T, VectorSignalSpec<T, d>, d, VectorSignalSpec<T, d>, d>
    - + @@ -1406,12 +1413,12 @@

    -template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    +template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>

    State< T, PTS, PD, TTS, TD > operator* (const double & l, const double & l,
    - + @@ -1429,12 +1436,12 @@

    -template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    +template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>

    State< T, PTS, PD, TTS, TD > operator* (const State< T, PTS, PD, TTS, TD > & l, const State< T, PTS, PD, TTS, TD > & l,
    - + @@ -1452,12 +1459,12 @@

    -template<typename T , typename PTS , size_t PD, typename TTS , size_t TD>
    +template<typename T, typename PTS, size_t PD, typename TTS, size_t TD>

    State< T, PTS, PD, TTS, TD > operator+ (const State< T, PTS, PD, TTS, TD > & l, const State< T, PTS, PD, TTS, TD > & l,
    - + @@ -1475,12 +1482,12 @@

    -template<typename T >
    +template<typename T>

    State< T, TTS, TD, TTS, TD > operator- (const State< T, PTS, PD, TTS, TD > & l, const State< T, PTS, PD, TTS, TD > & l,
    - + @@ -1498,12 +1505,12 @@

    -template<typename T , size_t d>
    +template<typename T, size_t d>

    ScalarStateType< T > operator/ (const ScalarStateType< T > & l, const ScalarStateType< T > & l,
    - + @@ -1521,7 +1528,7 @@

    -template<typename T , typename ManifoldType , size_t PD, size_t TD>
    +template<typename T, typename ManifoldType, size_t PD, size_t TD>

    VectorStateType< T, d > operator/ (const VectorStateType< T, d > & l, const VectorStateType< T, d > & l,
    - + @@ -1539,7 +1546,7 @@

    -inline +inline

    @@ -1529,7 +1536,7 @@

    std::ostream & operator<<

    (std::ostream & os, std::ostream & os,

    @@ -1707,7 +1714,7 @@

    diff --git a/docs/State_8h.js b/docs/State_8h.js index 03c8f77..d3d0388 100644 --- a/docs/State_8h.js +++ b/docs/State_8h.js @@ -15,60 +15,60 @@ var State_8h = [ "ScalarStateType", "State_8h.html#aad51d946606df50291c6c2f546030f11", null ], [ "SE2dState", "State_8h.html#abf8de0fae02a60506ddd6e134b75ae00", null ], [ "SE2dStateSignal", "State_8h.html#a709efdac7ba2c93eedbf1533c74e42f5", null ], - [ "SE2State", "State_8h.html#a040c943cebaa523f316e57aaa2c90a8f", null ], - [ "SE2StateSignal", "State_8h.html#a7de4c0261575a69f6ed4e17cf50e3e03", null ], + [ "SE2State", "State_8h.html#acc2213abe7e1f1169bce3603e87f44d2", null ], + [ "SE2StateSignal", "State_8h.html#ae34074b7d367592e7022441b0ee836d9", null ], [ "SE3dState", "State_8h.html#a98daf00f053bcc148a93319eac4901e4", null ], [ "SE3dStateSignal", "State_8h.html#a9b00d890fcdbf16abfbb263061e9bc98", null ], - [ "SE3State", "State_8h.html#aac8e0a5eaf4f01fa2a6f388c116187b6", null ], - [ "SE3StateSignal", "State_8h.html#a0f26da8f398a7f20706b5f962e475126", null ], + [ "SE3State", "State_8h.html#a41c34d11317aa1e268232a6ddf9c0ba7", null ], + [ "SE3StateSignal", "State_8h.html#a337f5beba24e405d11550802e4375c73", null ], [ "SO2dState", "State_8h.html#af87fca61f7adfb8b62056d2f6c815e51", null ], [ "SO2dStateSignal", "State_8h.html#a4f4b421bf1a450cd6514a24b8c16e8cb", null ], - [ "SO2State", "State_8h.html#a53505b4e14d5121cf4ec30c3d5ee854f", null ], - [ "SO2StateSignal", "State_8h.html#a4e7a95697e869ec8e9cd31c0723ea2cf", null ], + [ "SO2State", "State_8h.html#ab2d123ee7121bd4e6c7e55ce62c770ee", null ], + [ "SO2StateSignal", "State_8h.html#a455c23e3eed1fa310813120299d8cc95", null ], [ "SO3dState", "State_8h.html#a7ab722ee104a5c16222f5cbd0d682657", null ], [ "SO3dStateSignal", "State_8h.html#a7069682eef4672ac723761c44e44bc5a", null ], - [ "SO3State", "State_8h.html#a0bc2e14b1e00089eac587823a7028df1", null ], - [ "SO3StateSignal", "State_8h.html#ae37ddd285b52c0765cd59fd0e212dfb5", null ], + [ "SO3State", "State_8h.html#ae37ec421e65f8ce1346e62704e6ea859", null ], + [ "SO3StateSignal", "State_8h.html#a07ec000c82b285e661a861ae5f90736a", null ], [ "Vector10dState", "State_8h.html#ac15f89e56010b705e5a2e0d9c3c50a6d", null ], [ "Vector10dStateSignal", "State_8h.html#af22d4a3a8e0b033da1e86fbb86d62025", null ], - [ "Vector10State", "State_8h.html#aaebcae79f29e8afb31a487a07fe71178", null ], - [ "Vector10StateSignal", "State_8h.html#a7aaf0c3fa4fd47f070fb708901981e1d", null ], + [ "Vector10State", "State_8h.html#ae80b1d8972029135f755109d7c9cefcc", null ], + [ "Vector10StateSignal", "State_8h.html#a1317973b896b1e34cafa85ed9476facc", null ], [ "Vector1dState", "State_8h.html#a1fccb71007e0830388d5c21c85e3344e", null ], [ "Vector1dStateSignal", "State_8h.html#a62568e2f3d59e51a60168009aa1a54bf", null ], - [ "Vector1State", "State_8h.html#a0cc4f9bb31ad1c5782e620e2a8168f99", null ], - [ "Vector1StateSignal", "State_8h.html#a5e82a65c39e740624f9c118536b5475d", null ], + [ "Vector1State", "State_8h.html#abc0badbf8fbf6b0c2669496da71cda67", null ], + [ "Vector1StateSignal", "State_8h.html#ab5090b8cb9c45dbe82c31d42d73d785e", null ], [ "Vector2dState", "State_8h.html#ae54c0630e02ee333a48fe6531d00e071", null ], [ "Vector2dStateSignal", "State_8h.html#a100a0048450baf6c0d0c2f444eccaf8a", null ], - [ "Vector2State", "State_8h.html#af2610db569af97f280444234b4632b9b", null ], - [ "Vector2StateSignal", "State_8h.html#a33b1f775ddbb45d3b1ae05ca4a7152c0", null ], + [ "Vector2State", "State_8h.html#a7f9f341c30868667e4855dbb3092e78d", null ], + [ "Vector2StateSignal", "State_8h.html#a8733dc322548a85201a19ddea01ea50e", null ], [ "Vector3dState", "State_8h.html#a0e9c381070552b28ffb2683b44e7b5a3", null ], [ "Vector3dStateSignal", "State_8h.html#a1e20c96461ce98997ef1a3c0ab7b6668", null ], - [ "Vector3State", "State_8h.html#aa8c0482241bd43048f5a8ae3365c82be", null ], - [ "Vector3StateSignal", "State_8h.html#a007fe0235bfe0d3393d33584f9a38f5b", null ], + [ "Vector3State", "State_8h.html#a76ad6fc3428b4c484c36cb9b24db72f0", null ], + [ "Vector3StateSignal", "State_8h.html#ae29a8cc7a8cfe9179c9befa2d9cf217d", null ], [ "Vector4dState", "State_8h.html#a8add6ebebc487c439430cb69d2892bbf", null ], [ "Vector4dStateSignal", "State_8h.html#a9013e9f17201a38fdb10648f14ea5c95", null ], - [ "Vector4State", "State_8h.html#a4cfd5bd231c0f14e8a360134d9d17bee", null ], - [ "Vector4StateSignal", "State_8h.html#a24c5f8ae10f7553987a0bb5c619cf505", null ], + [ "Vector4State", "State_8h.html#a7123f01cd05975f377e8ff9e6ee1a06a", null ], + [ "Vector4StateSignal", "State_8h.html#a5c328c48320c78070fff7e7982b311e9", null ], [ "Vector5dState", "State_8h.html#a45d6b402de0ba422a815e117b084dde3", null ], [ "Vector5dStateSignal", "State_8h.html#a7a8f2f6fd14951fd2fe337c952b0cb74", null ], - [ "Vector5State", "State_8h.html#a2890d15ac36c73fcd73556771b80b47e", null ], - [ "Vector5StateSignal", "State_8h.html#a05175ceaa15c466ce47c983d489ce31b", null ], + [ "Vector5State", "State_8h.html#ab5ce046688e9436f8b33892d42309eee", null ], + [ "Vector5StateSignal", "State_8h.html#a4af99c5e283d22f79b5556ff27474965", null ], [ "Vector6dState", "State_8h.html#af07e3586e98f931acac5d0ffd9b17cee", null ], [ "Vector6dStateSignal", "State_8h.html#a9df3c94eca5a8200ce96b3221995c46b", null ], - [ "Vector6State", "State_8h.html#a767154e6e5b226bf7b6c9dad73aee6d2", null ], - [ "Vector6StateSignal", "State_8h.html#a809dbd95b4841c294c3a75a7d40ecf62", null ], + [ "Vector6State", "State_8h.html#a5b9da17f6286f92692b0004ee4966bc9", null ], + [ "Vector6StateSignal", "State_8h.html#a10d976072ce9070523cb22605d2ab584", null ], [ "Vector7dState", "State_8h.html#ad58fbc5cd721c46fe64d385cc3317380", null ], [ "Vector7dStateSignal", "State_8h.html#a901bd18eae58b6365b68227b38b8a6e1", null ], - [ "Vector7State", "State_8h.html#a5c337dc74b2038b11a515b3d0559c1f2", null ], - [ "Vector7StateSignal", "State_8h.html#aec3d4775be3f8929cbac8e75b0471e48", null ], + [ "Vector7State", "State_8h.html#a78b7e325313bda6591c62d59c25b2009", null ], + [ "Vector7StateSignal", "State_8h.html#a0e0d0803fd68f9e69ed39bed579c0a8c", null ], [ "Vector8dState", "State_8h.html#acfdf1934f5783c1dcab2987c242ef8af", null ], [ "Vector8dStateSignal", "State_8h.html#a25968e689d254876cbae1ff352b3f184", null ], - [ "Vector8State", "State_8h.html#a102cee6380e7d3e8f52988d17ac6a937", null ], - [ "Vector8StateSignal", "State_8h.html#a1583d33e935bcb44fb80ee6172a59a9b", null ], + [ "Vector8State", "State_8h.html#ae8dd0ef45fa5734f0e752551ba62e863", null ], + [ "Vector8StateSignal", "State_8h.html#a9b199ed43adea9fec91e40f9bab9457f", null ], [ "Vector9dState", "State_8h.html#a865c1f4de96010d38ee17edc48d6c611", null ], [ "Vector9dStateSignal", "State_8h.html#a0237ae6ced288b7b3853654cd4ce796c", null ], - [ "Vector9State", "State_8h.html#acc503352a69f43c7991b9118bb466db2", null ], - [ "Vector9StateSignal", "State_8h.html#a0ffa2fdd937c37ee8f09d3fb49057f76", null ], + [ "Vector9State", "State_8h.html#af1297813c5b5754edb4cf75ca0875849", null ], + [ "Vector9StateSignal", "State_8h.html#a9ab7680e24d1538be50e761b8a8ecb21", null ], [ "VectorStateSignal", "State_8h.html#a214bd9926c3d8a2bb83b9b471744775b", null ], [ "VectorStateType", "State_8h.html#a60d0230d5788084bb8f559f4561d4d96", null ], [ "operator*", "State_8h.html#a795d2ff5c53f24de712134f27e197001", null ], diff --git a/docs/State_8h_source.html b/docs/State_8h_source.html index ecbcc58..fb830b2 100644 --- a/docs/State_8h_source.html +++ b/docs/State_8h_source.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/State.h Source File @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,28 +42,28 @@
    - + + -
    @@ -111,14 +110,14 @@
    2#include "signals/Signal.h"
    3
    4using namespace Eigen;
    -
    5
    +
    5
    32template<typename T, typename PoseTypeSpec, size_t PoseDim, typename TwistTypeSpec, size_t TwistDim>
    -
    33struct State
    +
    33struct State
    34{
    35 using PoseType = typename PoseTypeSpec::Type;
    36 using TwistType = typename TwistTypeSpec::Type;
    -
    37
    +
    37
    43
    @@ -127,7 +126,7 @@
    46 State(T* arr) : pose(arr), twist(arr + PoseDim) {}
    47
    -
    48 State(const State& other)
    +
    48 State(const State& other)
    49 {
    50 this->pose = other.pose;
    51 this->twist = other.twist;
    @@ -135,9 +134,9 @@
    53
    -
    54 static State identity()
    +
    54 static State identity()
    55 {
    -
    56 State x;
    +
    56 State x;
    57 x.pose = PoseTypeSpec::ZeroType();
    58 x.twist = TwistTypeSpec::ZeroType();
    59 return x;
    @@ -145,9 +144,9 @@
    61
    -
    62 static State nans()
    +
    62 static State nans()
    63 {
    -
    64 State x;
    +
    64 State x;
    65 x.pose = PoseTypeSpec::NansType();
    66 x.twist = TwistTypeSpec::NansType();
    67 return x;
    @@ -155,7 +154,7 @@
    69
    -
    70 State& operator*=(const double& s)
    +
    70 State& operator*=(const double& s)
    71 {
    72 pose *= s;
    73 twist *= s;
    @@ -165,7 +164,7 @@
    76
    77 template<typename T2>
    121
    122template<typename T>
    - +
    124
    125template<typename T>
    -
    126inline std::ostream& operator<<(std::ostream& os, const ScalarStateType<T>& x)
    +
    126inline std::ostream& operator<<(std::ostream& os, const ScalarStateType<T>& x)
    127{
    128 os << "ScalarStateType: pose=" << x.pose << "; twist=" << x.twist;
    129 return os;
    @@ -233,9 +232,9 @@
    131
    132template<typename T>
    - +
    134{
    -
    135 ScalarStateType<T> lr = l;
    +
    135 ScalarStateType<T> lr = l;
    136 lr.pose /= r;
    137 lr.twist /= r;
    138 return lr;
    @@ -243,11 +242,11 @@
    140
    141template<typename T, size_t d>
    - +
    143
    144template<typename T, size_t d>
    -
    145inline std::ostream& operator<<(std::ostream& os, const VectorStateType<T, d>& x)
    +
    145inline std::ostream& operator<<(std::ostream& os, const VectorStateType<T, d>& x)
    146{
    147 os << "VectorStateType: pose=" << x.pose.transpose() << "; twist=" << x.twist.transpose();
    148 return os;
    @@ -256,9 +255,9 @@
    150
    151template<typename T, size_t d>
    - +
    153{
    - +
    155 lr.pose /= r;
    156 lr.twist /= r;
    157 return lr;
    @@ -266,11 +265,11 @@
    159
    160template<typename T, typename ManifoldType, size_t PD, size_t TD>
    - +
    162
    163template<typename T, typename ManifoldType, size_t PD, size_t TD>
    -
    164inline std::ostream& operator<<(std::ostream& os, const ManifoldStateType<T, ManifoldType, PD, TD>& x)
    +
    164inline std::ostream& operator<<(std::ostream& os, const ManifoldStateType<T, ManifoldType, PD, TD>& x)
    165{
    166 os << "VectorStateType: pose=" << x.pose << "; twist=" << x.twist;
    167 return os;
    @@ -281,15 +280,15 @@
    172{
    - +
    -
    174 static Type ZeroType()
    +
    174 static Type ZeroType()
    175 {
    176 return Type::identity();
    177 }
    -
    178 static Type NansType()
    +
    178 static Type NansType()
    179 {
    180 return Type::nans();
    181 }
    @@ -301,15 +300,15 @@
    186{
    - +
    -
    188 static Type ZeroType()
    +
    188 static Type ZeroType()
    189 {
    190 return Type::identity();
    191 }
    -
    192 static Type NansType()
    +
    192 static Type NansType()
    193 {
    194 return Type::nans();
    195 }
    @@ -321,15 +320,15 @@
    200{
    - +
    -
    202 static Type ZeroType()
    +
    202 static Type ZeroType()
    203 {
    204 return Type::identity();
    205 }
    -
    206 static Type NansType()
    +
    206 static Type NansType()
    207 {
    208 return Type::nans();
    209 }
    @@ -338,11 +337,11 @@
    211
    212template<typename T>
    - +
    214
    215template<typename T>
    -
    216inline std::ostream& operator<<(std::ostream& os, const ScalarStateSignal<T>& x)
    +
    216inline std::ostream& operator<<(std::ostream& os, const ScalarStateSignal<T>& x)
    217{
    218 os << "ScalarStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
    219 return os;
    @@ -350,11 +349,11 @@
    221
    222template<typename T, size_t d>
    - +
    224
    225template<typename T, size_t d>
    -
    226inline std::ostream& operator<<(std::ostream& os, const VectorStateSignal<T, d>& x)
    +
    226inline std::ostream& operator<<(std::ostream& os, const VectorStateSignal<T, d>& x)
    227{
    228 os << "VectorStateSignal at t=" << x.t() << ": pose=" << x().pose.transpose()
    229 << "; twist=" << x().twist.transpose();
    @@ -363,11 +362,11 @@
    232
    233template<typename T, typename ManifoldType, size_t PD, size_t TD>
    - +
    235
    236template<typename T, typename ManifoldType, size_t PD, size_t TD>
    -
    237inline std::ostream& operator<<(std::ostream& os, const ManifoldStateSignal<T, ManifoldType, PD, TD>& x)
    +
    237inline std::ostream& operator<<(std::ostream& os, const ManifoldStateSignal<T, ManifoldType, PD, TD>& x)
    238{
    239 os << "ManifoldStateSignal at t=" << x.t() << ": pose=" << x().pose << "; twist=" << x().twist;
    240 return os;
    @@ -395,9 +394,9 @@
    258
    259template<typename T>
    - - - + + + @@ -413,13 +412,20 @@ +
    Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > > ManifoldStateSignal
    Definition State.h:234
    +
    Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > > VectorStateSignal
    Definition State.h:223
    +
    State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d > VectorStateType
    Definition State.h:142
    +
    Signal< ScalarStateSignalSpec< T >, ScalarStateSignalSpec< T > > ScalarStateSignal
    Definition State.h:213
    #define MAKE_MANIF_STATES(Manif, Dimension, TangentDimension)
    Definition State.h:251
    +
    State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD > ManifoldStateType
    Definition State.h:161
    State< T, PTS, PD, TTS, TD > operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r)
    Definition State.h:105
    ScalarStateSignal< double > ScalardStateSignal
    Definition State.h:262
    ScalarState< double > ScalardState
    Definition State.h:261
    +
    State< T, ScalarSignalSpec< T >, 1, ScalarSignalSpec< T >, 1 > ScalarStateType
    Definition State.h:123
    State< T, PTS, PD, TTS, TD > operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r)
    Definition State.h:87
    State< T, TTS, TD, TTS, TD > operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r)
    Definition State.h:96
    std::ostream & operator<<(std::ostream &os, const ScalarStateType< T > &x)
    Definition State.h:126
    +
    ScalarStateType< T > ScalarState
    Definition State.h:260
    #define MAKE_VECTOR_STATES(Dimension)
    Definition State.h:243
    ScalarStateType< T > operator/(const ScalarStateType< T > &l, const double &r)
    Definition State.h:133
    Definition Signal.h:38
    @@ -427,24 +433,27 @@
    Definition State.h:200
    static Type NansType()
    Definition State.h:206
    static Type ZeroType()
    Definition State.h:202
    +
    ManifoldStateType< T, ManifoldType, PD, TD > Type
    Definition State.h:201
    Definition Signal.h:620
    Definition State.h:172
    static Type ZeroType()
    Definition State.h:174
    +
    ScalarStateType< T > Type
    Definition State.h:173
    static Type NansType()
    Definition State.h:178
    Base type for all Model state representations.
    Definition State.h:34
    -
    static State identity()
    Definition State.h:54
    -
    State(T *arr)
    Definition State.h:46
    -
    PoseType pose
    TODO.
    Definition State.h:41
    + + +
    typename PoseTypeSpec::Type PoseType
    Definition State.h:35
    -
    TwistType twist
    Definition State.h:42
    -
    State & operator+=(const State< T2, TwistTypeSpec, TwistDim, TwistTypeSpec, TwistDim > &r)
    Definition State.h:78
    -
    static State nans()
    Definition State.h:62
    -
    State(const State &other)
    Definition State.h:48
    + +
    State & operator+=(const State< T2, ScalarSignalSpec< T >, TwistDim, ScalarSignalSpec< T >, TwistDim > &r)
    Definition State.h:78
    + +
    State(const State &other)
    Definition State.h:48
    typename TwistTypeSpec::Type TwistType
    Definition State.h:36
    State()
    Definition State.h:44
    -
    State & operator*=(const double &s)
    Definition State.h:70
    +
    State & operator*=(const double &s)
    Definition State.h:70
    Definition Signal.h:634
    Definition State.h:186
    +
    VectorStateType< T, d > Type
    Definition State.h:187
    static Type NansType()
    Definition State.h:192
    static Type ZeroType()
    Definition State.h:188
    @@ -453,7 +462,7 @@ diff --git a/docs/Utils_8h.html b/docs/Utils_8h.html index 06aba99..a1c63bb 100644 --- a/docs/Utils_8h.html +++ b/docs/Utils_8h.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Utils.h File Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -111,7 +115,7 @@ - +

    Namespaces

    namespace  signal_utils
    namespace  signal_utils
     

    @@ -125,7 +129,7 @@ diff --git a/docs/Utils_8h.js b/docs/Utils_8h.js index fab9aac..15acde7 100644 --- a/docs/Utils_8h.js +++ b/docs/Utils_8h.js @@ -1,4 +1,4 @@ var Utils_8h = [ - [ "getTimeDelta", "Utils_8h.html#ad7667542f893604d059a5d0022d2890c", null ] + [ "signal_utils::getTimeDelta", "namespacesignal__utils.html#ad7667542f893604d059a5d0022d2890c", null ] ]; \ No newline at end of file diff --git a/docs/Utils_8h_source.html b/docs/Utils_8h_source.html index b9b57f3..2bf94d5 100644 --- a/docs/Utils_8h_source.html +++ b/docs/Utils_8h_source.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals/Utils.h Source File @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,28 +42,28 @@

    - + + -
    @@ -136,7 +135,7 @@ diff --git a/docs/annotated.html b/docs/annotated.html index e5401bc..78336b1 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -3,7 +3,7 @@ - + signals-cpp: Class List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -133,7 +137,7 @@ diff --git a/docs/classModel-members.html b/docs/classModel-members.html index c1b1e1b..73e31a2 100644 --- a/docs/classModel-members.html +++ b/docs/classModel-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -123,7 +127,7 @@ diff --git a/docs/classModel.html b/docs/classModel.html index b888414..2f8e47e 100644 --- a/docs/classModel.html +++ b/docs/classModel.html @@ -3,7 +3,7 @@ - + signals-cpp: Model< DynamicsType > Class Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -140,11 +144,11 @@ double t () const  Get the current simulation time.
      -template<typename IntegratorType > +template<typename IntegratorType> bool simulate (const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)  Simulate the system response to an input over a specified time interval.
      -template<typename IntegratorType > +template<typename IntegratorType> bool simulate (const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)  Simulate the system response to an input over a specified time interval, chunked up into smaller integration increments.
      @@ -164,13 +168,13 @@

    Provides methods for initialization, reset, and simulation of dynamic models.

    Derived types:

    Member Typedef Documentation

    @@ -179,7 +183,7 @@

    -template<typename DynamicsType >
    +template<typename DynamicsType>
    @@ -195,7 +199,7 @@

    -template<typename DynamicsType >
    +template<typename DynamicsType>

    using Model< DynamicsType >::InputSignalType = typename DynamicsType::InputSignalType
    @@ -211,7 +215,7 @@

    -template<typename DynamicsType >
    +template<typename DynamicsType>

    using Model< DynamicsType >::ParamsType = typename DynamicsType::ParamsType
    @@ -227,7 +231,7 @@

    -template<typename DynamicsType >
    +template<typename DynamicsType>

    using Model< DynamicsType >::StateDotSignalType = typename DynamicsType::StateDotSignalType
    @@ -244,7 +248,7 @@

    -template<typename DynamicsType >
    +template<typename DynamicsType>

    using Model< DynamicsType >::StateSignalType = typename DynamicsType::StateSignalType
    - +
    @@ -252,13 +256,13 @@

    Model< DynamicsType >::Model

    ())
    -inline +inline

    - + - + - + - +
    @@ -370,27 +374,27 @@

    bool Model< DynamicsType >::simulate

    (const InputSignalType & u, const InputSignalType & u,
    const double & tf, const double & tf,
    const bool & insertIntoHistory = false, const bool & insertIntoHistory = false,
    const bool & calculateXddot = false )const bool & calculateXddot = false )
    -inline +inline
    - + - + - + - + - +
    @@ -425,32 +429,32 @@

    bool Model< DynamicsType >::simulate

    (const InputSignalType & u, const InputSignalType & u,
    const double & tf, const double & tf,
    const double & dt, const double & dt,
    const bool & insertIntoHistory = false, const bool & insertIntoHistory = false,
    const bool & calculateXddot = false )const bool & calculateXddot = false )
    -inline +inline
    @@ -506,7 +510,7 @@

    -template<typename DynamicsType >
    +template<typename DynamicsType>
    @@ -524,7 +528,7 @@

    -template<typename DynamicsType >
    +template<typename DynamicsType>

    StateSignalType Model< DynamicsType >::x
    @@ -545,7 +549,7 @@

      - +
    diff --git a/docs/classSignal-members.html b/docs/classSignal-members.html index 134e918..0baccc1 100644 --- a/docs/classSignal-members.html +++ b/docs/classSignal-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@

    StateDotSignalType Model< DynamicsType >::xdot

    - + +
    @@ -116,17 +120,17 @@ operator()() constSignal< BaseSignalSpec, TangentSignalSpec >inline operator()(const double &t) constSignal< BaseSignalSpec, TangentSignalSpec >inline operator()(const std::vector< double > &t) constSignal< BaseSignalSpec, TangentSignalSpec >inline - operator*Signal< BaseSignalSpec, TangentSignalSpec >friend - operator*Signal< BaseSignalSpec, TangentSignalSpec >friend - operator+Signal< BaseSignalSpec, TangentSignalSpec >friend - operator-Signal< BaseSignalSpec, TangentSignalSpec >friend + operator*(const double &l, const Signal< BSS, TSS > &r)Signal< BaseSignalSpec, TangentSignalSpec >friend + operator*(const Signal< BSS, TSS > &l, const double &r)Signal< BaseSignalSpec, TangentSignalSpec >friend + operator+(const Signal< BSS, TSS > &l, const Signal< TSS, TSS > &r)Signal< BaseSignalSpec, TangentSignalSpec >friend + operator-(const Signal< BSS, TSS > &l, const Signal< BSS, TSS > &r)Signal< BaseSignalSpec, TangentSignalSpec >friend reset()Signal< BaseSignalSpec, TangentSignalSpec >inline setDerivativeMethod(DerivativeMethod method)Signal< BaseSignalSpec, TangentSignalSpec >inline setExtrapolationMethod(ExtrapolationMethod method)Signal< BaseSignalSpec, TangentSignalSpec >inline setInterpolationMethod(InterpolationMethod method)Signal< BaseSignalSpec, TangentSignalSpec >inline Signal()Signal< BaseSignalSpec, TangentSignalSpec >inline Signal(const Signal &other)Signal< BaseSignalSpec, TangentSignalSpec >inline - SignalDPComparatorSignal< BaseSignalSpec, TangentSignalSpec > + SignalDPComparatorSignal< BaseSignalSpec, TangentSignalSpec > t() constSignal< BaseSignalSpec, TangentSignalSpec >inline TangentType typedefSignal< BaseSignalSpec, TangentSignalSpec > update(const double &_t, const BaseType &_x, bool insertHistory=false)Signal< BaseSignalSpec, TangentSignalSpec >inline @@ -138,7 +142,7 @@ diff --git a/docs/classSignal.html b/docs/classSignal.html index a76f9d9..a930726 100644 --- a/docs/classSignal.html +++ b/docs/classSignal.html @@ -3,7 +3,7 @@ - + signals-cpp: Signal< BaseSignalSpec, TangentSignalSpec > Class Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -165,10 +169,10 @@ - + - - + + @@ -178,16 +182,16 @@

    Public Attributes

    struct { 
    struct { 
     
    SignalDPComparator 
     
    SignalDPComparator 
     
    InterpolationMethod interpolationMethod
     
    ExtrapolationMethod extrapolationMethod
    - + - + - + - +

    Friends

    template<typename BSS , typename TSS >
    template<typename BSS, typename TSS>
    Signal< BSS, TSS > operator+ (const Signal< BSS, TSS > &l, const Signal< TSS, TSS > &r)
     
    template<typename BSS , typename TSS >
    template<typename BSS, typename TSS>
    Signal< TSS, TSS > operator- (const Signal< BSS, TSS > &l, const Signal< BSS, TSS > &r)
     
    template<typename BSS , typename TSS >
    template<typename BSS, typename TSS>
    Signal< BSS, TSS > operator* (const double &l, const Signal< BSS, TSS > &r)
     
    template<typename BSS , typename TSS >
    template<typename BSS, typename TSS>
    Signal< BSS, TSS > operator* (const Signal< BSS, TSS > &l, const double &r)
     
    @@ -198,7 +202,7 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>
    @@ -214,7 +218,7 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    using Signal< BaseSignalSpec, TangentSignalSpec >::BaseType = typename BaseSignalSpec::Type
    @@ -231,7 +235,7 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    using Signal< BaseSignalSpec, TangentSignalSpec >::TangentType = typename TangentSignalSpec::Type
    - +
    @@ -239,13 +243,13 @@

    Signal< BaseSignalSpec, TangentSignalSpec >::Signal

    ())
    -inline +inline

    - + @@ -775,7 +779,7 @@

    -friend +friend

    @@ -765,7 +769,7 @@

    Signal< BSS, TSS > operator*

    (const double & l, const double & l,
    - + @@ -808,7 +812,7 @@

    -friend +friend

    @@ -798,7 +802,7 @@

    Signal< BSS, TSS > operator*

    (const Signal< BSS, TSS > & l, const Signal< BSS, TSS > & l,
    - + @@ -841,7 +845,7 @@

    -friend +friend

    @@ -831,7 +835,7 @@

    Signal< BSS, TSS > operator+

    (const Signal< BSS, TSS > & l, const Signal< BSS, TSS > & l,
    - + @@ -874,7 +878,7 @@

    -friend +friend

    @@ -864,7 +868,7 @@

    Signal< TSS, TSS > operator-

    (const Signal< BSS, TSS > & l, const Signal< BSS, TSS > & l,
    @@ -888,7 +892,7 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>
    @@ -904,7 +908,7 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    DerivativeMethod Signal< BaseSignalSpec, TangentSignalSpec >::derivativeMethod
    @@ -920,7 +924,7 @@

    -template<typename BaseSignalSpec , typename TangentSignalSpec >
    +template<typename BaseSignalSpec, typename TangentSignalSpec>

    ExtrapolationMethod Signal< BaseSignalSpec, TangentSignalSpec >::extrapolationMethod
    @@ -930,8 +934,8 @@

    -

    ◆ [struct]

    + +

    ◆ [struct]

    @@ -953,7 +957,7 @@

      - +

    diff --git a/docs/classSignal.js b/docs/classSignal.js index 8b3db6d..be4991f 100644 --- a/docs/classSignal.js +++ b/docs/classSignal.js @@ -28,5 +28,5 @@ var classSignal = [ "derivativeMethod", "classSignal.html#ac0536cd4021cc4815a3dbb60c5b4f473", null ], [ "extrapolationMethod", "classSignal.html#aff76e692ad975b7721ecf6e60d33a11f", null ], [ "interpolationMethod", "classSignal.html#ae4c3f0098aaec52921d28cce09ff1ed4", null ], - [ "SignalDPComparator", "classSignal.html#a3961e7ce30f40f8104dd3d25f2e70a7f", null ] + [ "SignalDPComparator", "classSignal.html#a6db70e8a2784b5596a47f2249a2627b7", null ] ]; \ No newline at end of file diff --git a/docs/classes.html b/docs/classes.html index 6e78c15..1f0da96 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -3,7 +3,7 @@ - + signals-cpp: Class Index @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    InterpolationMethod Signal< BaseSignalSpec, TangentSignalSpec >::interpolationMethod

    - + +
    @@ -131,7 +135,7 @@ diff --git a/docs/clipboard.js b/docs/clipboard.js index 42c1fb0..9da9f3c 100644 --- a/docs/clipboard.js +++ b/docs/clipboard.js @@ -28,8 +28,8 @@ SOFTWARE. */ let clipboard_title = "Copy to clipboard" -let clipboard_icon = `` -let clipboard_successIcon = `` +let clipboard_icon = `` +let clipboard_successIcon = `` let clipboard_successDuration = 1000 $(function() { diff --git a/docs/dir_661483514bb8dea267426763b771558e.html b/docs/dir_661483514bb8dea267426763b771558e.html index 72e5498..45c62b6 100644 --- a/docs/dir_661483514bb8dea267426763b771558e.html +++ b/docs/dir_661483514bb8dea267426763b771558e.html @@ -3,7 +3,7 @@ - + signals-cpp: include/signals Directory Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -124,7 +128,7 @@ diff --git a/docs/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/dir_d44c64559bbebec7f509842c48db8b23.html index 7bbf36f..1d4927a 100644 --- a/docs/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/dir_d44c64559bbebec7f509842c48db8b23.html @@ -3,7 +3,7 @@ - + signals-cpp: include Directory Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -114,7 +118,7 @@ diff --git a/docs/doxygen.css b/docs/doxygen.css index b4fc124..90fba19 100644 --- a/docs/doxygen.css +++ b/docs/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.10.0*/ +/* The standard CSS for doxygen 1.13.2*/ body { background-color: white; @@ -269,7 +269,24 @@ dl.el { margin-left: -1cm; } +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + ul { + text-indent: 0px; overflow: visible; } @@ -321,8 +338,7 @@ pre.fragment { opacity: 0; position: absolute; display: inline; - overflow: auto; - fill: black; + overflow: hidden; justify-content: center; align-items: center; cursor: pointer; @@ -334,7 +350,7 @@ pre.fragment { } .fragment:hover .clipboard, .clipboard.success { - opacity: .28; + opacity: .4; } .clipboard:hover, .clipboard.success { @@ -1040,7 +1056,7 @@ table.fieldtable { padding: 3px 7px 2px; } -.fieldtable td.fieldtype, .fieldtable td.fieldname { +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { white-space: nowrap; border-right: 1px solid #A8B8D9; border-bottom: 1px solid #A8B8D9; @@ -1051,6 +1067,12 @@ table.fieldtable { padding-top: 3px; } +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + .fieldtable td.fielddoc { border-bottom: 1px solid #A8B8D9; } @@ -1226,7 +1248,7 @@ dl.note { border-color: #D0C000; } -dl.warning, dl.attention { +dl.warning, dl.attention, dl.important { margin-left: -7px; padding-left: 3px; border-left: 4px solid; @@ -1274,7 +1296,7 @@ dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { font-weight: bold !important; } -dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { padding: 10px; margin: 10px 0px; @@ -1287,13 +1309,13 @@ dl.section dd { margin-bottom: 2px; } -dl.warning, dl.attention { +dl.warning, dl.attention, dl.important { background: #f8d1cc; border-left: 8px solid #b61825; color: #75070f; } -dl.warning dt, dl.attention dt { +dl.warning dt, dl.attention dt, dl.important dt { color: #b61825; } @@ -1351,7 +1373,9 @@ dl.deprecated dt a { color: #5b6269 !important; } -dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { margin-inline-start: 0px; } @@ -1397,6 +1421,11 @@ dl.invariant dt, dl.pre dt, dl.post dt { padding: 2px 0px; } +#side-nav #projectname +{ + font-size: 130%; +} + #projectbrief { font-size: 90%; @@ -1503,20 +1532,17 @@ div.toc ul { padding: 0px; } -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { +div.toc li[class^='level'] { margin-left: 15px; } -div.toc li.level3 { - margin-left: 15px; +div.toc li.level1 { + margin-left: 0px; } -div.toc li.level4 { - margin-left: 15px; +div.toc li.empty { + background-image: none; + margin-top: 0px; } span.emoji { @@ -1787,10 +1813,14 @@ th.markdownTableHeadCenter, td.markdownTableBodyCenter { text-align: center } -tt, code, kbd, samp +tt, code, kbd { display: inline-block; } +tt, code, kbd +{ + vertical-align: top; +} /* @end */ u { diff --git a/docs/doxygen_crawl.html b/docs/doxygen_crawl.html index 1c0b116..b97c98b 100644 --- a/docs/doxygen_crawl.html +++ b/docs/doxygen_crawl.html @@ -4,151 +4,377 @@ Validator / crawler helper - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + - + + + + - - - + + + + - + + + + + + + + + + - + + + + + + + + + + - + + + + - + + + + + - + + + + + - + + + + + + + + + + - + + + + + + + + + + - + + + + - - - + + + + - + + + + - + + - + + + + + + + + + + + + - + + + + + + + + + + - + + - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + diff --git a/docs/dynsections.js b/docs/dynsections.js index 8012854..3cc426a 100644 --- a/docs/dynsections.js +++ b/docs/dynsections.js @@ -23,6 +23,10 @@ @licend The above is the entire license notice for the JavaScript code in this file */ +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + let dynsection = { // helper function diff --git a/docs/files.html b/docs/files.html index a1ad5e3..530668a 100644 --- a/docs/files.html +++ b/docs/files.html @@ -3,7 +3,7 @@ - + signals-cpp: File List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -119,7 +123,7 @@ diff --git a/docs/functions.html b/docs/functions.html index 0deee29..52062e5 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -3,7 +3,7 @@ - + signals-cpp: Class Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
    @@ -43,18 +42,23 @@
    - + +
    @@ -185,9 +189,9 @@

    - s -

    • setInterpolationMethod() : Signal< BaseSignalSpec, TangentSignalSpec >
    • setParams() : Model< DynamicsType >
    • Signal() : Signal< BaseSignalSpec, TangentSignalSpec >
    • -
    • SignalDPComparator : Signal< BaseSignalSpec, TangentSignalSpec >
    • +
    • SignalDPComparator : Signal< BaseSignalSpec, TangentSignalSpec >
    • simulate() : Model< DynamicsType >
    • -
    • State() : State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >
    • +
    • State() : State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >
    • StateDotDotType : RigidBodyDynamics3DOF< T >, RigidBodyDynamics6DOF< T >, RotationalDynamics1DOF< T >, RotationalDynamics3DOF< T >, TranslationalDynamicsBase< IST, SST, SDST, d, PT >
    • StateDotSignalType : Model< DynamicsType >, RigidBodyDynamics3DOF< T >, RigidBodyDynamics6DOF< T >, RotationalDynamics1DOF< T >, RotationalDynamics3DOF< T >, TranslationalDynamicsBase< IST, SST, SDST, d, PT >
    • StateDotType : RigidBodyDynamics3DOF< T >, RigidBodyDynamics6DOF< T >, RotationalDynamics1DOF< T >, RotationalDynamics3DOF< T >, TranslationalDynamicsBase< IST, SST, SDST, d, PT >
    • @@ -224,7 +228,7 @@

      - z -

        diff --git a/docs/functions_func.html b/docs/functions_func.html index 4501197..0868c0f 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -3,7 +3,7 @@ - + signals-cpp: Class Members - Functions @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -173,7 +177,7 @@

        - z -

          diff --git a/docs/functions_rela.html b/docs/functions_rela.html index 6deb0a5..a6b4aa5 100644 --- a/docs/functions_rela.html +++ b/docs/functions_rela.html @@ -3,7 +3,7 @@ - + signals-cpp: Class Members - Related Symbols @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
          @@ -43,18 +42,23 @@
          - + +
          @@ -109,7 +113,7 @@ diff --git a/docs/functions_type.html b/docs/functions_type.html index 1f5de03..2179666 100644 --- a/docs/functions_type.html +++ b/docs/functions_type.html @@ -3,7 +3,7 @@ - + signals-cpp: Class Members - Typedefs @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
          @@ -43,18 +42,23 @@
          - + +
          @@ -137,7 +141,7 @@

          - t -

            diff --git a/docs/functions_vars.html b/docs/functions_vars.html index f21d672..9c45346 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -3,7 +3,7 @@ - + signals-cpp: Class Members - Variables @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
            @@ -43,18 +42,23 @@
            - + +
            @@ -107,7 +111,7 @@
          • J : RigidBodyParams2D, RigidBodyParams3D
          • m : RigidBodyParams1D, RigidBodyParams2D, RigidBodyParams3D
          • pose : State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >
          • -
          • SignalDPComparator : Signal< BaseSignalSpec, TangentSignalSpec >
          • +
          • SignalDPComparator : Signal< BaseSignalSpec, TangentSignalSpec >
          • t : Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP
          • twist : State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >
          • x : Model< DynamicsType >, Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP
          • @@ -118,7 +122,7 @@ diff --git a/docs/globals.html b/docs/globals.html index 8c0c0f4..b8eecaa 100644 --- a/docs/globals.html +++ b/docs/globals.html @@ -3,7 +3,7 @@ - + signals-cpp: File Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
            @@ -43,18 +42,23 @@
            - + +
            @@ -114,7 +118,7 @@

            - d -

              - e -

              @@ -153,22 +157,22 @@

              - n -

                - o -

                - r -

                @@ -184,42 +188,42 @@

                - s -

                - t -

                @@ -227,63 +231,63 @@

                - v -

                • Vector10dSignal : Signal.h
                • Vector10dState : State.h
                • Vector10dStateSignal : State.h
                • -
                • Vector10Signal : Signal.h
                • -
                • Vector10State : State.h
                • -
                • Vector10StateSignal : State.h
                • +
                • Vector10Signal : Signal.h
                • +
                • Vector10State : State.h
                • +
                • Vector10StateSignal : State.h
                • Vector1dSignal : Signal.h
                • Vector1dState : State.h
                • Vector1dStateSignal : State.h
                • -
                • Vector1Signal : Signal.h
                • -
                • Vector1State : State.h
                • -
                • Vector1StateSignal : State.h
                • +
                • Vector1Signal : Signal.h
                • +
                • Vector1State : State.h
                • +
                • Vector1StateSignal : State.h
                • Vector2dSignal : Signal.h
                • Vector2dState : State.h
                • Vector2dStateSignal : State.h
                • -
                • Vector2Signal : Signal.h
                • -
                • Vector2State : State.h
                • -
                • Vector2StateSignal : State.h
                • +
                • Vector2Signal : Signal.h
                • +
                • Vector2State : State.h
                • +
                • Vector2StateSignal : State.h
                • Vector3dSignal : Signal.h
                • Vector3dState : State.h
                • Vector3dStateSignal : State.h
                • -
                • Vector3Signal : Signal.h
                • -
                • Vector3State : State.h
                • -
                • Vector3StateSignal : State.h
                • +
                • Vector3Signal : Signal.h
                • +
                • Vector3State : State.h
                • +
                • Vector3StateSignal : State.h
                • Vector4dSignal : Signal.h
                • Vector4dState : State.h
                • Vector4dStateSignal : State.h
                • -
                • Vector4Signal : Signal.h
                • -
                • Vector4State : State.h
                • -
                • Vector4StateSignal : State.h
                • +
                • Vector4Signal : Signal.h
                • +
                • Vector4State : State.h
                • +
                • Vector4StateSignal : State.h
                • Vector5dSignal : Signal.h
                • Vector5dState : State.h
                • Vector5dStateSignal : State.h
                • -
                • Vector5Signal : Signal.h
                • -
                • Vector5State : State.h
                • -
                • Vector5StateSignal : State.h
                • +
                • Vector5Signal : Signal.h
                • +
                • Vector5State : State.h
                • +
                • Vector5StateSignal : State.h
                • Vector6dSignal : Signal.h
                • Vector6dState : State.h
                • Vector6dStateSignal : State.h
                • -
                • Vector6Signal : Signal.h
                • -
                • Vector6State : State.h
                • -
                • Vector6StateSignal : State.h
                • +
                • Vector6Signal : Signal.h
                • +
                • Vector6State : State.h
                • +
                • Vector6StateSignal : State.h
                • Vector7dSignal : Signal.h
                • Vector7dState : State.h
                • Vector7dStateSignal : State.h
                • -
                • Vector7Signal : Signal.h
                • -
                • Vector7State : State.h
                • -
                • Vector7StateSignal : State.h
                • +
                • Vector7Signal : Signal.h
                • +
                • Vector7State : State.h
                • +
                • Vector7StateSignal : State.h
                • Vector8dSignal : Signal.h
                • Vector8dState : State.h
                • Vector8dStateSignal : State.h
                • -
                • Vector8Signal : Signal.h
                • -
                • Vector8State : State.h
                • -
                • Vector8StateSignal : State.h
                • +
                • Vector8Signal : Signal.h
                • +
                • Vector8State : State.h
                • +
                • Vector8StateSignal : State.h
                • Vector9dSignal : Signal.h
                • Vector9dState : State.h
                • Vector9dStateSignal : State.h
                • -
                • Vector9Signal : Signal.h
                • -
                • Vector9State : State.h
                • -
                • Vector9StateSignal : State.h
                • +
                • Vector9Signal : Signal.h
                • +
                • Vector9State : State.h
                • +
                • Vector9StateSignal : State.h
                • VectorSignal : Signal.h
                • VectorStateSignal : State.h
                • VectorStateType : State.h
                • @@ -299,7 +303,7 @@

                  - z -

                    diff --git a/docs/globals_defs.html b/docs/globals_defs.html index 91d37ec..97997fa 100644 --- a/docs/globals_defs.html +++ b/docs/globals_defs.html @@ -3,7 +3,7 @@ - + signals-cpp: File Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
                    @@ -43,18 +42,23 @@
                    - + +
                    @@ -112,7 +116,7 @@ diff --git a/docs/globals_enum.html b/docs/globals_enum.html index 59305d4..c1b5f7e 100644 --- a/docs/globals_enum.html +++ b/docs/globals_enum.html @@ -3,7 +3,7 @@ - + signals-cpp: File Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
                    @@ -43,18 +42,23 @@
                    - + +
                    @@ -109,7 +113,7 @@ diff --git a/docs/globals_eval.html b/docs/globals_eval.html index f014520..5fd5945 100644 --- a/docs/globals_eval.html +++ b/docs/globals_eval.html @@ -3,7 +3,7 @@ - + signals-cpp: File Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
                    @@ -43,18 +42,23 @@
                    - + +
                    @@ -114,7 +118,7 @@ diff --git a/docs/globals_func.html b/docs/globals_func.html index c449299..25339b7 100644 --- a/docs/globals_func.html +++ b/docs/globals_func.html @@ -3,7 +3,7 @@ - + signals-cpp: File Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
                    @@ -43,18 +42,23 @@
                    - + +
                    @@ -100,10 +104,10 @@
                    Here is a list of all functions with links to the files they belong to:
                    @@ -111,7 +115,7 @@ diff --git a/docs/globals_type.html b/docs/globals_type.html index 514f8fd..2397070 100644 --- a/docs/globals_type.html +++ b/docs/globals_type.html @@ -3,7 +3,7 @@ - + signals-cpp: File Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
                    @@ -43,18 +42,23 @@
                    - + +
                    @@ -102,7 +106,7 @@
                    Here is a list of all typedefs with links to the files they belong to:

                    - e -

                    @@ -114,13 +118,13 @@

                    - m -

                      - r -

                      @@ -136,42 +140,42 @@

                      - s -

                      - t -

                      @@ -179,63 +183,63 @@

                      - v -

                      • Vector10dSignal : Signal.h
                      • Vector10dState : State.h
                      • Vector10dStateSignal : State.h
                      • -
                      • Vector10Signal : Signal.h
                      • -
                      • Vector10State : State.h
                      • -
                      • Vector10StateSignal : State.h
                      • +
                      • Vector10Signal : Signal.h
                      • +
                      • Vector10State : State.h
                      • +
                      • Vector10StateSignal : State.h
                      • Vector1dSignal : Signal.h
                      • Vector1dState : State.h
                      • Vector1dStateSignal : State.h
                      • -
                      • Vector1Signal : Signal.h
                      • -
                      • Vector1State : State.h
                      • -
                      • Vector1StateSignal : State.h
                      • +
                      • Vector1Signal : Signal.h
                      • +
                      • Vector1State : State.h
                      • +
                      • Vector1StateSignal : State.h
                      • Vector2dSignal : Signal.h
                      • Vector2dState : State.h
                      • Vector2dStateSignal : State.h
                      • -
                      • Vector2Signal : Signal.h
                      • -
                      • Vector2State : State.h
                      • -
                      • Vector2StateSignal : State.h
                      • +
                      • Vector2Signal : Signal.h
                      • +
                      • Vector2State : State.h
                      • +
                      • Vector2StateSignal : State.h
                      • Vector3dSignal : Signal.h
                      • Vector3dState : State.h
                      • Vector3dStateSignal : State.h
                      • -
                      • Vector3Signal : Signal.h
                      • -
                      • Vector3State : State.h
                      • -
                      • Vector3StateSignal : State.h
                      • +
                      • Vector3Signal : Signal.h
                      • +
                      • Vector3State : State.h
                      • +
                      • Vector3StateSignal : State.h
                      • Vector4dSignal : Signal.h
                      • Vector4dState : State.h
                      • Vector4dStateSignal : State.h
                      • -
                      • Vector4Signal : Signal.h
                      • -
                      • Vector4State : State.h
                      • -
                      • Vector4StateSignal : State.h
                      • +
                      • Vector4Signal : Signal.h
                      • +
                      • Vector4State : State.h
                      • +
                      • Vector4StateSignal : State.h
                      • Vector5dSignal : Signal.h
                      • Vector5dState : State.h
                      • Vector5dStateSignal : State.h
                      • -
                      • Vector5Signal : Signal.h
                      • -
                      • Vector5State : State.h
                      • -
                      • Vector5StateSignal : State.h
                      • +
                      • Vector5Signal : Signal.h
                      • +
                      • Vector5State : State.h
                      • +
                      • Vector5StateSignal : State.h
                      • Vector6dSignal : Signal.h
                      • Vector6dState : State.h
                      • Vector6dStateSignal : State.h
                      • -
                      • Vector6Signal : Signal.h
                      • -
                      • Vector6State : State.h
                      • -
                      • Vector6StateSignal : State.h
                      • +
                      • Vector6Signal : Signal.h
                      • +
                      • Vector6State : State.h
                      • +
                      • Vector6StateSignal : State.h
                      • Vector7dSignal : Signal.h
                      • Vector7dState : State.h
                      • Vector7dStateSignal : State.h
                      • -
                      • Vector7Signal : Signal.h
                      • -
                      • Vector7State : State.h
                      • -
                      • Vector7StateSignal : State.h
                      • +
                      • Vector7Signal : Signal.h
                      • +
                      • Vector7State : State.h
                      • +
                      • Vector7StateSignal : State.h
                      • Vector8dSignal : Signal.h
                      • Vector8dState : State.h
                      • Vector8dStateSignal : State.h
                      • -
                      • Vector8Signal : Signal.h
                      • -
                      • Vector8State : State.h
                      • -
                      • Vector8StateSignal : State.h
                      • +
                      • Vector8Signal : Signal.h
                      • +
                      • Vector8State : State.h
                      • +
                      • Vector8StateSignal : State.h
                      • Vector9dSignal : Signal.h
                      • Vector9dState : State.h
                      • Vector9dStateSignal : State.h
                      • -
                      • Vector9Signal : Signal.h
                      • -
                      • Vector9State : State.h
                      • -
                      • Vector9StateSignal : State.h
                      • +
                      • Vector9Signal : Signal.h
                      • +
                      • Vector9State : State.h
                      • +
                      • Vector9StateSignal : State.h
                      • VectorSignal : Signal.h
                      • VectorStateSignal : State.h
                      • VectorStateType : State.h
                      • @@ -245,7 +249,7 @@

                        - v -

                          diff --git a/docs/index.html b/docs/index.html index 2ec7564..1f3d7e5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,7 +3,7 @@ - + signals-cpp: signals-cpp Library Documentation @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
                          @@ -43,18 +42,23 @@
                          - + +
                          @@ -122,13 +126,13 @@

                          make # or make install

                          By default, building will also build and run the unit tests, but this can be turned off with the CMake option BUILD_TESTS.

                    - +
                    diff --git a/docs/jquery.js b/docs/jquery.js index 1dffb65..875ada7 100644 --- a/docs/jquery.js +++ b/docs/jquery.js @@ -1,17 +1,143 @@ /*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
                    "],col:[2,"","
                    "],tr:[2,"","
                    "],td:[3,"","
                    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
                    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
                    "],col:[2,"","
                    "],tr:[2,"","
                    "],td:[3,"","
                    "],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
                    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
                    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n
            ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
            ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
          "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n
          ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ +this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
        ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right-1){ +targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", +"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( +session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} +closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( +session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, +function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); +tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, +finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); +return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} +function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), +elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, +viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + */!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, +"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); +/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
        ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), +mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( +$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( +this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( +"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" +).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
        ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( +this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( +var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ +return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( +!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( +this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 +]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( +"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ +t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" +)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ +t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), +a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, +downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) +)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t +)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), +canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, +rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} +return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, +bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); diff --git a/docs/menu.js b/docs/menu.js index 717761d..0fd1e99 100644 --- a/docs/menu.js +++ b/docs/menu.js @@ -22,7 +22,7 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { function makeTree(data,relPath) { let result=''; if ('children' in data) { @@ -91,7 +91,7 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { let prevWidth = 0; if ($mainMenuState.length) { const initResizableIfExists = function() { - if (typeof initResizable==='function') initResizable(); + if (typeof initResizable==='function') initResizable(treeview); } // animate mobile menu $mainMenuState.change(function() { diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index 0a46afe..f7c443c 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -3,7 +3,7 @@ - + signals-cpp: Namespace Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -107,7 +111,7 @@ diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index f12b75e..36fd00b 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -3,7 +3,7 @@ - + signals-cpp: Namespace Members @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -107,7 +111,7 @@ diff --git a/docs/namespaces.html b/docs/namespaces.html index 3a2c6c6..585860f 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -3,7 +3,7 @@ - + signals-cpp: Namespace List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -112,7 +116,7 @@ diff --git a/docs/namespacesignal__utils.html b/docs/namespacesignal__utils.html index b9533da..76ed616 100644 --- a/docs/namespacesignal__utils.html +++ b/docs/namespacesignal__utils.html @@ -3,7 +3,7 @@ - + signals-cpp: signal_utils Namespace Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -156,7 +160,7 @@

        diff --git a/docs/navtree.js b/docs/navtree.js index 884b79b..2d4fa84 100644 --- a/docs/navtree.js +++ b/docs/navtree.js @@ -122,9 +122,9 @@ function initNavTree(toroot,relpath) { if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || ancParent.is(':header')) { - pos = ancParent.position().top; + pos = ancParent.offset().top; } else if (anchor.position()) { - pos = anchor.position().top; + pos = anchor.offset().top; } if (pos) { const dcOffset = docContent.offset().top; @@ -136,8 +136,19 @@ function initNavTree(toroot,relpath) { docContent.animate({ scrollTop: pos + dcScrTop - dcOffset },Math.max(50,Math.min(500,dist)),function() { - window.location.href=aname; animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } }); } } @@ -260,18 +271,6 @@ function initNavTree(toroot,relpath) { const highlightAnchor = function() { const aname = hashUrl(); const anchor = $(aname); - if (anchor.parent().attr('class')=='memItemLeft') { - let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); - glowEffect(rows.children(),300); // member without details - } else if (anchor.parent().attr('class')=='fieldname') { - glowEffect(anchor.parent().parent(),1000); // enum value - } else if (anchor.parent().attr('class')=='fieldtype') { - glowEffect(anchor.parent().parent(),1000); // struct field - } else if (anchor.parent().is(":header")) { - glowEffect(anchor.parent(),1000); // section header - } else { - glowEffect(anchor.next(),1000); // normal member - } gotoAnchor(anchor,aname); } @@ -453,23 +452,25 @@ function initNavTree(toroot,relpath) { showRoot(); $(window).bind('hashchange', () => { - if (window.location.hash && window.location.hash.length>1) { - let a; - if ($(location).attr('hash')) { - const clslink=stripPath(pathName())+':'+hashValue(); - a=$('.item a[class$="'+clslink.replace(/1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ resizeWidth() }); - $(sidenav).resizable({ minWidth: 0 }); - $(window).resize(() => resizeHeight()); - const device = navigator.userAgent.toLowerCase(); - const touch_device = device.match(/(iphone|ipod|ipad|android)/); - if (touch_device) { /* wider split bar for touch only devices */ - $(sidenav).css({ paddingRight:'20px' }); - $('.ui-resizable-e').css({ width:'20px' }); - $('#nav-sync').css({ right:'34px' }); - barWidth=20; + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); } - const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); - if (width) { restoreWidth(width); } else { resizeWidth(); } - resizeHeight(); + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); const url = location.href; const i=url.indexOf("#"); if (i>=0) window.location.hash=url.substr(i); - const _preventDefault = (evt) => evt.preventDefault(); - $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); - $(".ui-resizable-handle").dblclick(collapseExpand); - $(window).on('load',resizeHeight); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + // workaround for firefox + $("body").css({overflow: "hidden"}); + } + $(window).on('load',function() { resizeHeight(treeview); }); } /* @license-end */ diff --git a/docs/search/all_10.js b/docs/search/all_10.js index b04f6ae..4da5f2c 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -2,19 +2,22 @@ var searchData= [ ['t_0',['t',['../structSignal_1_1SignalDP.html#ac9d0651b25c9bcf14fcfc65a32fcfa86',1,'Signal::SignalDP::t'],['../classModel.html#a7661852411b9ffd59240d5d5ca0e4dd3',1,'Model::t()'],['../classSignal.html#a058783faf86f369b296c50d4e72c0881',1,'Signal::t() const']]], ['tangenttype_1',['TangentType',['../classSignal.html#aa0094b1c69fd482de9de83b99634996a',1,'Signal']]], - ['translational1dofmodel_2',['Translational1DOFModel',['../Models_8h.html#a06f4823dd2b571a8718ccad09ce44fe7',1,'Models.h']]], + ['translational1dofmodel_2',['Translational1DOFModel',['../Models_8h.html#af9ad4901a092a7e81f8b092d1dbcf5f5',1,'Models.h']]], ['translational1dofmodeld_3',['Translational1DOFModeld',['../Models_8h.html#ab405c6c48aa770f74c7e942302b956c5',1,'Models.h']]], - ['translational2dofmodel_4',['Translational2DOFModel',['../Models_8h.html#aa8b7fa1f2cfd2453d95d80ce49abd8fc',1,'Models.h']]], + ['translational2dofmodel_4',['Translational2DOFModel',['../Models_8h.html#aee5681b9331f5514938a77680e9e1162',1,'Models.h']]], ['translational2dofmodeld_5',['Translational2DOFModeld',['../Models_8h.html#a7768cd6b33a5d94a677357664052d096',1,'Models.h']]], - ['translational3dofmodel_6',['Translational3DOFModel',['../Models_8h.html#aae658b45855be04ff99456f612008b96',1,'Models.h']]], + ['translational3dofmodel_6',['Translational3DOFModel',['../Models_8h.html#a3d0d9bd06d48c1d0022090b040895a62',1,'Models.h']]], ['translational3dofmodeld_7',['Translational3DOFModeld',['../Models_8h.html#a3c501b1f5d946eb9aa36b92d2ec611c5',1,'Models.h']]], ['translationaldynamics1dof_8',['TranslationalDynamics1DOF',['../Models_8h.html#aac436ed3df206f07f93110e3daffe773',1,'Models.h']]], ['translationaldynamics2dof_9',['TranslationalDynamics2DOF',['../Models_8h.html#ae3889fdff8dd169aef62fcdf6340e0e1',1,'Models.h']]], ['translationaldynamics3dof_10',['TranslationalDynamics3DOF',['../Models_8h.html#ad1ba77eac61f5da29df59b8b4b0d7a0d',1,'Models.h']]], ['translationaldynamicsbase_11',['TranslationalDynamicsBase',['../structTranslationalDynamicsBase.html',1,'']]], - ['trapezoidalintegrator_12',['TrapezoidalIntegrator',['../Integration_8h.html#a95780a5b17730ea091c504cc3ab98b84',1,'Integration.h']]], - ['trapezoidalintegratorspec_13',['TrapezoidalIntegratorSpec',['../structTrapezoidalIntegratorSpec.html',1,'']]], - ['twist_14',['twist',['../structState.html#a3f5fb4275701e71a56d2fa1fb8d54080',1,'State']]], - ['twisttype_15',['TwistType',['../structState.html#ab58b6e2fe6ea3c2777c5a8a92f6665a1',1,'State']]], - ['type_16',['Type',['../structScalarSignalSpec.html#a4a319643aeb76b94214f8b41d64d5402',1,'ScalarSignalSpec::Type'],['../structVectorSignalSpec.html#ac21d15d01635665373eaf23b62f3d440',1,'VectorSignalSpec::Type'],['../structManifoldSignalSpec.html#ae6292debacd46f629429d03cf7e9a342',1,'ManifoldSignalSpec::Type'],['../structScalarStateSignalSpec.html#a7ae52069e3aafdb7c45b14168b1ad11b',1,'ScalarStateSignalSpec::Type'],['../structVectorStateSignalSpec.html#a3994948f467b39ca2dcd77d220a8cf3a',1,'VectorStateSignalSpec::Type'],['../structManifoldStateSignalSpec.html#aef8d411c012125303e1faa1d66b35c1c',1,'ManifoldStateSignalSpec::Type']]] + ['translationaldynamicsbase_3c_20scalarsignal_3c_20t_20_3e_2c_20scalarstatesignal_3c_20t_20_3e_2c_20scalarstatesignal_3c_20t_20_3e_2c_201_2c_20rigidbodyparams1d_20_3e_12',['TranslationalDynamicsBase< ScalarSignal< T >, ScalarStateSignal< T >, ScalarStateSignal< T >, 1, RigidBodyParams1D >',['../structTranslationalDynamicsBase.html',1,'']]], + ['translationaldynamicsbase_3c_20vector2signal_3c_20t_20_3e_2c_20vector2statesignal_3c_20t_20_3e_2c_20vector2statesignal_3c_20t_20_3e_2c_202_2c_20rigidbodyparams2d_20_3e_13',['TranslationalDynamicsBase< Vector2Signal< T >, Vector2StateSignal< T >, Vector2StateSignal< T >, 2, RigidBodyParams2D >',['../structTranslationalDynamicsBase.html',1,'']]], + ['translationaldynamicsbase_3c_20vector3signal_3c_20t_20_3e_2c_20vector3statesignal_3c_20t_20_3e_2c_20vector3statesignal_3c_20t_20_3e_2c_203_2c_20rigidbodyparams3d_20_3e_14',['TranslationalDynamicsBase< Vector3Signal< T >, Vector3StateSignal< T >, Vector3StateSignal< T >, 3, RigidBodyParams3D >',['../structTranslationalDynamicsBase.html',1,'']]], + ['trapezoidalintegrator_15',['TrapezoidalIntegrator',['../Integration_8h.html#a123a7b32e66b7e1acc68d61a997abc96',1,'Integration.h']]], + ['trapezoidalintegratorspec_16',['TrapezoidalIntegratorSpec',['../structTrapezoidalIntegratorSpec.html',1,'']]], + ['twist_17',['twist',['../structState.html#a3f5fb4275701e71a56d2fa1fb8d54080',1,'State']]], + ['twisttype_18',['TwistType',['../structState.html#ab58b6e2fe6ea3c2777c5a8a92f6665a1',1,'State']]], + ['type_19',['Type',['../structScalarSignalSpec.html#a4a319643aeb76b94214f8b41d64d5402',1,'ScalarSignalSpec::Type'],['../structVectorSignalSpec.html#ac21d15d01635665373eaf23b62f3d440',1,'VectorSignalSpec::Type'],['../structManifoldSignalSpec.html#ae6292debacd46f629429d03cf7e9a342',1,'ManifoldSignalSpec::Type'],['../structScalarStateSignalSpec.html#a7ae52069e3aafdb7c45b14168b1ad11b',1,'ScalarStateSignalSpec::Type'],['../structVectorStateSignalSpec.html#a3994948f467b39ca2dcd77d220a8cf3a',1,'VectorStateSignalSpec::Type'],['../structManifoldStateSignalSpec.html#aef8d411c012125303e1faa1d66b35c1c',1,'ManifoldStateSignalSpec::Type']]] ]; diff --git a/docs/search/all_12.js b/docs/search/all_12.js index a741da3..2fc0aa4 100644 --- a/docs/search/all_12.js +++ b/docs/search/all_12.js @@ -3,63 +3,63 @@ var searchData= ['vector10dsignal_0',['Vector10dSignal',['../Signal_8h.html#a75b25f1facc38a02d21c155ec05655cc',1,'Signal.h']]], ['vector10dstate_1',['Vector10dState',['../State_8h.html#ac15f89e56010b705e5a2e0d9c3c50a6d',1,'State.h']]], ['vector10dstatesignal_2',['Vector10dStateSignal',['../State_8h.html#af22d4a3a8e0b033da1e86fbb86d62025',1,'State.h']]], - ['vector10signal_3',['Vector10Signal',['../Signal_8h.html#ae39387d9fa8cf1afc6a66334312b3e68',1,'Signal.h']]], - ['vector10state_4',['Vector10State',['../State_8h.html#aaebcae79f29e8afb31a487a07fe71178',1,'State.h']]], - ['vector10statesignal_5',['Vector10StateSignal',['../State_8h.html#a7aaf0c3fa4fd47f070fb708901981e1d',1,'State.h']]], + ['vector10signal_3',['Vector10Signal',['../Signal_8h.html#acda8904322955c5f969f290bf1a42595',1,'Signal.h']]], + ['vector10state_4',['Vector10State',['../State_8h.html#ae80b1d8972029135f755109d7c9cefcc',1,'State.h']]], + ['vector10statesignal_5',['Vector10StateSignal',['../State_8h.html#a1317973b896b1e34cafa85ed9476facc',1,'State.h']]], ['vector1dsignal_6',['Vector1dSignal',['../Signal_8h.html#a22bc2b41e336fe6237cfa41ac7b57d0b',1,'Signal.h']]], ['vector1dstate_7',['Vector1dState',['../State_8h.html#a1fccb71007e0830388d5c21c85e3344e',1,'State.h']]], ['vector1dstatesignal_8',['Vector1dStateSignal',['../State_8h.html#a62568e2f3d59e51a60168009aa1a54bf',1,'State.h']]], - ['vector1signal_9',['Vector1Signal',['../Signal_8h.html#a655827b9e6d4727905cbaae6a996df8f',1,'Signal.h']]], - ['vector1state_10',['Vector1State',['../State_8h.html#a0cc4f9bb31ad1c5782e620e2a8168f99',1,'State.h']]], - ['vector1statesignal_11',['Vector1StateSignal',['../State_8h.html#a5e82a65c39e740624f9c118536b5475d',1,'State.h']]], + ['vector1signal_9',['Vector1Signal',['../Signal_8h.html#a532b7bae92d23faa5962b50fab59ee1a',1,'Signal.h']]], + ['vector1state_10',['Vector1State',['../State_8h.html#abc0badbf8fbf6b0c2669496da71cda67',1,'State.h']]], + ['vector1statesignal_11',['Vector1StateSignal',['../State_8h.html#ab5090b8cb9c45dbe82c31d42d73d785e',1,'State.h']]], ['vector2dsignal_12',['Vector2dSignal',['../Signal_8h.html#a718e737386d2321f3e31df01ffe2fd61',1,'Signal.h']]], ['vector2dstate_13',['Vector2dState',['../State_8h.html#ae54c0630e02ee333a48fe6531d00e071',1,'State.h']]], ['vector2dstatesignal_14',['Vector2dStateSignal',['../State_8h.html#a100a0048450baf6c0d0c2f444eccaf8a',1,'State.h']]], - ['vector2signal_15',['Vector2Signal',['../Signal_8h.html#af705b24c209ce15ac1b412cbe7e52615',1,'Signal.h']]], - ['vector2state_16',['Vector2State',['../State_8h.html#af2610db569af97f280444234b4632b9b',1,'State.h']]], - ['vector2statesignal_17',['Vector2StateSignal',['../State_8h.html#a33b1f775ddbb45d3b1ae05ca4a7152c0',1,'State.h']]], + ['vector2signal_15',['Vector2Signal',['../Signal_8h.html#af4c2088cbc0c8f8c95be6f22e990d0d1',1,'Signal.h']]], + ['vector2state_16',['Vector2State',['../State_8h.html#a7f9f341c30868667e4855dbb3092e78d',1,'State.h']]], + ['vector2statesignal_17',['Vector2StateSignal',['../State_8h.html#a8733dc322548a85201a19ddea01ea50e',1,'State.h']]], ['vector3dsignal_18',['Vector3dSignal',['../Signal_8h.html#addff0c3095fce02a8ae3d8669292ea8a',1,'Signal.h']]], ['vector3dstate_19',['Vector3dState',['../State_8h.html#a0e9c381070552b28ffb2683b44e7b5a3',1,'State.h']]], ['vector3dstatesignal_20',['Vector3dStateSignal',['../State_8h.html#a1e20c96461ce98997ef1a3c0ab7b6668',1,'State.h']]], - ['vector3signal_21',['Vector3Signal',['../Signal_8h.html#a6f00143250c4d5856a25417d2fb5908f',1,'Signal.h']]], - ['vector3state_22',['Vector3State',['../State_8h.html#aa8c0482241bd43048f5a8ae3365c82be',1,'State.h']]], - ['vector3statesignal_23',['Vector3StateSignal',['../State_8h.html#a007fe0235bfe0d3393d33584f9a38f5b',1,'State.h']]], + ['vector3signal_21',['Vector3Signal',['../Signal_8h.html#a59c30838434bb9eabab59a54a0dceb9f',1,'Signal.h']]], + ['vector3state_22',['Vector3State',['../State_8h.html#a76ad6fc3428b4c484c36cb9b24db72f0',1,'State.h']]], + ['vector3statesignal_23',['Vector3StateSignal',['../State_8h.html#ae29a8cc7a8cfe9179c9befa2d9cf217d',1,'State.h']]], ['vector4dsignal_24',['Vector4dSignal',['../Signal_8h.html#a785560e5ddb26fcf9edc2eb9f34e7ec8',1,'Signal.h']]], ['vector4dstate_25',['Vector4dState',['../State_8h.html#a8add6ebebc487c439430cb69d2892bbf',1,'State.h']]], ['vector4dstatesignal_26',['Vector4dStateSignal',['../State_8h.html#a9013e9f17201a38fdb10648f14ea5c95',1,'State.h']]], - ['vector4signal_27',['Vector4Signal',['../Signal_8h.html#a30e3e4193a15b7c565df9edcf0b1a81b',1,'Signal.h']]], - ['vector4state_28',['Vector4State',['../State_8h.html#a4cfd5bd231c0f14e8a360134d9d17bee',1,'State.h']]], - ['vector4statesignal_29',['Vector4StateSignal',['../State_8h.html#a24c5f8ae10f7553987a0bb5c619cf505',1,'State.h']]], + ['vector4signal_27',['Vector4Signal',['../Signal_8h.html#a04b5a6ff0c189cb66f0e3137b1362c30',1,'Signal.h']]], + ['vector4state_28',['Vector4State',['../State_8h.html#a7123f01cd05975f377e8ff9e6ee1a06a',1,'State.h']]], + ['vector4statesignal_29',['Vector4StateSignal',['../State_8h.html#a5c328c48320c78070fff7e7982b311e9',1,'State.h']]], ['vector5dsignal_30',['Vector5dSignal',['../Signal_8h.html#ad0b807d45bcfe07cc9a2f54648dd4821',1,'Signal.h']]], ['vector5dstate_31',['Vector5dState',['../State_8h.html#a45d6b402de0ba422a815e117b084dde3',1,'State.h']]], ['vector5dstatesignal_32',['Vector5dStateSignal',['../State_8h.html#a7a8f2f6fd14951fd2fe337c952b0cb74',1,'State.h']]], - ['vector5signal_33',['Vector5Signal',['../Signal_8h.html#ab517aee0ae3891deb305ebd61de6f0e4',1,'Signal.h']]], - ['vector5state_34',['Vector5State',['../State_8h.html#a2890d15ac36c73fcd73556771b80b47e',1,'State.h']]], - ['vector5statesignal_35',['Vector5StateSignal',['../State_8h.html#a05175ceaa15c466ce47c983d489ce31b',1,'State.h']]], + ['vector5signal_33',['Vector5Signal',['../Signal_8h.html#a9f0b242918cfdc4b6eaecdeb6574b6cb',1,'Signal.h']]], + ['vector5state_34',['Vector5State',['../State_8h.html#ab5ce046688e9436f8b33892d42309eee',1,'State.h']]], + ['vector5statesignal_35',['Vector5StateSignal',['../State_8h.html#a4af99c5e283d22f79b5556ff27474965',1,'State.h']]], ['vector6dsignal_36',['Vector6dSignal',['../Signal_8h.html#acb50cf2886559fdfc3aba4ee722f511a',1,'Signal.h']]], ['vector6dstate_37',['Vector6dState',['../State_8h.html#af07e3586e98f931acac5d0ffd9b17cee',1,'State.h']]], ['vector6dstatesignal_38',['Vector6dStateSignal',['../State_8h.html#a9df3c94eca5a8200ce96b3221995c46b',1,'State.h']]], - ['vector6signal_39',['Vector6Signal',['../Signal_8h.html#a74174cf187bc4e74b3e7494b247e0284',1,'Signal.h']]], - ['vector6state_40',['Vector6State',['../State_8h.html#a767154e6e5b226bf7b6c9dad73aee6d2',1,'State.h']]], - ['vector6statesignal_41',['Vector6StateSignal',['../State_8h.html#a809dbd95b4841c294c3a75a7d40ecf62',1,'State.h']]], + ['vector6signal_39',['Vector6Signal',['../Signal_8h.html#a4da3e39a6224769606055a56f1508e6b',1,'Signal.h']]], + ['vector6state_40',['Vector6State',['../State_8h.html#a5b9da17f6286f92692b0004ee4966bc9',1,'State.h']]], + ['vector6statesignal_41',['Vector6StateSignal',['../State_8h.html#a10d976072ce9070523cb22605d2ab584',1,'State.h']]], ['vector7dsignal_42',['Vector7dSignal',['../Signal_8h.html#afea76be78e2b329344fb610a62c421e9',1,'Signal.h']]], ['vector7dstate_43',['Vector7dState',['../State_8h.html#ad58fbc5cd721c46fe64d385cc3317380',1,'State.h']]], ['vector7dstatesignal_44',['Vector7dStateSignal',['../State_8h.html#a901bd18eae58b6365b68227b38b8a6e1',1,'State.h']]], - ['vector7signal_45',['Vector7Signal',['../Signal_8h.html#a992c3596420601f0271876e30a152c1b',1,'Signal.h']]], - ['vector7state_46',['Vector7State',['../State_8h.html#a5c337dc74b2038b11a515b3d0559c1f2',1,'State.h']]], - ['vector7statesignal_47',['Vector7StateSignal',['../State_8h.html#aec3d4775be3f8929cbac8e75b0471e48',1,'State.h']]], + ['vector7signal_45',['Vector7Signal',['../Signal_8h.html#ac71cd26f6afca210f51cc394d520779b',1,'Signal.h']]], + ['vector7state_46',['Vector7State',['../State_8h.html#a78b7e325313bda6591c62d59c25b2009',1,'State.h']]], + ['vector7statesignal_47',['Vector7StateSignal',['../State_8h.html#a0e0d0803fd68f9e69ed39bed579c0a8c',1,'State.h']]], ['vector8dsignal_48',['Vector8dSignal',['../Signal_8h.html#ad2214d5fb3267b191128fcccb515448b',1,'Signal.h']]], ['vector8dstate_49',['Vector8dState',['../State_8h.html#acfdf1934f5783c1dcab2987c242ef8af',1,'State.h']]], ['vector8dstatesignal_50',['Vector8dStateSignal',['../State_8h.html#a25968e689d254876cbae1ff352b3f184',1,'State.h']]], - ['vector8signal_51',['Vector8Signal',['../Signal_8h.html#afaa686fc5ec63962f7da9907e6093e65',1,'Signal.h']]], - ['vector8state_52',['Vector8State',['../State_8h.html#a102cee6380e7d3e8f52988d17ac6a937',1,'State.h']]], - ['vector8statesignal_53',['Vector8StateSignal',['../State_8h.html#a1583d33e935bcb44fb80ee6172a59a9b',1,'State.h']]], + ['vector8signal_51',['Vector8Signal',['../Signal_8h.html#a6fe111909e599c7d732507ef08213e06',1,'Signal.h']]], + ['vector8state_52',['Vector8State',['../State_8h.html#ae8dd0ef45fa5734f0e752551ba62e863',1,'State.h']]], + ['vector8statesignal_53',['Vector8StateSignal',['../State_8h.html#a9b199ed43adea9fec91e40f9bab9457f',1,'State.h']]], ['vector9dsignal_54',['Vector9dSignal',['../Signal_8h.html#acd349d949f45a7bce633414d05043cc3',1,'Signal.h']]], ['vector9dstate_55',['Vector9dState',['../State_8h.html#a865c1f4de96010d38ee17edc48d6c611',1,'State.h']]], ['vector9dstatesignal_56',['Vector9dStateSignal',['../State_8h.html#a0237ae6ced288b7b3853654cd4ce796c',1,'State.h']]], - ['vector9signal_57',['Vector9Signal',['../Signal_8h.html#a20d6ecf779577c444e3d1299861a3f8b',1,'Signal.h']]], - ['vector9state_58',['Vector9State',['../State_8h.html#acc503352a69f43c7991b9118bb466db2',1,'State.h']]], - ['vector9statesignal_59',['Vector9StateSignal',['../State_8h.html#a0ffa2fdd937c37ee8f09d3fb49057f76',1,'State.h']]], + ['vector9signal_57',['Vector9Signal',['../Signal_8h.html#ae78698ceb51c16ea2ffea1ea2b5507e3',1,'Signal.h']]], + ['vector9state_58',['Vector9State',['../State_8h.html#af1297813c5b5754edb4cf75ca0875849',1,'State.h']]], + ['vector9statesignal_59',['Vector9StateSignal',['../State_8h.html#a9ab7680e24d1538be50e761b8a8ecb21',1,'State.h']]], ['vectorsignal_60',['VectorSignal',['../Signal_8h.html#a51a32a4dd69ee28867dba6202c812c5a',1,'Signal.h']]], ['vectorsignalspec_61',['VectorSignalSpec',['../structVectorSignalSpec.html',1,'']]], ['vectorstatesignal_62',['VectorStateSignal',['../State_8h.html#a214bd9926c3d8a2bb83b9b471744775b',1,'State.h']]], diff --git a/docs/search/all_2.js b/docs/search/all_2.js index 6deef30..aef6d14 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -1,7 +1,7 @@ var searchData= [ - ['derivativemethod_0',['derivativeMethod',['../classSignal.html#ac0536cd4021cc4815a3dbb60c5b4f473',1,'Signal']]], - ['derivativemethod_1',['DerivativeMethod',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242',1,'Signal.h']]], + ['derivativemethod_0',['DerivativeMethod',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242',1,'Signal.h']]], + ['derivativemethod_1',['derivativeMethod',['../classSignal.html#ac0536cd4021cc4815a3dbb60c5b4f473',1,'Signal']]], ['dirty_2',['DIRTY',['../Signal_8h.html#a35d05b0e727a39b86907d8669e9e1242a6a4e132eb192a22c351397837d4c082c',1,'Signal.h']]], ['documentation_3',['signals-cpp Library Documentation',['../index.html',1,'']]], ['dot_4',['dot',['../classSignal.html#a8b12b8bc1e74ddbadb67248fab16c461',1,'Signal::dot() const'],['../classSignal.html#a8989cbb307917a9c1f6331be2a5ae4e9',1,'Signal::dot(const double &t) const'],['../classSignal.html#aad31a21f4a7d572da1e06e407ccacecd',1,'Signal::dot(const std::vector< double > &t) const']]], diff --git a/docs/search/all_3.js b/docs/search/all_3.js index 46c2b5e..713e262 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -1,7 +1,7 @@ var searchData= [ - ['eulerintegrator_0',['EulerIntegrator',['../Integration_8h.html#aa77358d3cb26c8b8992d44c2079a2a49',1,'Integration.h']]], + ['eulerintegrator_0',['EulerIntegrator',['../Integration_8h.html#a0e36b47220a522ff9899d9624dd7c01b',1,'Integration.h']]], ['eulerintegratorspec_1',['EulerIntegratorSpec',['../structEulerIntegratorSpec.html',1,'']]], - ['extrapolationmethod_2',['extrapolationMethod',['../classSignal.html#aff76e692ad975b7721ecf6e60d33a11f',1,'Signal']]], - ['extrapolationmethod_3',['ExtrapolationMethod',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4',1,'Signal.h']]] + ['extrapolationmethod_2',['ExtrapolationMethod',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4',1,'Signal.h']]], + ['extrapolationmethod_3',['extrapolationMethod',['../classSignal.html#aff76e692ad975b7721ecf6e60d33a11f',1,'Signal']]] ]; diff --git a/docs/search/all_7.js b/docs/search/all_7.js index 32a0d8c..3cc42a1 100644 --- a/docs/search/all_7.js +++ b/docs/search/all_7.js @@ -7,7 +7,10 @@ var searchData= ['integrate_4',['integrate',['../structIntegrator.html#ab3bebaa347f6019f3d2da2b2bcee5918',1,'Integrator::integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)'],['../structIntegrator.html#a8266e6bf3abd90d83fa7eb6b9270c0c4',1,'Integrator::integrate(Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)'],['../structEulerIntegratorSpec.html#a6c8d7aa2ecf83f7a348a575e5023639f',1,'EulerIntegratorSpec::integrate()'],['../structTrapezoidalIntegratorSpec.html#a38c21a876135bae55c62ec43c3a18a86',1,'TrapezoidalIntegratorSpec::integrate()'],['../structSimpsonIntegratorSpec.html#a6194da52902a391e4a9b251c05e6abf2',1,'SimpsonIntegratorSpec::integrate()']]], ['integration_2eh_5',['Integration.h',['../Integration_8h.html',1,'']]], ['integrator_6',['Integrator',['../structIntegrator.html',1,'']]], - ['interpolationmethod_7',['interpolationMethod',['../classSignal.html#ae4c3f0098aaec52921d28cce09ff1ed4',1,'Signal']]], - ['interpolationmethod_8',['InterpolationMethod',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284',1,'Signal.h']]], - ['introduction_9',['Introduction',['../index.html#intro_sec',1,'']]] + ['integrator_3c_20eulerintegratorspec_20_3e_7',['Integrator< EulerIntegratorSpec >',['../structIntegrator.html',1,'']]], + ['integrator_3c_20simpsonintegratorspec_20_3e_8',['Integrator< SimpsonIntegratorSpec >',['../structIntegrator.html',1,'']]], + ['integrator_3c_20trapezoidalintegratorspec_20_3e_9',['Integrator< TrapezoidalIntegratorSpec >',['../structIntegrator.html',1,'']]], + ['interpolationmethod_10',['InterpolationMethod',['../Signal_8h.html#aa0081e804011c551ea0f4a596a64b284',1,'Signal.h']]], + ['interpolationmethod_11',['interpolationMethod',['../classSignal.html#ae4c3f0098aaec52921d28cce09ff1ed4',1,'Signal']]], + ['introduction_12',['Introduction',['../index.html#intro_sec',1,'']]] ]; diff --git a/docs/search/all_a.js b/docs/search/all_a.js index f03fed5..d6b129d 100644 --- a/docs/search/all_a.js +++ b/docs/search/all_a.js @@ -13,5 +13,19 @@ var searchData= ['manifoldstatesignalspec_10',['ManifoldStateSignalSpec',['../structManifoldStateSignalSpec.html',1,'']]], ['manifoldstatetype_11',['ManifoldStateType',['../State_8h.html#a73655df4c5d92f1cf1cf69d5fa057753',1,'State.h']]], ['model_12',['Model',['../classModel.html',1,'Model< DynamicsType >'],['../classModel.html#a3cbccc00606661a35110dbe111af54ad',1,'Model::Model()']]], - ['models_2eh_13',['Models.h',['../Models_8h.html',1,'']]] + ['model_3c_20rigidbodydynamics3dof_3c_20t_20_3e_20_3e_13',['Model< RigidBodyDynamics3DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rigidbodydynamics3dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_14',['Model< RigidBodyDynamics3DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20rigidbodydynamics6dof_3c_20t_20_3e_20_3e_15',['Model< RigidBodyDynamics6DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rigidbodydynamics6dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_16',['Model< RigidBodyDynamics6DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics1dof_3c_20t_20_3e_20_3e_17',['Model< RotationalDynamics1DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics1dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_18',['Model< RotationalDynamics1DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics3dof_3c_20t_20_3e_20_3e_19',['Model< RotationalDynamics3DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics3dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_20',['Model< RotationalDynamics3DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics1dof_3c_20t_20_3e_20_3e_21',['Model< TranslationalDynamics1DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics1dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_22',['Model< TranslationalDynamics1DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics2dof_3c_20t_20_3e_20_3e_23',['Model< TranslationalDynamics2DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics2dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_24',['Model< TranslationalDynamics2DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics3dof_3c_20t_20_3e_20_3e_25',['Model< TranslationalDynamics3DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics3dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_26',['Model< TranslationalDynamics3DOF< T > >< double >',['../classModel.html',1,'']]], + ['models_2eh_27',['Models.h',['../Models_8h.html',1,'']]] ]; diff --git a/docs/search/all_b.js b/docs/search/all_b.js index c5567a7..fdb1d4f 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -1,6 +1,6 @@ var searchData= [ - ['nans_0',['nans',['../structState.html#a9e331e0ecbed1ab2a03d9b3e5a457426',1,'State']]], - ['nans_1',['NANS',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4af4517d0db561241ccfcf150e1629767f',1,'Signal.h']]], + ['nans_0',['NANS',['../Signal_8h.html#a9943b8bd1a1a1cdb774553d44c12cde4af4517d0db561241ccfcf150e1629767f',1,'Signal.h']]], + ['nans_1',['nans',['../structState.html#a9e331e0ecbed1ab2a03d9b3e5a457426',1,'State']]], ['nanstype_2',['NansType',['../structScalarSignalSpec.html#a040a016b3023c9df47a913599e9af1e2',1,'ScalarSignalSpec::NansType()'],['../structVectorSignalSpec.html#a3a25051bf64d2677fc511bd026b7f6a2',1,'VectorSignalSpec::NansType()'],['../structManifoldSignalSpec.html#a8131da54a75205e3f61547afee1ccfcc',1,'ManifoldSignalSpec::NansType()'],['../structScalarStateSignalSpec.html#ac3878dfd1b21706364c34d09e6da37ce',1,'ScalarStateSignalSpec::NansType()'],['../structVectorStateSignalSpec.html#a4729eec41bab8eb5ed7b45aa8272be4d',1,'VectorStateSignalSpec::NansType()'],['../structManifoldStateSignalSpec.html#a7542075f653a7e8fba76702499936b17',1,'ManifoldStateSignalSpec::NansType()']]] ]; diff --git a/docs/search/all_c.js b/docs/search/all_c.js index e0736d2..35951f3 100644 --- a/docs/search/all_c.js +++ b/docs/search/all_c.js @@ -1,11 +1,11 @@ var searchData= [ ['operator_28_29_0',['operator()',['../classSignal.html#a2d222b24cb25f6f228a0c69d71d95918',1,'Signal::operator()() const'],['../classSignal.html#ad32d0b6b6bbc54ab8bd0fa63ed3039b9',1,'Signal::operator()(const double &t) const'],['../classSignal.html#abf8612dae8c835fa349c6f26201016eb',1,'Signal::operator()(const std::vector< double > &t) const']]], - ['operator_2a_1',['operator*',['../classSignal.html#ad61a2749da48601dcf27bedaa0cf54fd',1,'Signal::operator*'],['../classSignal.html#ae5d88905516fd17257964442b0830584',1,'Signal::operator*'],['../Signal_8h.html#ad77fa5fab1a3e9a6ca4d7e87364003b9',1,'operator*(const double &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../Signal_8h.html#ae0b0bee5051aeec3c9cff9fd148d8cb5',1,'operator*(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const double &r): Signal.h'],['../State_8h.html#a795d2ff5c53f24de712134f27e197001',1,'operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r): State.h'],['../State_8h.html#a7fa016cf853be0dbc882359bf5b637f9',1,'operator*(const State< T, PTS, PD, TTS, TD > &l, const double &r): State.h']]], + ['operator_2a_1',['operator*',['../classSignal.html#ad61a2749da48601dcf27bedaa0cf54fd',1,'Signal::operator*(const double &l, const Signal< BSS, TSS > &r)'],['../classSignal.html#ae5d88905516fd17257964442b0830584',1,'Signal::operator*(const Signal< BSS, TSS > &l, const double &r)'],['../Signal_8h.html#ad77fa5fab1a3e9a6ca4d7e87364003b9',1,'operator*(const double &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../Signal_8h.html#ae0b0bee5051aeec3c9cff9fd148d8cb5',1,'operator*(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const double &r): Signal.h'],['../State_8h.html#a795d2ff5c53f24de712134f27e197001',1,'operator*(const double &l, const State< T, PTS, PD, TTS, TD > &r): State.h'],['../State_8h.html#a7fa016cf853be0dbc882359bf5b637f9',1,'operator*(const State< T, PTS, PD, TTS, TD > &l, const double &r): State.h']]], ['operator_2a_3d_2',['operator*=',['../structState.html#af76faa98cfc18fb81afb0c86f7a0aa75',1,'State']]], - ['operator_2b_3',['operator+',['../classSignal.html#aead0dbc78a90fbd6ad3f86ab61ed65f7',1,'Signal::operator+'],['../Signal_8h.html#aa4dc7aa056ee91a7dc4ec540b6bc9cd3',1,'operator+(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< TangentSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ac3e1ccc35f63b762bdd2c87478f8aad6',1,'operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r): State.h']]], + ['operator_2b_3',['operator+',['../classSignal.html#aead0dbc78a90fbd6ad3f86ab61ed65f7',1,'Signal::operator+()'],['../Signal_8h.html#aa4dc7aa056ee91a7dc4ec540b6bc9cd3',1,'operator+(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< TangentSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ac3e1ccc35f63b762bdd2c87478f8aad6',1,'operator+(const State< T, PTS, PD, TTS, TD > &l, const State< T, TTS, TD, TTS, TD > &r): State.h']]], ['operator_2b_3d_4',['operator+=',['../structState.html#a7764970f0c29576eac07ab57c28261be',1,'State']]], - ['operator_2d_5',['operator-',['../classSignal.html#a22d02130c5fec79a084ef4d1a28521dc',1,'Signal::operator-'],['../Signal_8h.html#afd611b1d0ab8c1f43be72184926ec8ac',1,'operator-(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ad7ac1ecc8c925fbc991d2fa8ca50d4eb',1,'operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r): State.h']]], + ['operator_2d_5',['operator-',['../classSignal.html#a22d02130c5fec79a084ef4d1a28521dc',1,'Signal::operator-()'],['../Signal_8h.html#afd611b1d0ab8c1f43be72184926ec8ac',1,'operator-(const Signal< BaseSignalSpec, TangentSignalSpec > &l, const Signal< BaseSignalSpec, TangentSignalSpec > &r): Signal.h'],['../State_8h.html#ad7ac1ecc8c925fbc991d2fa8ca50d4eb',1,'operator-(const State< T, PTS, PD, TTS, TD > &l, const State< T, PTS, PD, TTS, TD > &r): State.h']]], ['operator_2f_6',['operator/',['../State_8h.html#af3ec1e7d28a9aac4e1cde4c7f3438128',1,'operator/(const ScalarStateType< T > &l, const double &r): State.h'],['../State_8h.html#a0f388e10603fb47846a1147ff5b6839d',1,'operator/(const VectorStateType< T, d > &l, const double &r): State.h']]], ['operator_3c_3c_7',['operator<<',['../Signal_8h.html#a47318c97bced9b7ee828c94c1a4eeb29',1,'operator<<(std::ostream &os, const ScalarSignal< T > &x): Signal.h'],['../Signal_8h.html#aeb7f6d79d7e692981221b685c0863d54',1,'operator<<(std::ostream &os, const VectorSignal< T, d > &x): Signal.h'],['../Signal_8h.html#a6a76598b459ea2e14353617de437c808',1,'operator<<(std::ostream &os, const ManifoldSignal< T, ManifoldType, d > &x): Signal.h'],['../State_8h.html#ae29ac55bb38cdbd3acce109857e8e7a4',1,'operator<<(std::ostream &os, const ScalarStateType< T > &x): State.h'],['../State_8h.html#af1eca508289d2fcbdecd0cc136eed43d',1,'operator<<(std::ostream &os, const VectorStateType< T, d > &x): State.h'],['../State_8h.html#a494fe74e8c2fc3cd3f7e14886eeb7d6c',1,'operator<<(std::ostream &os, const ManifoldStateType< T, ManifoldType, PD, TD > &x): State.h'],['../State_8h.html#ab6fe6347b40120d5f45445b1fc6596f4',1,'operator<<(std::ostream &os, const ScalarStateSignal< T > &x): State.h'],['../State_8h.html#a1675ff98779b45e08f5d169056e26a4d',1,'operator<<(std::ostream &os, const VectorStateSignal< T, d > &x): State.h'],['../State_8h.html#a6c0f637d1f1980a2de56f125e9cf4ec1',1,'operator<<(std::ostream &os, const ManifoldStateSignal< T, ManifoldType, PD, TD > &x): State.h']]] ]; diff --git a/docs/search/all_e.js b/docs/search/all_e.js index 795ea69..4e300c4 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,18 +1,18 @@ var searchData= [ ['reset_0',['reset',['../classModel.html#a823536a9764d6a35cce173573ee62e90',1,'Model::reset()'],['../classSignal.html#a914fd7f09ae0723c88fce310fd7c79fd',1,'Signal::reset()']]], - ['rigidbody3dofmodel_1',['RigidBody3DOFModel',['../Models_8h.html#a253b3866118f6e70cfc4f08b471c2975',1,'Models.h']]], + ['rigidbody3dofmodel_1',['RigidBody3DOFModel',['../Models_8h.html#ab084e172ef604e5975b5ff17e33d06ce',1,'Models.h']]], ['rigidbody3dofmodeld_2',['RigidBody3DOFModeld',['../Models_8h.html#a46f2319cb159c02e4eb4801d850d54d9',1,'Models.h']]], - ['rigidbody6dofmodel_3',['RigidBody6DOFModel',['../Models_8h.html#ac6b34f1aa0a10dcb6e9fda4a2814a9b3',1,'Models.h']]], + ['rigidbody6dofmodel_3',['RigidBody6DOFModel',['../Models_8h.html#a8f7d8c7063cb9c51d2bb794931db3a34',1,'Models.h']]], ['rigidbody6dofmodeld_4',['RigidBody6DOFModeld',['../Models_8h.html#a40c2fc8d427c1bd6dfee02295ccb3cb6',1,'Models.h']]], ['rigidbodydynamics3dof_5',['RigidBodyDynamics3DOF',['../structRigidBodyDynamics3DOF.html',1,'']]], ['rigidbodydynamics6dof_6',['RigidBodyDynamics6DOF',['../structRigidBodyDynamics6DOF.html',1,'']]], ['rigidbodyparams1d_7',['RigidBodyParams1D',['../structRigidBodyParams1D.html',1,'RigidBodyParams1D'],['../structRigidBodyParams1D.html#ab2b9c3eb89bcbf0ac06a33e95725e0eb',1,'RigidBodyParams1D::RigidBodyParams1D()']]], ['rigidbodyparams2d_8',['RigidBodyParams2D',['../structRigidBodyParams2D.html',1,'RigidBodyParams2D'],['../structRigidBodyParams2D.html#a6febaa8c9f355105b908979da3dd1255',1,'RigidBodyParams2D::RigidBodyParams2D()']]], ['rigidbodyparams3d_9',['RigidBodyParams3D',['../structRigidBodyParams3D.html',1,'RigidBodyParams3D'],['../structRigidBodyParams3D.html#a8aa76fea7a0790ead025bf79e767d0cf',1,'RigidBodyParams3D::RigidBodyParams3D()']]], - ['rotational1dofmodel_10',['Rotational1DOFModel',['../Models_8h.html#a44917fd68b589ce4fc82e69e00c41201',1,'Models.h']]], + ['rotational1dofmodel_10',['Rotational1DOFModel',['../Models_8h.html#abc1d5223da3343a9537cc0a6f5abd239',1,'Models.h']]], ['rotational1dofmodeld_11',['Rotational1DOFModeld',['../Models_8h.html#af9b104589a404874af160185cf8a725c',1,'Models.h']]], - ['rotational3dofmodel_12',['Rotational3DOFModel',['../Models_8h.html#ad5282fd410476dbdd8381772a38ac2f1',1,'Models.h']]], + ['rotational3dofmodel_12',['Rotational3DOFModel',['../Models_8h.html#a287ab38fdf9b2634bf844a17719b9115',1,'Models.h']]], ['rotational3dofmodeld_13',['Rotational3DOFModeld',['../Models_8h.html#a51e40a2924a4b6ff134878368461bb1a',1,'Models.h']]], ['rotationaldynamics1dof_14',['RotationalDynamics1DOF',['../structRotationalDynamics1DOF.html',1,'']]], ['rotationaldynamics3dof_15',['RotationalDynamics3DOF',['../structRotationalDynamics3DOF.html',1,'']]] diff --git a/docs/search/all_f.js b/docs/search/all_f.js index 09740cf..fc92a2f 100644 --- a/docs/search/all_f.js +++ b/docs/search/all_f.js @@ -12,46 +12,109 @@ var searchData= ['se2dsignal_9',['SE2dSignal',['../Signal_8h.html#a27317de3cebe688fdf9b1f89e8d749ea',1,'Signal.h']]], ['se2dstate_10',['SE2dState',['../State_8h.html#abf8de0fae02a60506ddd6e134b75ae00',1,'State.h']]], ['se2dstatesignal_11',['SE2dStateSignal',['../State_8h.html#a709efdac7ba2c93eedbf1533c74e42f5',1,'State.h']]], - ['se2signal_12',['SE2Signal',['../Signal_8h.html#ad643119cf3272132185b21288c55d408',1,'Signal.h']]], - ['se2state_13',['SE2State',['../State_8h.html#a040c943cebaa523f316e57aaa2c90a8f',1,'State.h']]], - ['se2statesignal_14',['SE2StateSignal',['../State_8h.html#a7de4c0261575a69f6ed4e17cf50e3e03',1,'State.h']]], + ['se2signal_12',['SE2Signal',['../Signal_8h.html#a5c686d1c1e780f578c950182943ecf41',1,'Signal.h']]], + ['se2state_13',['SE2State',['../State_8h.html#acc2213abe7e1f1169bce3603e87f44d2',1,'State.h']]], + ['se2statesignal_14',['SE2StateSignal',['../State_8h.html#ae34074b7d367592e7022441b0ee836d9',1,'State.h']]], ['se3dsignal_15',['SE3dSignal',['../Signal_8h.html#a13875f09fcdcc6dd114766bacc38f01b',1,'Signal.h']]], ['se3dstate_16',['SE3dState',['../State_8h.html#a98daf00f053bcc148a93319eac4901e4',1,'State.h']]], ['se3dstatesignal_17',['SE3dStateSignal',['../State_8h.html#a9b00d890fcdbf16abfbb263061e9bc98',1,'State.h']]], - ['se3signal_18',['SE3Signal',['../Signal_8h.html#a765b6ae13329153a6b634a059a9402a3',1,'Signal.h']]], - ['se3state_19',['SE3State',['../State_8h.html#aac8e0a5eaf4f01fa2a6f388c116187b6',1,'State.h']]], - ['se3statesignal_20',['SE3StateSignal',['../State_8h.html#a0f26da8f398a7f20706b5f962e475126',1,'State.h']]], + ['se3signal_18',['SE3Signal',['../Signal_8h.html#ab87588076a67398d28c7f77a2103470b',1,'Signal.h']]], + ['se3state_19',['SE3State',['../State_8h.html#a41c34d11317aa1e268232a6ddf9c0ba7',1,'State.h']]], + ['se3statesignal_20',['SE3StateSignal',['../State_8h.html#a337f5beba24e405d11550802e4375c73',1,'State.h']]], ['setderivativemethod_21',['setDerivativeMethod',['../classSignal.html#a8c25f302d3c4feaa1a4c1f6d59381d89',1,'Signal']]], ['setextrapolationmethod_22',['setExtrapolationMethod',['../classSignal.html#ac3be206ae717ad5e977d8a108de9b9e4',1,'Signal']]], ['setinterpolationmethod_23',['setInterpolationMethod',['../classSignal.html#af336f3d6a2d643040dff9fb5b4c20558',1,'Signal']]], ['setparams_24',['setParams',['../classModel.html#a96533143a30ab87c379e411fcae59643',1,'Model']]], ['signal_25',['Signal',['../classSignal.html',1,'Signal< BaseSignalSpec, TangentSignalSpec >'],['../classSignal.html#a8b5d0a9fba3546f500fed7e2102cd9a7',1,'Signal::Signal()'],['../classSignal.html#a81a95abda92d3efc0bd4b4ccba77e303',1,'Signal::Signal(const Signal &other)']]], ['signal_2eh_26',['Signal.h',['../Signal_8h.html',1,'']]], - ['signal_5futils_27',['signal_utils',['../namespacesignal__utils.html',1,'']]], - ['signaldp_28',['SignalDP',['../structSignal_1_1SignalDP.html',1,'Signal']]], - ['signaldpcomparator_29',['SignalDPComparator',['../classSignal.html#a3961e7ce30f40f8104dd3d25f2e70a7f',1,'Signal']]], - ['signals_20cpp_20library_20documentation_30',['signals-cpp Library Documentation',['../index.html',1,'']]], - ['signals_2eh_31',['Signals.h',['../Signals_8h.html',1,'']]], - ['simpsonintegrator_32',['SimpsonIntegrator',['../Integration_8h.html#aa29ec69e4ec01e7fe15ed9bbc59fd93b',1,'Integration.h']]], - ['simpsonintegratorspec_33',['SimpsonIntegratorSpec',['../structSimpsonIntegratorSpec.html',1,'']]], - ['simulate_34',['simulate',['../classModel.html#ac7446138b27c8feba779ebfe8e82b99d',1,'Model::simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)'],['../classModel.html#ac2550ae8ed888d167450160ce55286df',1,'Model::simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)']]], - ['so2dsignal_35',['SO2dSignal',['../Signal_8h.html#a43a8b3bb4241f080c75114c98502e21b',1,'Signal.h']]], - ['so2dstate_36',['SO2dState',['../State_8h.html#af87fca61f7adfb8b62056d2f6c815e51',1,'State.h']]], - ['so2dstatesignal_37',['SO2dStateSignal',['../State_8h.html#a4f4b421bf1a450cd6514a24b8c16e8cb',1,'State.h']]], - ['so2signal_38',['SO2Signal',['../Signal_8h.html#ac36c4f295327639b98a801301e288845',1,'Signal.h']]], - ['so2state_39',['SO2State',['../State_8h.html#a53505b4e14d5121cf4ec30c3d5ee854f',1,'State.h']]], - ['so2statesignal_40',['SO2StateSignal',['../State_8h.html#a4e7a95697e869ec8e9cd31c0723ea2cf',1,'State.h']]], - ['so3dsignal_41',['SO3dSignal',['../Signal_8h.html#a1fbce3445fc6d54d3dfc2aa95fdcc37f',1,'Signal.h']]], - ['so3dstate_42',['SO3dState',['../State_8h.html#a7ab722ee104a5c16222f5cbd0d682657',1,'State.h']]], - ['so3dstatesignal_43',['SO3dStateSignal',['../State_8h.html#a7069682eef4672ac723761c44e44bc5a',1,'State.h']]], - ['so3signal_44',['SO3Signal',['../Signal_8h.html#afca3faa089af1abf0b808bcb6be5e740',1,'Signal.h']]], - ['so3state_45',['SO3State',['../State_8h.html#a0bc2e14b1e00089eac587823a7028df1',1,'State.h']]], - ['so3statesignal_46',['SO3StateSignal',['../State_8h.html#ae37ddd285b52c0765cd59fd0e212dfb5',1,'State.h']]], - ['state_47',['State',['../structState.html',1,'State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >'],['../structState.html#adcb914ebe25fe14622a945801267fa7a',1,'State::State()'],['../structState.html#a097d236bc46ca02a379e2fd188fe3e97',1,'State::State(T *arr)'],['../structState.html#aa10b450dbe8a806a0b203521b4738c0c',1,'State::State(const State &other)']]], - ['state_2eh_48',['State.h',['../State_8h.html',1,'']]], - ['statedotdottype_49',['StateDotDotType',['../structTranslationalDynamicsBase.html#a4ae3874e31bcc97d54f4cebea0606002',1,'TranslationalDynamicsBase::StateDotDotType'],['../structRotationalDynamics1DOF.html#a5e2f1cd471e7be99dc9e0f3f29f146f3',1,'RotationalDynamics1DOF::StateDotDotType'],['../structRotationalDynamics3DOF.html#a6e75764a6e9b0ec406d716dfb60943b1',1,'RotationalDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics3DOF.html#a562a8cc5e6e8dca19982509022a22ba4',1,'RigidBodyDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics6DOF.html#a32c92b85c94f66739358385a0a3a07fc',1,'RigidBodyDynamics6DOF::StateDotDotType']]], - ['statedotsignaltype_50',['StateDotSignalType',['../classModel.html#a8abdf37c6158386a9f1d2c6c506f6839',1,'Model::StateDotSignalType'],['../structTranslationalDynamicsBase.html#a3870f6b57fcb6cb578b3640401331a39',1,'TranslationalDynamicsBase::StateDotSignalType'],['../structRotationalDynamics1DOF.html#a32c4979bf8f6aa3f9c1b0f2818ba4abd',1,'RotationalDynamics1DOF::StateDotSignalType'],['../structRotationalDynamics3DOF.html#a6b1ce3427c65404128d15a66c3d11621',1,'RotationalDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics3DOF.html#a28d138392ca0069c5e6274f78fd08e29',1,'RigidBodyDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics6DOF.html#afcafc7961087b27b239ad998e436da9a',1,'RigidBodyDynamics6DOF::StateDotSignalType']]], - ['statedottype_51',['StateDotType',['../structTranslationalDynamicsBase.html#a25c6532290d222c25e727394a0afa0b7',1,'TranslationalDynamicsBase::StateDotType'],['../structRotationalDynamics1DOF.html#a7df05f9db990eecd331f506d1a17597e',1,'RotationalDynamics1DOF::StateDotType'],['../structRotationalDynamics3DOF.html#a40c9649794d2d6e82da6451d17c32bb5',1,'RotationalDynamics3DOF::StateDotType'],['../structRigidBodyDynamics3DOF.html#a7a9fa29ba97531d856e87560806a805c',1,'RigidBodyDynamics3DOF::StateDotType'],['../structRigidBodyDynamics6DOF.html#aa664579d3d691fcd4c5824b242dd2061',1,'RigidBodyDynamics6DOF::StateDotType']]], - ['statesignaltype_52',['StateSignalType',['../classModel.html#a643e1a47ddbb10c5c10844f9aea5be98',1,'Model::StateSignalType'],['../structTranslationalDynamicsBase.html#a1f0fdd4bbfb73f52878c7e5c7e459f16',1,'TranslationalDynamicsBase::StateSignalType'],['../structRotationalDynamics1DOF.html#ac321d27d0098cb3e8e64ea0d98500cb6',1,'RotationalDynamics1DOF::StateSignalType'],['../structRotationalDynamics3DOF.html#a2814e21ab959a4cb71fdc2682d1cad69',1,'RotationalDynamics3DOF::StateSignalType'],['../structRigidBodyDynamics3DOF.html#a0c346a983bc929f1f7a6e5d2be3a0841',1,'RigidBodyDynamics3DOF::StateSignalType'],['../structRigidBodyDynamics6DOF.html#ad4e0605bf2a0c90acbe9a1a333b9b952',1,'RigidBodyDynamics6DOF::StateSignalType']]], - ['statetype_53',['StateType',['../structTranslationalDynamicsBase.html#aabb958cc98babacfc8478a04fb7a37dd',1,'TranslationalDynamicsBase::StateType'],['../structRotationalDynamics1DOF.html#aada86d78db85576298e606afda8c928d',1,'RotationalDynamics1DOF::StateType'],['../structRotationalDynamics3DOF.html#aaee29651f3b1671b6ab4e10656ea6f9a',1,'RotationalDynamics3DOF::StateType'],['../structRigidBodyDynamics3DOF.html#a448c5efb998f492d1518eb0d2d7ded74',1,'RigidBodyDynamics3DOF::StateType'],['../structRigidBodyDynamics6DOF.html#adf5c3e5f6090032d18019c7aeab91f51',1,'RigidBodyDynamics6DOF::StateType']]] + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_27',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20double_20_3e_28',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20se2_3c_20t_20_3e_2c_203_20_3e_29',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SE2< T >, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20se3_3c_20t_20_3e_2c_206_20_3e_30',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SE3< T >, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20so2_3c_20t_20_3e_2c_201_20_3e_31',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SO2< T >, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20so3_3c_20t_20_3e_2c_203_20_3e_32',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SO3< T >, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_33',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20double_20_3e_34',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20se2_3c_20t_20_3e_2c_204_2c_203_20_3e_35',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SE2< T >, 4, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20se3_3c_20t_20_3e_2c_207_2c_206_20_3e_36',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SE3< T >, 7, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20so2_3c_20t_20_3e_2c_202_2c_201_20_3e_37',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SO2< T >, 2, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20so3_3c_20t_20_3e_2c_204_2c_203_20_3e_38',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SO3< T >, 4, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarsignalspec_3c_20t_20_3e_2c_20scalarsignalspec_3c_20t_20_3e_20_3e_39',['Signal< ScalarSignalSpec< T >, ScalarSignalSpec< T > >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarsignalspec_3c_20t_20_3e_2c_20scalarsignalspec_3c_20t_20_3e_20_3e_3c_20double_20_3e_40',['Signal< ScalarSignalSpec< T >, ScalarSignalSpec< T > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarstatesignalspec_3c_20t_20_3e_2c_20scalarstatesignalspec_3c_20t_20_3e_20_3e_41',['Signal< ScalarStateSignalSpec< T >, ScalarStateSignalSpec< T > >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarstatesignalspec_3c_20t_20_3e_2c_20scalarstatesignalspec_3c_20t_20_3e_20_3e_3c_20double_20_3e_42',['Signal< ScalarStateSignalSpec< T >, ScalarStateSignalSpec< T > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_43',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20double_20_3e_44',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_201_20_3e_45',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_2010_20_3e_46',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 10 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_202_20_3e_47',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 2 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_203_20_3e_48',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_204_20_3e_49',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 4 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_205_20_3e_50',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 5 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_206_20_3e_51',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_207_20_3e_52',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 7 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_208_20_3e_53',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 8 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_209_20_3e_54',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 9 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_55',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20double_20_3e_56',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_201_20_3e_57',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_2010_20_3e_58',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 10 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_202_20_3e_59',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 2 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_203_20_3e_60',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_204_20_3e_61',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 4 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_205_20_3e_62',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 5 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_206_20_3e_63',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_207_20_3e_64',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 7 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_208_20_3e_65',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 8 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_209_20_3e_66',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 9 >',['../classSignal.html',1,'']]], + ['signal_5futils_67',['signal_utils',['../namespacesignal__utils.html',1,'']]], + ['signaldp_68',['SignalDP',['../structSignal_1_1SignalDP.html',1,'Signal']]], + ['signaldpcomparator_69',['SignalDPComparator',['../classSignal.html#a6db70e8a2784b5596a47f2249a2627b7',1,'Signal']]], + ['signals_20cpp_20library_20documentation_70',['signals-cpp Library Documentation',['../index.html',1,'']]], + ['signals_2eh_71',['Signals.h',['../Signals_8h.html',1,'']]], + ['simpsonintegrator_72',['SimpsonIntegrator',['../Integration_8h.html#a3ac408f7f30b4b1b5b218e5d48eca5ed',1,'Integration.h']]], + ['simpsonintegratorspec_73',['SimpsonIntegratorSpec',['../structSimpsonIntegratorSpec.html',1,'']]], + ['simulate_74',['simulate',['../classModel.html#ac7446138b27c8feba779ebfe8e82b99d',1,'Model::simulate(const InputSignalType &u, const double &tf, const bool &insertIntoHistory=false, const bool &calculateXddot=false)'],['../classModel.html#ac2550ae8ed888d167450160ce55286df',1,'Model::simulate(const InputSignalType &u, const double &tf, const double &dt, const bool &insertIntoHistory=false, const bool &calculateXddot=false)']]], + ['so2dsignal_75',['SO2dSignal',['../Signal_8h.html#a43a8b3bb4241f080c75114c98502e21b',1,'Signal.h']]], + ['so2dstate_76',['SO2dState',['../State_8h.html#af87fca61f7adfb8b62056d2f6c815e51',1,'State.h']]], + ['so2dstatesignal_77',['SO2dStateSignal',['../State_8h.html#a4f4b421bf1a450cd6514a24b8c16e8cb',1,'State.h']]], + ['so2signal_78',['SO2Signal',['../Signal_8h.html#acbd9dbde916447b024121b565ee6ea96',1,'Signal.h']]], + ['so2state_79',['SO2State',['../State_8h.html#ab2d123ee7121bd4e6c7e55ce62c770ee',1,'State.h']]], + ['so2statesignal_80',['SO2StateSignal',['../State_8h.html#a455c23e3eed1fa310813120299d8cc95',1,'State.h']]], + ['so3dsignal_81',['SO3dSignal',['../Signal_8h.html#a1fbce3445fc6d54d3dfc2aa95fdcc37f',1,'Signal.h']]], + ['so3dstate_82',['SO3dState',['../State_8h.html#a7ab722ee104a5c16222f5cbd0d682657',1,'State.h']]], + ['so3dstatesignal_83',['SO3dStateSignal',['../State_8h.html#a7069682eef4672ac723761c44e44bc5a',1,'State.h']]], + ['so3signal_84',['SO3Signal',['../Signal_8h.html#a25f5e910566ad4b1b610a8eebb96274d',1,'Signal.h']]], + ['so3state_85',['SO3State',['../State_8h.html#ae37ec421e65f8ce1346e62704e6ea859',1,'State.h']]], + ['so3statesignal_86',['SO3StateSignal',['../State_8h.html#a07ec000c82b285e661a861ae5f90736a',1,'State.h']]], + ['state_87',['State',['../structState.html',1,'State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim >'],['../structState.html#adcb914ebe25fe14622a945801267fa7a',1,'State::State()'],['../structState.html#a097d236bc46ca02a379e2fd188fe3e97',1,'State::State(T *arr)'],['../structState.html#aa10b450dbe8a806a0b203521b4738c0c',1,'State::State(const State &other)']]], + ['state_2eh_88',['State.h',['../State_8h.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_89',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20double_20_3e_90',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< double >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_91',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, ManifoldType, PD, TD >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20se2_3c_20t_20_3e_2c_204_2c_203_20_3e_92',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SE2< T >, 4, 3 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20se3_3c_20t_20_3e_2c_207_2c_206_20_3e_93',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SE3< T >, 7, 6 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20so2_3c_20t_20_3e_2c_202_2c_201_20_3e_94',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SO2< T >, 2, 1 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20so3_3c_20t_20_3e_2c_204_2c_203_20_3e_95',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SO3< T >, 4, 3 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_20_3e_96',['State< T, ScalarSignalSpec< T >, 1, ScalarSignalSpec< T >, 1 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_20_3e_3c_20double_20_3e_97',['State< T, ScalarSignalSpec< T >, 1, ScalarSignalSpec< T >, 1 >< double >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_20_3e_3c_20t_20_3e_98',['State< T, ScalarSignalSpec< T >, 1, ScalarSignalSpec< T >, 1 >< T >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_99',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20double_20_3e_100',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< double >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_201_20_3e_101',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 1 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_2010_20_3e_102',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 10 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_202_20_3e_103',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 2 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_203_20_3e_104',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 3 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_204_20_3e_105',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 4 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_205_20_3e_106',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 5 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_206_20_3e_107',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 6 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_207_20_3e_108',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 7 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_208_20_3e_109',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 8 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_209_20_3e_110',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 9 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_20d_20_3e_111',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, d >',['../structState.html',1,'']]], + ['statedotdottype_112',['StateDotDotType',['../structTranslationalDynamicsBase.html#a4ae3874e31bcc97d54f4cebea0606002',1,'TranslationalDynamicsBase::StateDotDotType'],['../structRotationalDynamics1DOF.html#a5e2f1cd471e7be99dc9e0f3f29f146f3',1,'RotationalDynamics1DOF::StateDotDotType'],['../structRotationalDynamics3DOF.html#a6e75764a6e9b0ec406d716dfb60943b1',1,'RotationalDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics3DOF.html#a562a8cc5e6e8dca19982509022a22ba4',1,'RigidBodyDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics6DOF.html#a32c92b85c94f66739358385a0a3a07fc',1,'RigidBodyDynamics6DOF::StateDotDotType']]], + ['statedotsignaltype_113',['StateDotSignalType',['../classModel.html#a8abdf37c6158386a9f1d2c6c506f6839',1,'Model::StateDotSignalType'],['../structTranslationalDynamicsBase.html#a3870f6b57fcb6cb578b3640401331a39',1,'TranslationalDynamicsBase::StateDotSignalType'],['../structRotationalDynamics1DOF.html#a32c4979bf8f6aa3f9c1b0f2818ba4abd',1,'RotationalDynamics1DOF::StateDotSignalType'],['../structRotationalDynamics3DOF.html#a6b1ce3427c65404128d15a66c3d11621',1,'RotationalDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics3DOF.html#a28d138392ca0069c5e6274f78fd08e29',1,'RigidBodyDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics6DOF.html#afcafc7961087b27b239ad998e436da9a',1,'RigidBodyDynamics6DOF::StateDotSignalType']]], + ['statedottype_114',['StateDotType',['../structTranslationalDynamicsBase.html#a25c6532290d222c25e727394a0afa0b7',1,'TranslationalDynamicsBase::StateDotType'],['../structRotationalDynamics1DOF.html#a7df05f9db990eecd331f506d1a17597e',1,'RotationalDynamics1DOF::StateDotType'],['../structRotationalDynamics3DOF.html#a40c9649794d2d6e82da6451d17c32bb5',1,'RotationalDynamics3DOF::StateDotType'],['../structRigidBodyDynamics3DOF.html#a7a9fa29ba97531d856e87560806a805c',1,'RigidBodyDynamics3DOF::StateDotType'],['../structRigidBodyDynamics6DOF.html#aa664579d3d691fcd4c5824b242dd2061',1,'RigidBodyDynamics6DOF::StateDotType']]], + ['statesignaltype_115',['StateSignalType',['../classModel.html#a643e1a47ddbb10c5c10844f9aea5be98',1,'Model::StateSignalType'],['../structTranslationalDynamicsBase.html#a1f0fdd4bbfb73f52878c7e5c7e459f16',1,'TranslationalDynamicsBase::StateSignalType'],['../structRotationalDynamics1DOF.html#ac321d27d0098cb3e8e64ea0d98500cb6',1,'RotationalDynamics1DOF::StateSignalType'],['../structRotationalDynamics3DOF.html#a2814e21ab959a4cb71fdc2682d1cad69',1,'RotationalDynamics3DOF::StateSignalType'],['../structRigidBodyDynamics3DOF.html#a0c346a983bc929f1f7a6e5d2be3a0841',1,'RigidBodyDynamics3DOF::StateSignalType'],['../structRigidBodyDynamics6DOF.html#ad4e0605bf2a0c90acbe9a1a333b9b952',1,'RigidBodyDynamics6DOF::StateSignalType']]], + ['statetype_116',['StateType',['../structTranslationalDynamicsBase.html#aabb958cc98babacfc8478a04fb7a37dd',1,'TranslationalDynamicsBase::StateType'],['../structRotationalDynamics1DOF.html#aada86d78db85576298e606afda8c928d',1,'RotationalDynamics1DOF::StateType'],['../structRotationalDynamics3DOF.html#aaee29651f3b1671b6ab4e10656ea6f9a',1,'RotationalDynamics3DOF::StateType'],['../structRigidBodyDynamics3DOF.html#a448c5efb998f492d1518eb0d2d7ded74',1,'RigidBodyDynamics3DOF::StateType'],['../structRigidBodyDynamics6DOF.html#adf5c3e5f6090032d18019c7aeab91f51',1,'RigidBodyDynamics6DOF::StateType']]] ]; diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js index 2f5ddb9..090355a 100644 --- a/docs/search/classes_1.js +++ b/docs/search/classes_1.js @@ -1,4 +1,7 @@ var searchData= [ - ['integrator_0',['Integrator',['../structIntegrator.html',1,'']]] + ['integrator_0',['Integrator',['../structIntegrator.html',1,'']]], + ['integrator_3c_20eulerintegratorspec_20_3e_1',['Integrator< EulerIntegratorSpec >',['../structIntegrator.html',1,'']]], + ['integrator_3c_20simpsonintegratorspec_20_3e_2',['Integrator< SimpsonIntegratorSpec >',['../structIntegrator.html',1,'']]], + ['integrator_3c_20trapezoidalintegratorspec_20_3e_3',['Integrator< TrapezoidalIntegratorSpec >',['../structIntegrator.html',1,'']]] ]; diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js index 7e330b0..f4490df 100644 --- a/docs/search/classes_2.js +++ b/docs/search/classes_2.js @@ -2,5 +2,19 @@ var searchData= [ ['manifoldsignalspec_0',['ManifoldSignalSpec',['../structManifoldSignalSpec.html',1,'']]], ['manifoldstatesignalspec_1',['ManifoldStateSignalSpec',['../structManifoldStateSignalSpec.html',1,'']]], - ['model_2',['Model',['../classModel.html',1,'']]] + ['model_2',['Model',['../classModel.html',1,'']]], + ['model_3c_20rigidbodydynamics3dof_3c_20t_20_3e_20_3e_3',['Model< RigidBodyDynamics3DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rigidbodydynamics3dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_4',['Model< RigidBodyDynamics3DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20rigidbodydynamics6dof_3c_20t_20_3e_20_3e_5',['Model< RigidBodyDynamics6DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rigidbodydynamics6dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_6',['Model< RigidBodyDynamics6DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics1dof_3c_20t_20_3e_20_3e_7',['Model< RotationalDynamics1DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics1dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_8',['Model< RotationalDynamics1DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics3dof_3c_20t_20_3e_20_3e_9',['Model< RotationalDynamics3DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20rotationaldynamics3dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_10',['Model< RotationalDynamics3DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics1dof_3c_20t_20_3e_20_3e_11',['Model< TranslationalDynamics1DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics1dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_12',['Model< TranslationalDynamics1DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics2dof_3c_20t_20_3e_20_3e_13',['Model< TranslationalDynamics2DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics2dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_14',['Model< TranslationalDynamics2DOF< T > >< double >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics3dof_3c_20t_20_3e_20_3e_15',['Model< TranslationalDynamics3DOF< T > >',['../classModel.html',1,'']]], + ['model_3c_20translationaldynamics3dof_3c_20t_20_3e_20_3e_3c_20double_20_3e_16',['Model< TranslationalDynamics3DOF< T > >< double >',['../classModel.html',1,'']]] ]; diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js index ca9c09d..98209f9 100644 --- a/docs/search/classes_4.js +++ b/docs/search/classes_4.js @@ -3,7 +3,70 @@ var searchData= ['scalarsignalspec_0',['ScalarSignalSpec',['../structScalarSignalSpec.html',1,'']]], ['scalarstatesignalspec_1',['ScalarStateSignalSpec',['../structScalarStateSignalSpec.html',1,'']]], ['signal_2',['Signal',['../classSignal.html',1,'']]], - ['signaldp_3',['SignalDP',['../structSignal_1_1SignalDP.html',1,'Signal']]], - ['simpsonintegratorspec_4',['SimpsonIntegratorSpec',['../structSimpsonIntegratorSpec.html',1,'']]], - ['state_5',['State',['../structState.html',1,'']]] + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20double_20_3e_4',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20se2_3c_20t_20_3e_2c_203_20_3e_5',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SE2< T >, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20se3_3c_20t_20_3e_2c_206_20_3e_6',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SE3< T >, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20so2_3c_20t_20_3e_2c_201_20_3e_7',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SO2< T >, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_20so3_3c_20t_20_3e_2c_203_20_3e_8',['Signal< ManifoldSignalSpec< ManifoldType >, VectorSignalSpec< T, d > >< T, SO3< T >, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_9',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20double_20_3e_10',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20se2_3c_20t_20_3e_2c_204_2c_203_20_3e_11',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SE2< T >, 4, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20se3_3c_20t_20_3e_2c_207_2c_206_20_3e_12',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SE3< T >, 7, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20so2_3c_20t_20_3e_2c_202_2c_201_20_3e_13',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SO2< T >, 2, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20manifoldstatesignalspec_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20td_20_3e_20_3e_3c_20t_2c_20so3_3c_20t_20_3e_2c_204_2c_203_20_3e_14',['Signal< ManifoldStateSignalSpec< T, ManifoldType, PD, TD >, VectorStateSignalSpec< T, TD > >< T, SO3< T >, 4, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarsignalspec_3c_20t_20_3e_2c_20scalarsignalspec_3c_20t_20_3e_20_3e_15',['Signal< ScalarSignalSpec< T >, ScalarSignalSpec< T > >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarsignalspec_3c_20t_20_3e_2c_20scalarsignalspec_3c_20t_20_3e_20_3e_3c_20double_20_3e_16',['Signal< ScalarSignalSpec< T >, ScalarSignalSpec< T > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarstatesignalspec_3c_20t_20_3e_2c_20scalarstatesignalspec_3c_20t_20_3e_20_3e_17',['Signal< ScalarStateSignalSpec< T >, ScalarStateSignalSpec< T > >',['../classSignal.html',1,'']]], + ['signal_3c_20scalarstatesignalspec_3c_20t_20_3e_2c_20scalarstatesignalspec_3c_20t_20_3e_20_3e_3c_20double_20_3e_18',['Signal< ScalarStateSignalSpec< T >, ScalarStateSignalSpec< T > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_19',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20double_20_3e_20',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_201_20_3e_21',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_2010_20_3e_22',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 10 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_202_20_3e_23',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 2 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_203_20_3e_24',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_204_20_3e_25',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 4 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_205_20_3e_26',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 5 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_206_20_3e_27',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_207_20_3e_28',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 7 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_208_20_3e_29',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 8 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_209_20_3e_30',['Signal< VectorSignalSpec< T, d >, VectorSignalSpec< T, d > >< T, 9 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_31',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20double_20_3e_32',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< double >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_201_20_3e_33',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 1 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_2010_20_3e_34',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 10 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_202_20_3e_35',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 2 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_203_20_3e_36',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 3 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_204_20_3e_37',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 4 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_205_20_3e_38',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 5 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_206_20_3e_39',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 6 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_207_20_3e_40',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 7 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_208_20_3e_41',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 8 >',['../classSignal.html',1,'']]], + ['signal_3c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_2c_20vectorstatesignalspec_3c_20t_2c_20d_20_3e_20_3e_3c_20t_2c_209_20_3e_42',['Signal< VectorStateSignalSpec< T, d >, VectorStateSignalSpec< T, d > >< T, 9 >',['../classSignal.html',1,'']]], + ['signaldp_43',['SignalDP',['../structSignal_1_1SignalDP.html',1,'Signal']]], + ['simpsonintegratorspec_44',['SimpsonIntegratorSpec',['../structSimpsonIntegratorSpec.html',1,'']]], + ['state_45',['State',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_46',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20double_20_3e_47',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< double >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20manifoldtype_2c_20pd_2c_20td_20_3e_48',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, ManifoldType, PD, TD >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20se2_3c_20t_20_3e_2c_204_2c_203_20_3e_49',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SE2< T >, 4, 3 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20se3_3c_20t_20_3e_2c_207_2c_206_20_3e_50',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SE3< T >, 7, 6 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20so2_3c_20t_20_3e_2c_202_2c_201_20_3e_51',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SO2< T >, 2, 1 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20manifoldsignalspec_3c_20manifoldtype_20_3e_2c_20pd_2c_20vectorsignalspec_3c_20t_2c_20td_20_3e_2c_20td_20_3e_3c_20t_2c_20so3_3c_20t_20_3e_2c_204_2c_203_20_3e_52',['State< T, ManifoldSignalSpec< ManifoldType >, PD, VectorSignalSpec< T, TD >, TD >< T, SO3< T >, 4, 3 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_20_3e_53',['State< T, ScalarSignalSpec< T >, 1, ScalarSignalSpec< T >, 1 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_20_3e_3c_20double_20_3e_54',['State< T, ScalarSignalSpec< T >, 1, ScalarSignalSpec< T >, 1 >< double >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_2c_20scalarsignalspec_3c_20t_20_3e_2c_201_20_3e_3c_20t_20_3e_55',['State< T, ScalarSignalSpec< T >, 1, ScalarSignalSpec< T >, 1 >< T >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_56',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20double_20_3e_57',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< double >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_201_20_3e_58',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 1 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_2010_20_3e_59',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 10 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_202_20_3e_60',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 2 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_203_20_3e_61',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 3 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_204_20_3e_62',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 4 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_205_20_3e_63',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 5 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_206_20_3e_64',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 6 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_207_20_3e_65',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 7 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_208_20_3e_66',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 8 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_209_20_3e_67',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, 9 >',['../structState.html',1,'']]], + ['state_3c_20t_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_2c_20vectorsignalspec_3c_20t_2c_20d_20_3e_2c_20d_20_3e_3c_20t_2c_20d_20_3e_68',['State< T, VectorSignalSpec< T, d >, d, VectorSignalSpec< T, d >, d >< T, d >',['../structState.html',1,'']]] ]; diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js index 11587bb..e198267 100644 --- a/docs/search/classes_5.js +++ b/docs/search/classes_5.js @@ -1,5 +1,8 @@ var searchData= [ ['translationaldynamicsbase_0',['TranslationalDynamicsBase',['../structTranslationalDynamicsBase.html',1,'']]], - ['trapezoidalintegratorspec_1',['TrapezoidalIntegratorSpec',['../structTrapezoidalIntegratorSpec.html',1,'']]] + ['translationaldynamicsbase_3c_20scalarsignal_3c_20t_20_3e_2c_20scalarstatesignal_3c_20t_20_3e_2c_20scalarstatesignal_3c_20t_20_3e_2c_201_2c_20rigidbodyparams1d_20_3e_1',['TranslationalDynamicsBase< ScalarSignal< T >, ScalarStateSignal< T >, ScalarStateSignal< T >, 1, RigidBodyParams1D >',['../structTranslationalDynamicsBase.html',1,'']]], + ['translationaldynamicsbase_3c_20vector2signal_3c_20t_20_3e_2c_20vector2statesignal_3c_20t_20_3e_2c_20vector2statesignal_3c_20t_20_3e_2c_202_2c_20rigidbodyparams2d_20_3e_2',['TranslationalDynamicsBase< Vector2Signal< T >, Vector2StateSignal< T >, Vector2StateSignal< T >, 2, RigidBodyParams2D >',['../structTranslationalDynamicsBase.html',1,'']]], + ['translationaldynamicsbase_3c_20vector3signal_3c_20t_20_3e_2c_20vector3statesignal_3c_20t_20_3e_2c_20vector3statesignal_3c_20t_20_3e_2c_203_2c_20rigidbodyparams3d_20_3e_3',['TranslationalDynamicsBase< Vector3Signal< T >, Vector3StateSignal< T >, Vector3StateSignal< T >, 3, RigidBodyParams3D >',['../structTranslationalDynamicsBase.html',1,'']]], + ['trapezoidalintegratorspec_4',['TrapezoidalIntegratorSpec',['../structTrapezoidalIntegratorSpec.html',1,'']]] ]; diff --git a/docs/search/related_0.js b/docs/search/related_0.js index d4f70ce..633202b 100644 --- a/docs/search/related_0.js +++ b/docs/search/related_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['operator_2a_0',['operator*',['../classSignal.html#ad61a2749da48601dcf27bedaa0cf54fd',1,'Signal::operator*'],['../classSignal.html#ae5d88905516fd17257964442b0830584',1,'Signal::operator*']]], + ['operator_2a_0',['operator*',['../classSignal.html#ad61a2749da48601dcf27bedaa0cf54fd',1,'Signal::operator*(const double &l, const Signal< BSS, TSS > &r)'],['../classSignal.html#ae5d88905516fd17257964442b0830584',1,'Signal::operator*(const Signal< BSS, TSS > &l, const double &r)']]], ['operator_2b_1',['operator+',['../classSignal.html#aead0dbc78a90fbd6ad3f86ab61ed65f7',1,'Signal']]], ['operator_2d_2',['operator-',['../classSignal.html#a22d02130c5fec79a084ef4d1a28521dc',1,'Signal']]] ]; diff --git a/docs/search/typedefs_1.js b/docs/search/typedefs_1.js index 1ad4799..71a1ff4 100644 --- a/docs/search/typedefs_1.js +++ b/docs/search/typedefs_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['eulerintegrator_0',['EulerIntegrator',['../Integration_8h.html#aa77358d3cb26c8b8992d44c2079a2a49',1,'Integration.h']]] + ['eulerintegrator_0',['EulerIntegrator',['../Integration_8h.html#a0e36b47220a522ff9899d9624dd7c01b',1,'Integration.h']]] ]; diff --git a/docs/search/typedefs_5.js b/docs/search/typedefs_5.js index b204549..e8c143c 100644 --- a/docs/search/typedefs_5.js +++ b/docs/search/typedefs_5.js @@ -1,11 +1,11 @@ var searchData= [ - ['rigidbody3dofmodel_0',['RigidBody3DOFModel',['../Models_8h.html#a253b3866118f6e70cfc4f08b471c2975',1,'Models.h']]], + ['rigidbody3dofmodel_0',['RigidBody3DOFModel',['../Models_8h.html#ab084e172ef604e5975b5ff17e33d06ce',1,'Models.h']]], ['rigidbody3dofmodeld_1',['RigidBody3DOFModeld',['../Models_8h.html#a46f2319cb159c02e4eb4801d850d54d9',1,'Models.h']]], - ['rigidbody6dofmodel_2',['RigidBody6DOFModel',['../Models_8h.html#ac6b34f1aa0a10dcb6e9fda4a2814a9b3',1,'Models.h']]], + ['rigidbody6dofmodel_2',['RigidBody6DOFModel',['../Models_8h.html#a8f7d8c7063cb9c51d2bb794931db3a34',1,'Models.h']]], ['rigidbody6dofmodeld_3',['RigidBody6DOFModeld',['../Models_8h.html#a40c2fc8d427c1bd6dfee02295ccb3cb6',1,'Models.h']]], - ['rotational1dofmodel_4',['Rotational1DOFModel',['../Models_8h.html#a44917fd68b589ce4fc82e69e00c41201',1,'Models.h']]], + ['rotational1dofmodel_4',['Rotational1DOFModel',['../Models_8h.html#abc1d5223da3343a9537cc0a6f5abd239',1,'Models.h']]], ['rotational1dofmodeld_5',['Rotational1DOFModeld',['../Models_8h.html#af9b104589a404874af160185cf8a725c',1,'Models.h']]], - ['rotational3dofmodel_6',['Rotational3DOFModel',['../Models_8h.html#ad5282fd410476dbdd8381772a38ac2f1',1,'Models.h']]], + ['rotational3dofmodel_6',['Rotational3DOFModel',['../Models_8h.html#a287ab38fdf9b2634bf844a17719b9115',1,'Models.h']]], ['rotational3dofmodeld_7',['Rotational3DOFModeld',['../Models_8h.html#a51e40a2924a4b6ff134878368461bb1a',1,'Models.h']]] ]; diff --git a/docs/search/typedefs_6.js b/docs/search/typedefs_6.js index 2810a0f..1e715f3 100644 --- a/docs/search/typedefs_6.js +++ b/docs/search/typedefs_6.js @@ -10,28 +10,28 @@ var searchData= ['se2dsignal_7',['SE2dSignal',['../Signal_8h.html#a27317de3cebe688fdf9b1f89e8d749ea',1,'Signal.h']]], ['se2dstate_8',['SE2dState',['../State_8h.html#abf8de0fae02a60506ddd6e134b75ae00',1,'State.h']]], ['se2dstatesignal_9',['SE2dStateSignal',['../State_8h.html#a709efdac7ba2c93eedbf1533c74e42f5',1,'State.h']]], - ['se2signal_10',['SE2Signal',['../Signal_8h.html#ad643119cf3272132185b21288c55d408',1,'Signal.h']]], - ['se2state_11',['SE2State',['../State_8h.html#a040c943cebaa523f316e57aaa2c90a8f',1,'State.h']]], - ['se2statesignal_12',['SE2StateSignal',['../State_8h.html#a7de4c0261575a69f6ed4e17cf50e3e03',1,'State.h']]], + ['se2signal_10',['SE2Signal',['../Signal_8h.html#a5c686d1c1e780f578c950182943ecf41',1,'Signal.h']]], + ['se2state_11',['SE2State',['../State_8h.html#acc2213abe7e1f1169bce3603e87f44d2',1,'State.h']]], + ['se2statesignal_12',['SE2StateSignal',['../State_8h.html#ae34074b7d367592e7022441b0ee836d9',1,'State.h']]], ['se3dsignal_13',['SE3dSignal',['../Signal_8h.html#a13875f09fcdcc6dd114766bacc38f01b',1,'Signal.h']]], ['se3dstate_14',['SE3dState',['../State_8h.html#a98daf00f053bcc148a93319eac4901e4',1,'State.h']]], ['se3dstatesignal_15',['SE3dStateSignal',['../State_8h.html#a9b00d890fcdbf16abfbb263061e9bc98',1,'State.h']]], - ['se3signal_16',['SE3Signal',['../Signal_8h.html#a765b6ae13329153a6b634a059a9402a3',1,'Signal.h']]], - ['se3state_17',['SE3State',['../State_8h.html#aac8e0a5eaf4f01fa2a6f388c116187b6',1,'State.h']]], - ['se3statesignal_18',['SE3StateSignal',['../State_8h.html#a0f26da8f398a7f20706b5f962e475126',1,'State.h']]], - ['simpsonintegrator_19',['SimpsonIntegrator',['../Integration_8h.html#aa29ec69e4ec01e7fe15ed9bbc59fd93b',1,'Integration.h']]], + ['se3signal_16',['SE3Signal',['../Signal_8h.html#ab87588076a67398d28c7f77a2103470b',1,'Signal.h']]], + ['se3state_17',['SE3State',['../State_8h.html#a41c34d11317aa1e268232a6ddf9c0ba7',1,'State.h']]], + ['se3statesignal_18',['SE3StateSignal',['../State_8h.html#a337f5beba24e405d11550802e4375c73',1,'State.h']]], + ['simpsonintegrator_19',['SimpsonIntegrator',['../Integration_8h.html#a3ac408f7f30b4b1b5b218e5d48eca5ed',1,'Integration.h']]], ['so2dsignal_20',['SO2dSignal',['../Signal_8h.html#a43a8b3bb4241f080c75114c98502e21b',1,'Signal.h']]], ['so2dstate_21',['SO2dState',['../State_8h.html#af87fca61f7adfb8b62056d2f6c815e51',1,'State.h']]], ['so2dstatesignal_22',['SO2dStateSignal',['../State_8h.html#a4f4b421bf1a450cd6514a24b8c16e8cb',1,'State.h']]], - ['so2signal_23',['SO2Signal',['../Signal_8h.html#ac36c4f295327639b98a801301e288845',1,'Signal.h']]], - ['so2state_24',['SO2State',['../State_8h.html#a53505b4e14d5121cf4ec30c3d5ee854f',1,'State.h']]], - ['so2statesignal_25',['SO2StateSignal',['../State_8h.html#a4e7a95697e869ec8e9cd31c0723ea2cf',1,'State.h']]], + ['so2signal_23',['SO2Signal',['../Signal_8h.html#acbd9dbde916447b024121b565ee6ea96',1,'Signal.h']]], + ['so2state_24',['SO2State',['../State_8h.html#ab2d123ee7121bd4e6c7e55ce62c770ee',1,'State.h']]], + ['so2statesignal_25',['SO2StateSignal',['../State_8h.html#a455c23e3eed1fa310813120299d8cc95',1,'State.h']]], ['so3dsignal_26',['SO3dSignal',['../Signal_8h.html#a1fbce3445fc6d54d3dfc2aa95fdcc37f',1,'Signal.h']]], ['so3dstate_27',['SO3dState',['../State_8h.html#a7ab722ee104a5c16222f5cbd0d682657',1,'State.h']]], ['so3dstatesignal_28',['SO3dStateSignal',['../State_8h.html#a7069682eef4672ac723761c44e44bc5a',1,'State.h']]], - ['so3signal_29',['SO3Signal',['../Signal_8h.html#afca3faa089af1abf0b808bcb6be5e740',1,'Signal.h']]], - ['so3state_30',['SO3State',['../State_8h.html#a0bc2e14b1e00089eac587823a7028df1',1,'State.h']]], - ['so3statesignal_31',['SO3StateSignal',['../State_8h.html#ae37ddd285b52c0765cd59fd0e212dfb5',1,'State.h']]], + ['so3signal_29',['SO3Signal',['../Signal_8h.html#a25f5e910566ad4b1b610a8eebb96274d',1,'Signal.h']]], + ['so3state_30',['SO3State',['../State_8h.html#ae37ec421e65f8ce1346e62704e6ea859',1,'State.h']]], + ['so3statesignal_31',['SO3StateSignal',['../State_8h.html#a07ec000c82b285e661a861ae5f90736a',1,'State.h']]], ['statedotdottype_32',['StateDotDotType',['../structTranslationalDynamicsBase.html#a4ae3874e31bcc97d54f4cebea0606002',1,'TranslationalDynamicsBase::StateDotDotType'],['../structRotationalDynamics1DOF.html#a5e2f1cd471e7be99dc9e0f3f29f146f3',1,'RotationalDynamics1DOF::StateDotDotType'],['../structRotationalDynamics3DOF.html#a6e75764a6e9b0ec406d716dfb60943b1',1,'RotationalDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics3DOF.html#a562a8cc5e6e8dca19982509022a22ba4',1,'RigidBodyDynamics3DOF::StateDotDotType'],['../structRigidBodyDynamics6DOF.html#a32c92b85c94f66739358385a0a3a07fc',1,'RigidBodyDynamics6DOF::StateDotDotType']]], ['statedotsignaltype_33',['StateDotSignalType',['../classModel.html#a8abdf37c6158386a9f1d2c6c506f6839',1,'Model::StateDotSignalType'],['../structTranslationalDynamicsBase.html#a3870f6b57fcb6cb578b3640401331a39',1,'TranslationalDynamicsBase::StateDotSignalType'],['../structRotationalDynamics1DOF.html#a32c4979bf8f6aa3f9c1b0f2818ba4abd',1,'RotationalDynamics1DOF::StateDotSignalType'],['../structRotationalDynamics3DOF.html#a6b1ce3427c65404128d15a66c3d11621',1,'RotationalDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics3DOF.html#a28d138392ca0069c5e6274f78fd08e29',1,'RigidBodyDynamics3DOF::StateDotSignalType'],['../structRigidBodyDynamics6DOF.html#afcafc7961087b27b239ad998e436da9a',1,'RigidBodyDynamics6DOF::StateDotSignalType']]], ['statedottype_34',['StateDotType',['../structTranslationalDynamicsBase.html#a25c6532290d222c25e727394a0afa0b7',1,'TranslationalDynamicsBase::StateDotType'],['../structRotationalDynamics1DOF.html#a7df05f9db990eecd331f506d1a17597e',1,'RotationalDynamics1DOF::StateDotType'],['../structRotationalDynamics3DOF.html#a40c9649794d2d6e82da6451d17c32bb5',1,'RotationalDynamics3DOF::StateDotType'],['../structRigidBodyDynamics3DOF.html#a7a9fa29ba97531d856e87560806a805c',1,'RigidBodyDynamics3DOF::StateDotType'],['../structRigidBodyDynamics6DOF.html#aa664579d3d691fcd4c5824b242dd2061',1,'RigidBodyDynamics6DOF::StateDotType']]], diff --git a/docs/search/typedefs_7.js b/docs/search/typedefs_7.js index 11b7e60..050204f 100644 --- a/docs/search/typedefs_7.js +++ b/docs/search/typedefs_7.js @@ -1,16 +1,16 @@ var searchData= [ ['tangenttype_0',['TangentType',['../classSignal.html#aa0094b1c69fd482de9de83b99634996a',1,'Signal']]], - ['translational1dofmodel_1',['Translational1DOFModel',['../Models_8h.html#a06f4823dd2b571a8718ccad09ce44fe7',1,'Models.h']]], + ['translational1dofmodel_1',['Translational1DOFModel',['../Models_8h.html#af9ad4901a092a7e81f8b092d1dbcf5f5',1,'Models.h']]], ['translational1dofmodeld_2',['Translational1DOFModeld',['../Models_8h.html#ab405c6c48aa770f74c7e942302b956c5',1,'Models.h']]], - ['translational2dofmodel_3',['Translational2DOFModel',['../Models_8h.html#aa8b7fa1f2cfd2453d95d80ce49abd8fc',1,'Models.h']]], + ['translational2dofmodel_3',['Translational2DOFModel',['../Models_8h.html#aee5681b9331f5514938a77680e9e1162',1,'Models.h']]], ['translational2dofmodeld_4',['Translational2DOFModeld',['../Models_8h.html#a7768cd6b33a5d94a677357664052d096',1,'Models.h']]], - ['translational3dofmodel_5',['Translational3DOFModel',['../Models_8h.html#aae658b45855be04ff99456f612008b96',1,'Models.h']]], + ['translational3dofmodel_5',['Translational3DOFModel',['../Models_8h.html#a3d0d9bd06d48c1d0022090b040895a62',1,'Models.h']]], ['translational3dofmodeld_6',['Translational3DOFModeld',['../Models_8h.html#a3c501b1f5d946eb9aa36b92d2ec611c5',1,'Models.h']]], ['translationaldynamics1dof_7',['TranslationalDynamics1DOF',['../Models_8h.html#aac436ed3df206f07f93110e3daffe773',1,'Models.h']]], ['translationaldynamics2dof_8',['TranslationalDynamics2DOF',['../Models_8h.html#ae3889fdff8dd169aef62fcdf6340e0e1',1,'Models.h']]], ['translationaldynamics3dof_9',['TranslationalDynamics3DOF',['../Models_8h.html#ad1ba77eac61f5da29df59b8b4b0d7a0d',1,'Models.h']]], - ['trapezoidalintegrator_10',['TrapezoidalIntegrator',['../Integration_8h.html#a95780a5b17730ea091c504cc3ab98b84',1,'Integration.h']]], + ['trapezoidalintegrator_10',['TrapezoidalIntegrator',['../Integration_8h.html#a123a7b32e66b7e1acc68d61a997abc96',1,'Integration.h']]], ['twisttype_11',['TwistType',['../structState.html#ab58b6e2fe6ea3c2777c5a8a92f6665a1',1,'State']]], ['type_12',['Type',['../structScalarSignalSpec.html#a4a319643aeb76b94214f8b41d64d5402',1,'ScalarSignalSpec::Type'],['../structVectorSignalSpec.html#ac21d15d01635665373eaf23b62f3d440',1,'VectorSignalSpec::Type'],['../structManifoldSignalSpec.html#ae6292debacd46f629429d03cf7e9a342',1,'ManifoldSignalSpec::Type'],['../structScalarStateSignalSpec.html#a7ae52069e3aafdb7c45b14168b1ad11b',1,'ScalarStateSignalSpec::Type'],['../structVectorStateSignalSpec.html#a3994948f467b39ca2dcd77d220a8cf3a',1,'VectorStateSignalSpec::Type'],['../structManifoldStateSignalSpec.html#aef8d411c012125303e1faa1d66b35c1c',1,'ManifoldStateSignalSpec::Type']]] ]; diff --git a/docs/search/typedefs_8.js b/docs/search/typedefs_8.js index 1de9081..e89b46b 100644 --- a/docs/search/typedefs_8.js +++ b/docs/search/typedefs_8.js @@ -3,63 +3,63 @@ var searchData= ['vector10dsignal_0',['Vector10dSignal',['../Signal_8h.html#a75b25f1facc38a02d21c155ec05655cc',1,'Signal.h']]], ['vector10dstate_1',['Vector10dState',['../State_8h.html#ac15f89e56010b705e5a2e0d9c3c50a6d',1,'State.h']]], ['vector10dstatesignal_2',['Vector10dStateSignal',['../State_8h.html#af22d4a3a8e0b033da1e86fbb86d62025',1,'State.h']]], - ['vector10signal_3',['Vector10Signal',['../Signal_8h.html#ae39387d9fa8cf1afc6a66334312b3e68',1,'Signal.h']]], - ['vector10state_4',['Vector10State',['../State_8h.html#aaebcae79f29e8afb31a487a07fe71178',1,'State.h']]], - ['vector10statesignal_5',['Vector10StateSignal',['../State_8h.html#a7aaf0c3fa4fd47f070fb708901981e1d',1,'State.h']]], + ['vector10signal_3',['Vector10Signal',['../Signal_8h.html#acda8904322955c5f969f290bf1a42595',1,'Signal.h']]], + ['vector10state_4',['Vector10State',['../State_8h.html#ae80b1d8972029135f755109d7c9cefcc',1,'State.h']]], + ['vector10statesignal_5',['Vector10StateSignal',['../State_8h.html#a1317973b896b1e34cafa85ed9476facc',1,'State.h']]], ['vector1dsignal_6',['Vector1dSignal',['../Signal_8h.html#a22bc2b41e336fe6237cfa41ac7b57d0b',1,'Signal.h']]], ['vector1dstate_7',['Vector1dState',['../State_8h.html#a1fccb71007e0830388d5c21c85e3344e',1,'State.h']]], ['vector1dstatesignal_8',['Vector1dStateSignal',['../State_8h.html#a62568e2f3d59e51a60168009aa1a54bf',1,'State.h']]], - ['vector1signal_9',['Vector1Signal',['../Signal_8h.html#a655827b9e6d4727905cbaae6a996df8f',1,'Signal.h']]], - ['vector1state_10',['Vector1State',['../State_8h.html#a0cc4f9bb31ad1c5782e620e2a8168f99',1,'State.h']]], - ['vector1statesignal_11',['Vector1StateSignal',['../State_8h.html#a5e82a65c39e740624f9c118536b5475d',1,'State.h']]], + ['vector1signal_9',['Vector1Signal',['../Signal_8h.html#a532b7bae92d23faa5962b50fab59ee1a',1,'Signal.h']]], + ['vector1state_10',['Vector1State',['../State_8h.html#abc0badbf8fbf6b0c2669496da71cda67',1,'State.h']]], + ['vector1statesignal_11',['Vector1StateSignal',['../State_8h.html#ab5090b8cb9c45dbe82c31d42d73d785e',1,'State.h']]], ['vector2dsignal_12',['Vector2dSignal',['../Signal_8h.html#a718e737386d2321f3e31df01ffe2fd61',1,'Signal.h']]], ['vector2dstate_13',['Vector2dState',['../State_8h.html#ae54c0630e02ee333a48fe6531d00e071',1,'State.h']]], ['vector2dstatesignal_14',['Vector2dStateSignal',['../State_8h.html#a100a0048450baf6c0d0c2f444eccaf8a',1,'State.h']]], - ['vector2signal_15',['Vector2Signal',['../Signal_8h.html#af705b24c209ce15ac1b412cbe7e52615',1,'Signal.h']]], - ['vector2state_16',['Vector2State',['../State_8h.html#af2610db569af97f280444234b4632b9b',1,'State.h']]], - ['vector2statesignal_17',['Vector2StateSignal',['../State_8h.html#a33b1f775ddbb45d3b1ae05ca4a7152c0',1,'State.h']]], + ['vector2signal_15',['Vector2Signal',['../Signal_8h.html#af4c2088cbc0c8f8c95be6f22e990d0d1',1,'Signal.h']]], + ['vector2state_16',['Vector2State',['../State_8h.html#a7f9f341c30868667e4855dbb3092e78d',1,'State.h']]], + ['vector2statesignal_17',['Vector2StateSignal',['../State_8h.html#a8733dc322548a85201a19ddea01ea50e',1,'State.h']]], ['vector3dsignal_18',['Vector3dSignal',['../Signal_8h.html#addff0c3095fce02a8ae3d8669292ea8a',1,'Signal.h']]], ['vector3dstate_19',['Vector3dState',['../State_8h.html#a0e9c381070552b28ffb2683b44e7b5a3',1,'State.h']]], ['vector3dstatesignal_20',['Vector3dStateSignal',['../State_8h.html#a1e20c96461ce98997ef1a3c0ab7b6668',1,'State.h']]], - ['vector3signal_21',['Vector3Signal',['../Signal_8h.html#a6f00143250c4d5856a25417d2fb5908f',1,'Signal.h']]], - ['vector3state_22',['Vector3State',['../State_8h.html#aa8c0482241bd43048f5a8ae3365c82be',1,'State.h']]], - ['vector3statesignal_23',['Vector3StateSignal',['../State_8h.html#a007fe0235bfe0d3393d33584f9a38f5b',1,'State.h']]], + ['vector3signal_21',['Vector3Signal',['../Signal_8h.html#a59c30838434bb9eabab59a54a0dceb9f',1,'Signal.h']]], + ['vector3state_22',['Vector3State',['../State_8h.html#a76ad6fc3428b4c484c36cb9b24db72f0',1,'State.h']]], + ['vector3statesignal_23',['Vector3StateSignal',['../State_8h.html#ae29a8cc7a8cfe9179c9befa2d9cf217d',1,'State.h']]], ['vector4dsignal_24',['Vector4dSignal',['../Signal_8h.html#a785560e5ddb26fcf9edc2eb9f34e7ec8',1,'Signal.h']]], ['vector4dstate_25',['Vector4dState',['../State_8h.html#a8add6ebebc487c439430cb69d2892bbf',1,'State.h']]], ['vector4dstatesignal_26',['Vector4dStateSignal',['../State_8h.html#a9013e9f17201a38fdb10648f14ea5c95',1,'State.h']]], - ['vector4signal_27',['Vector4Signal',['../Signal_8h.html#a30e3e4193a15b7c565df9edcf0b1a81b',1,'Signal.h']]], - ['vector4state_28',['Vector4State',['../State_8h.html#a4cfd5bd231c0f14e8a360134d9d17bee',1,'State.h']]], - ['vector4statesignal_29',['Vector4StateSignal',['../State_8h.html#a24c5f8ae10f7553987a0bb5c619cf505',1,'State.h']]], + ['vector4signal_27',['Vector4Signal',['../Signal_8h.html#a04b5a6ff0c189cb66f0e3137b1362c30',1,'Signal.h']]], + ['vector4state_28',['Vector4State',['../State_8h.html#a7123f01cd05975f377e8ff9e6ee1a06a',1,'State.h']]], + ['vector4statesignal_29',['Vector4StateSignal',['../State_8h.html#a5c328c48320c78070fff7e7982b311e9',1,'State.h']]], ['vector5dsignal_30',['Vector5dSignal',['../Signal_8h.html#ad0b807d45bcfe07cc9a2f54648dd4821',1,'Signal.h']]], ['vector5dstate_31',['Vector5dState',['../State_8h.html#a45d6b402de0ba422a815e117b084dde3',1,'State.h']]], ['vector5dstatesignal_32',['Vector5dStateSignal',['../State_8h.html#a7a8f2f6fd14951fd2fe337c952b0cb74',1,'State.h']]], - ['vector5signal_33',['Vector5Signal',['../Signal_8h.html#ab517aee0ae3891deb305ebd61de6f0e4',1,'Signal.h']]], - ['vector5state_34',['Vector5State',['../State_8h.html#a2890d15ac36c73fcd73556771b80b47e',1,'State.h']]], - ['vector5statesignal_35',['Vector5StateSignal',['../State_8h.html#a05175ceaa15c466ce47c983d489ce31b',1,'State.h']]], + ['vector5signal_33',['Vector5Signal',['../Signal_8h.html#a9f0b242918cfdc4b6eaecdeb6574b6cb',1,'Signal.h']]], + ['vector5state_34',['Vector5State',['../State_8h.html#ab5ce046688e9436f8b33892d42309eee',1,'State.h']]], + ['vector5statesignal_35',['Vector5StateSignal',['../State_8h.html#a4af99c5e283d22f79b5556ff27474965',1,'State.h']]], ['vector6dsignal_36',['Vector6dSignal',['../Signal_8h.html#acb50cf2886559fdfc3aba4ee722f511a',1,'Signal.h']]], ['vector6dstate_37',['Vector6dState',['../State_8h.html#af07e3586e98f931acac5d0ffd9b17cee',1,'State.h']]], ['vector6dstatesignal_38',['Vector6dStateSignal',['../State_8h.html#a9df3c94eca5a8200ce96b3221995c46b',1,'State.h']]], - ['vector6signal_39',['Vector6Signal',['../Signal_8h.html#a74174cf187bc4e74b3e7494b247e0284',1,'Signal.h']]], - ['vector6state_40',['Vector6State',['../State_8h.html#a767154e6e5b226bf7b6c9dad73aee6d2',1,'State.h']]], - ['vector6statesignal_41',['Vector6StateSignal',['../State_8h.html#a809dbd95b4841c294c3a75a7d40ecf62',1,'State.h']]], + ['vector6signal_39',['Vector6Signal',['../Signal_8h.html#a4da3e39a6224769606055a56f1508e6b',1,'Signal.h']]], + ['vector6state_40',['Vector6State',['../State_8h.html#a5b9da17f6286f92692b0004ee4966bc9',1,'State.h']]], + ['vector6statesignal_41',['Vector6StateSignal',['../State_8h.html#a10d976072ce9070523cb22605d2ab584',1,'State.h']]], ['vector7dsignal_42',['Vector7dSignal',['../Signal_8h.html#afea76be78e2b329344fb610a62c421e9',1,'Signal.h']]], ['vector7dstate_43',['Vector7dState',['../State_8h.html#ad58fbc5cd721c46fe64d385cc3317380',1,'State.h']]], ['vector7dstatesignal_44',['Vector7dStateSignal',['../State_8h.html#a901bd18eae58b6365b68227b38b8a6e1',1,'State.h']]], - ['vector7signal_45',['Vector7Signal',['../Signal_8h.html#a992c3596420601f0271876e30a152c1b',1,'Signal.h']]], - ['vector7state_46',['Vector7State',['../State_8h.html#a5c337dc74b2038b11a515b3d0559c1f2',1,'State.h']]], - ['vector7statesignal_47',['Vector7StateSignal',['../State_8h.html#aec3d4775be3f8929cbac8e75b0471e48',1,'State.h']]], + ['vector7signal_45',['Vector7Signal',['../Signal_8h.html#ac71cd26f6afca210f51cc394d520779b',1,'Signal.h']]], + ['vector7state_46',['Vector7State',['../State_8h.html#a78b7e325313bda6591c62d59c25b2009',1,'State.h']]], + ['vector7statesignal_47',['Vector7StateSignal',['../State_8h.html#a0e0d0803fd68f9e69ed39bed579c0a8c',1,'State.h']]], ['vector8dsignal_48',['Vector8dSignal',['../Signal_8h.html#ad2214d5fb3267b191128fcccb515448b',1,'Signal.h']]], ['vector8dstate_49',['Vector8dState',['../State_8h.html#acfdf1934f5783c1dcab2987c242ef8af',1,'State.h']]], ['vector8dstatesignal_50',['Vector8dStateSignal',['../State_8h.html#a25968e689d254876cbae1ff352b3f184',1,'State.h']]], - ['vector8signal_51',['Vector8Signal',['../Signal_8h.html#afaa686fc5ec63962f7da9907e6093e65',1,'Signal.h']]], - ['vector8state_52',['Vector8State',['../State_8h.html#a102cee6380e7d3e8f52988d17ac6a937',1,'State.h']]], - ['vector8statesignal_53',['Vector8StateSignal',['../State_8h.html#a1583d33e935bcb44fb80ee6172a59a9b',1,'State.h']]], + ['vector8signal_51',['Vector8Signal',['../Signal_8h.html#a6fe111909e599c7d732507ef08213e06',1,'Signal.h']]], + ['vector8state_52',['Vector8State',['../State_8h.html#ae8dd0ef45fa5734f0e752551ba62e863',1,'State.h']]], + ['vector8statesignal_53',['Vector8StateSignal',['../State_8h.html#a9b199ed43adea9fec91e40f9bab9457f',1,'State.h']]], ['vector9dsignal_54',['Vector9dSignal',['../Signal_8h.html#acd349d949f45a7bce633414d05043cc3',1,'Signal.h']]], ['vector9dstate_55',['Vector9dState',['../State_8h.html#a865c1f4de96010d38ee17edc48d6c611',1,'State.h']]], ['vector9dstatesignal_56',['Vector9dStateSignal',['../State_8h.html#a0237ae6ced288b7b3853654cd4ce796c',1,'State.h']]], - ['vector9signal_57',['Vector9Signal',['../Signal_8h.html#a20d6ecf779577c444e3d1299861a3f8b',1,'Signal.h']]], - ['vector9state_58',['Vector9State',['../State_8h.html#acc503352a69f43c7991b9118bb466db2',1,'State.h']]], - ['vector9statesignal_59',['Vector9StateSignal',['../State_8h.html#a0ffa2fdd937c37ee8f09d3fb49057f76',1,'State.h']]], + ['vector9signal_57',['Vector9Signal',['../Signal_8h.html#ae78698ceb51c16ea2ffea1ea2b5507e3',1,'Signal.h']]], + ['vector9state_58',['Vector9State',['../State_8h.html#af1297813c5b5754edb4cf75ca0875849',1,'State.h']]], + ['vector9statesignal_59',['Vector9StateSignal',['../State_8h.html#a9ab7680e24d1538be50e761b8a8ecb21',1,'State.h']]], ['vectorsignal_60',['VectorSignal',['../Signal_8h.html#a51a32a4dd69ee28867dba6202c812c5a',1,'Signal.h']]], ['vectorstatesignal_61',['VectorStateSignal',['../State_8h.html#a214bd9926c3d8a2bb83b9b471744775b',1,'State.h']]], ['vectorstatetype_62',['VectorStateType',['../State_8h.html#a60d0230d5788084bb8f559f4561d4d96',1,'State.h']]] diff --git a/docs/search/variables_7.js b/docs/search/variables_7.js index 9db5af8..1878664 100644 --- a/docs/search/variables_7.js +++ b/docs/search/variables_7.js @@ -1,4 +1,4 @@ var searchData= [ - ['signaldpcomparator_0',['SignalDPComparator',['../classSignal.html#a3961e7ce30f40f8104dd3d25f2e70a7f',1,'Signal']]] + ['signaldpcomparator_0',['SignalDPComparator',['../classSignal.html#a6db70e8a2784b5596a47f2249a2627b7',1,'Signal']]] ]; diff --git a/docs/structEulerIntegratorSpec-members.html b/docs/structEulerIntegratorSpec-members.html index bc5a118..a5dd563 100644 --- a/docs/structEulerIntegratorSpec-members.html +++ b/docs/structEulerIntegratorSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -111,7 +115,7 @@ diff --git a/docs/structEulerIntegratorSpec.html b/docs/structEulerIntegratorSpec.html index d8dcf59..bfecafd 100644 --- a/docs/structEulerIntegratorSpec.html +++ b/docs/structEulerIntegratorSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: EulerIntegratorSpec Struct Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ - + @@ -127,7 +131,7 @@

        -template<typename BaseSignalSpec , typename TangentSignalSpec >
        +template<typename BaseSignalSpec, typename TangentSignalSpec>

        Static Public Member Functions

        template<typename BaseSignalSpec , typename TangentSignalSpec >
        template<typename BaseSignalSpec, typename TangentSignalSpec>
        static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
         Euler integration implementation.
         
        - + - + - + - + @@ -160,7 +164,7 @@

        -inlinestatic +inlinestatic

        @@ -135,22 +139,22 @@

        static bool EulerIntegratorSpec::integrate

        (Signal< BaseSignalSpec, TangentSignalSpec > & xInt, Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
        const Signal< TangentSignalSpec, TangentSignalSpec > & x, const Signal< TangentSignalSpec, TangentSignalSpec > & x,
        const double & t0, const double & t0,
        const double & tf, const double & tf,
        @@ -191,7 +195,7 @@

        diff --git a/docs/structIntegrator-members.html b/docs/structIntegrator-members.html index da74ac3..d0753f2 100644 --- a/docs/structIntegrator-members.html +++ b/docs/structIntegrator-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -112,7 +116,7 @@ diff --git a/docs/structIntegrator.html b/docs/structIntegrator.html index 6dd2cc1..af6f66b 100644 --- a/docs/structIntegrator.html +++ b/docs/structIntegrator.html @@ -3,7 +3,7 @@ - + signals-cpp: Integrator< IntegratorType > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,11 +117,11 @@ - + - + @@ -128,9 +132,9 @@

        Provides methods for incremental (e.g., for control) or holistic (e.g., for open-loop simulation) integrations of arbitrary signal types.

        Derived types:

        Member Function Documentation

        @@ -139,9 +143,9 @@

        -template<typename IntegratorType >
        +template<typename IntegratorType>
        -template<typename BaseSignalSpec , typename TangentSignalSpec >
        +template<typename BaseSignalSpec, typename TangentSignalSpec>

        Static Public Member Functions

        template<typename BaseSignalSpec , typename TangentSignalSpec >
        template<typename BaseSignalSpec, typename TangentSignalSpec>
        static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const bool &insertIntoHistory=false)
         Integrate a signal from the current time to the specified end time.
         
        template<typename BaseSignalSpec , typename TangentSignalSpec >
        template<typename BaseSignalSpec, typename TangentSignalSpec>
        static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &tf, const double &dt, const bool &insertIntoHistory=false)
         Integrate a signal from the current time to the specified end time, chunked up into smaller integration increments.
         
        - + - + - + - +
        @@ -149,27 +153,27 @@

        static bool Integrator< IntegratorType >::integrate

        (Signal< BaseSignalSpec, TangentSignalSpec > & xInt, Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
        const Signal< TangentSignalSpec, TangentSignalSpec > & x, const Signal< TangentSignalSpec, TangentSignalSpec > & x,
        const double & tf, const double & tf,
        const bool & insertIntoHistory = false )const bool & insertIntoHistory = false )
        -inlinestatic +inlinestatic
        - + - + - + - + - +
        @@ -204,32 +208,32 @@

        static bool Integrator< IntegratorType >::integrate

        (Signal< BaseSignalSpec, TangentSignalSpec > & xInt, Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
        const Signal< TangentSignalSpec, TangentSignalSpec > & x, const Signal< TangentSignalSpec, TangentSignalSpec > & x,
        const double & tf, const double & tf,
        const double & dt, const double & dt,
        const bool & insertIntoHistory = false )const bool & insertIntoHistory = false )
        -inlinestatic +inlinestatic
        @@ -258,7 +262,7 @@

          - +

        diff --git a/docs/structManifoldSignalSpec-members.html b/docs/structManifoldSignalSpec-members.html index 0429ca0..bd91f95 100644 --- a/docs/structManifoldSignalSpec-members.html +++ b/docs/structManifoldSignalSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structManifoldSignalSpec.html b/docs/structManifoldSignalSpec.html index b9297f6..36a7d1a 100644 --- a/docs/structManifoldSignalSpec.html +++ b/docs/structManifoldSignalSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: ManifoldSignalSpec< ManifoldType > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -202,7 +206,7 @@

        diff --git a/docs/structManifoldStateSignalSpec-members.html b/docs/structManifoldStateSignalSpec-members.html index c7bdf46..2bc086b 100644 --- a/docs/structManifoldStateSignalSpec-members.html +++ b/docs/structManifoldStateSignalSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structManifoldStateSignalSpec.html b/docs/structManifoldStateSignalSpec.html index 492ffe3..5a0b527 100644 --- a/docs/structManifoldStateSignalSpec.html +++ b/docs/structManifoldStateSignalSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: ManifoldStateSignalSpec< T, ManifoldType, PD, TD > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -202,7 +206,7 @@

        diff --git a/docs/structRigidBodyDynamics3DOF-members.html b/docs/structRigidBodyDynamics3DOF-members.html index 026824d..f4df096 100644 --- a/docs/structRigidBodyDynamics3DOF-members.html +++ b/docs/structRigidBodyDynamics3DOF-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -119,7 +123,7 @@ diff --git a/docs/structRigidBodyDynamics3DOF.html b/docs/structRigidBodyDynamics3DOF.html index c7cac46..12a8017 100644 --- a/docs/structRigidBodyDynamics3DOF.html +++ b/docs/structRigidBodyDynamics3DOF.html @@ -3,7 +3,7 @@ - + signals-cpp: RigidBodyDynamics3DOF< T > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -114,11 +118,11 @@ - + - + - + @@ -147,10 +151,10 @@

        -template<typename T >
        +template<typename T>

        Public Types

        using InputSignalType = Vector3Signal<T>
        using InputSignalType = Vector3Signal<T>
         
        using StateSignalType = SE2StateSignal<T>
        using StateSignalType = SE2StateSignal<T>
         
        using StateDotSignalType = Vector3StateSignal<T>
        using StateDotSignalType = Vector3StateSignal<T>
         
        using InputType = typename InputSignalType::BaseType
         
        - +
        using RigidBodyDynamics3DOF< T >::InputSignalType = Vector3Signal<T>using RigidBodyDynamics3DOF< T >::InputSignalType = Vector3Signal<T>
        @@ -355,7 +359,7 @@

        diff --git a/docs/structRigidBodyDynamics6DOF-members.html b/docs/structRigidBodyDynamics6DOF-members.html index 23a099f..ec671d0 100644 --- a/docs/structRigidBodyDynamics6DOF-members.html +++ b/docs/structRigidBodyDynamics6DOF-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -119,7 +123,7 @@ diff --git a/docs/structRigidBodyDynamics6DOF.html b/docs/structRigidBodyDynamics6DOF.html index aeb6d64..4bb9dc7 100644 --- a/docs/structRigidBodyDynamics6DOF.html +++ b/docs/structRigidBodyDynamics6DOF.html @@ -3,7 +3,7 @@ - + signals-cpp: RigidBodyDynamics6DOF< T > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -114,11 +118,11 @@ - + - + - + @@ -147,10 +151,10 @@

        -template<typename T >
        +template<typename T>

        Public Types

        using InputSignalType = Vector6Signal<T>
        using InputSignalType = Vector6Signal<T>
         
        using StateSignalType = SE3StateSignal<T>
        using StateSignalType = SE3StateSignal<T>
         
        using StateDotSignalType = Vector6StateSignal<T>
        using StateDotSignalType = Vector6StateSignal<T>
         
        using InputType = typename InputSignalType::BaseType
         
        - +
        using RigidBodyDynamics6DOF< T >::InputSignalType = Vector6Signal<T>using RigidBodyDynamics6DOF< T >::InputSignalType = Vector6Signal<T>
        @@ -355,7 +359,7 @@

        diff --git a/docs/structRigidBodyParams1D-members.html b/docs/structRigidBodyParams1D-members.html index e372927..4e73e0e 100644 --- a/docs/structRigidBodyParams1D-members.html +++ b/docs/structRigidBodyParams1D-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structRigidBodyParams1D.html b/docs/structRigidBodyParams1D.html index 88f28f1..b562a23 100644 --- a/docs/structRigidBodyParams1D.html +++ b/docs/structRigidBodyParams1D.html @@ -3,7 +3,7 @@ - + signals-cpp: RigidBodyParams1D Struct Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -198,7 +202,7 @@

        diff --git a/docs/structRigidBodyParams2D-members.html b/docs/structRigidBodyParams2D-members.html index fa5d0bd..ca27749 100644 --- a/docs/structRigidBodyParams2D-members.html +++ b/docs/structRigidBodyParams2D-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -114,7 +118,7 @@ diff --git a/docs/structRigidBodyParams2D.html b/docs/structRigidBodyParams2D.html index 3eeb920..1d8add0 100644 --- a/docs/structRigidBodyParams2D.html +++ b/docs/structRigidBodyParams2D.html @@ -3,7 +3,7 @@ - + signals-cpp: RigidBodyParams2D Struct Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -218,7 +222,7 @@

        diff --git a/docs/structRigidBodyParams3D-members.html b/docs/structRigidBodyParams3D-members.html index b897c07..7e5fb5a 100644 --- a/docs/structRigidBodyParams3D-members.html +++ b/docs/structRigidBodyParams3D-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -114,7 +118,7 @@ diff --git a/docs/structRigidBodyParams3D.html b/docs/structRigidBodyParams3D.html index 1fc2dc8..62ef73c 100644 --- a/docs/structRigidBodyParams3D.html +++ b/docs/structRigidBodyParams3D.html @@ -3,7 +3,7 @@ - + signals-cpp: RigidBodyParams3D Struct Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -218,7 +222,7 @@

        diff --git a/docs/structRotationalDynamics1DOF-members.html b/docs/structRotationalDynamics1DOF-members.html index c93e4d7..6d39276 100644 --- a/docs/structRotationalDynamics1DOF-members.html +++ b/docs/structRotationalDynamics1DOF-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -119,7 +123,7 @@ diff --git a/docs/structRotationalDynamics1DOF.html b/docs/structRotationalDynamics1DOF.html index aa77d61..94a2097 100644 --- a/docs/structRotationalDynamics1DOF.html +++ b/docs/structRotationalDynamics1DOF.html @@ -3,7 +3,7 @@ - + signals-cpp: RotationalDynamics1DOF< T > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -114,11 +118,11 @@ - + - + - + @@ -147,10 +151,10 @@

        -template<typename T >
        +template<typename T>

        Public Types

        using InputSignalType = Vector1Signal<T>
        using InputSignalType = Vector1Signal<T>
         
        using StateSignalType = SO2StateSignal<T>
        using StateSignalType = SO2StateSignal<T>
         
        using StateDotSignalType = Vector1StateSignal<T>
        using StateDotSignalType = Vector1StateSignal<T>
         
        using InputType = typename InputSignalType::BaseType
         
        - +
        using RotationalDynamics1DOF< T >::InputSignalType = Vector1Signal<T>using RotationalDynamics1DOF< T >::InputSignalType = Vector1Signal<T>
        @@ -355,7 +359,7 @@

        diff --git a/docs/structRotationalDynamics3DOF-members.html b/docs/structRotationalDynamics3DOF-members.html index bcdc030..67c3a92 100644 --- a/docs/structRotationalDynamics3DOF-members.html +++ b/docs/structRotationalDynamics3DOF-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -119,7 +123,7 @@ diff --git a/docs/structRotationalDynamics3DOF.html b/docs/structRotationalDynamics3DOF.html index 99d3a56..9087643 100644 --- a/docs/structRotationalDynamics3DOF.html +++ b/docs/structRotationalDynamics3DOF.html @@ -3,7 +3,7 @@ - + signals-cpp: RotationalDynamics3DOF< T > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -114,11 +118,11 @@ - + - + - + @@ -147,10 +151,10 @@

        -template<typename T >
        +template<typename T>

        Public Types

        using InputSignalType = Vector3Signal<T>
        using InputSignalType = Vector3Signal<T>
         
        using StateSignalType = SO3StateSignal<T>
        using StateSignalType = SO3StateSignal<T>
         
        using StateDotSignalType = Vector3StateSignal<T>
        using StateDotSignalType = Vector3StateSignal<T>
         
        using InputType = typename InputSignalType::BaseType
         
        - +
        using RotationalDynamics3DOF< T >::InputSignalType = Vector3Signal<T>using RotationalDynamics3DOF< T >::InputSignalType = Vector3Signal<T>
        @@ -355,7 +359,7 @@

        diff --git a/docs/structScalarSignalSpec-members.html b/docs/structScalarSignalSpec-members.html index 5f4ebbb..5d7916b 100644 --- a/docs/structScalarSignalSpec-members.html +++ b/docs/structScalarSignalSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structScalarSignalSpec.html b/docs/structScalarSignalSpec.html index 2f46f91..3034fbd 100644 --- a/docs/structScalarSignalSpec.html +++ b/docs/structScalarSignalSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: ScalarSignalSpec< T > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -202,7 +206,7 @@

        diff --git a/docs/structScalarStateSignalSpec-members.html b/docs/structScalarStateSignalSpec-members.html index ba5700b..cb77cbb 100644 --- a/docs/structScalarStateSignalSpec-members.html +++ b/docs/structScalarStateSignalSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structScalarStateSignalSpec.html b/docs/structScalarStateSignalSpec.html index cdf40eb..5b924a7 100644 --- a/docs/structScalarStateSignalSpec.html +++ b/docs/structScalarStateSignalSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: ScalarStateSignalSpec< T > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -202,7 +206,7 @@

        diff --git a/docs/structSignal_1_1SignalDP-members.html b/docs/structSignal_1_1SignalDP-members.html index 0fa1d53..5f3d569 100644 --- a/docs/structSignal_1_1SignalDP-members.html +++ b/docs/structSignal_1_1SignalDP-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structSignal_1_1SignalDP.html b/docs/structSignal_1_1SignalDP.html index 3ae2922..b84eadd 100644 --- a/docs/structSignal_1_1SignalDP.html +++ b/docs/structSignal_1_1SignalDP.html @@ -3,7 +3,7 @@ - + signals-cpp: Signal< BaseSignalSpec, TangentSignalSpec >::SignalDP Struct Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + + - + +
        @@ -111,7 +115,7 @@ diff --git a/docs/structSimpsonIntegratorSpec.html b/docs/structSimpsonIntegratorSpec.html index 5d74000..9e55a1a 100644 --- a/docs/structSimpsonIntegratorSpec.html +++ b/docs/structSimpsonIntegratorSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: SimpsonIntegratorSpec Struct Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ - + @@ -127,7 +131,7 @@

        -template<typename BaseSignalSpec , typename TangentSignalSpec >
        +template<typename BaseSignalSpec, typename TangentSignalSpec>

        Static Public Member Functions

        template<typename BaseSignalSpec , typename TangentSignalSpec >
        template<typename BaseSignalSpec, typename TangentSignalSpec>
        static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
         Simpson integration implementation.
         
        - + - + - + - + @@ -160,7 +164,7 @@

        -inlinestatic +inlinestatic

        @@ -135,22 +139,22 @@

        static bool SimpsonIntegratorSpec::integrate

        (Signal< BaseSignalSpec, TangentSignalSpec > & xInt, Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
        const Signal< TangentSignalSpec, TangentSignalSpec > & x, const Signal< TangentSignalSpec, TangentSignalSpec > & x,
        const double & t0, const double & t0,
        const double & tf, const double & tf,
        @@ -191,7 +195,7 @@

        diff --git a/docs/structState-members.html b/docs/structState-members.html index a0ad0ab..5fe2ec8 100644 --- a/docs/structState-members.html +++ b/docs/structState-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -121,7 +125,7 @@ diff --git a/docs/structState.html b/docs/structState.html index 3818197..e47f686 100644 --- a/docs/structState.html +++ b/docs/structState.html @@ -3,7 +3,7 @@ - + signals-cpp: State< T, PoseTypeSpec, PoseDim, TwistTypeSpec, TwistDim > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + + +inline
        @@ -392,7 +396,7 @@

        -inline

        - + +
        @@ -119,7 +123,7 @@ diff --git a/docs/structTranslationalDynamicsBase.html b/docs/structTranslationalDynamicsBase.html index 72e19e5..8aae15d 100644 --- a/docs/structTranslationalDynamicsBase.html +++ b/docs/structTranslationalDynamicsBase.html @@ -3,7 +3,7 @@ - + signals-cpp: TranslationalDynamicsBase< IST, SST, SDST, d, PT > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -147,7 +151,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>
        @@ -163,7 +167,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::InputSignalType = IST
        @@ -179,7 +183,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::InputType = typename InputSignalType::BaseType
        @@ -195,7 +199,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::ParamsType = PT
        @@ -211,7 +215,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateDotDotType = typename StateDotSignalType::TangentType
        @@ -227,7 +231,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateDotSignalType = SST
        @@ -243,7 +247,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateDotType = typename StateDotSignalType::BaseType
        @@ -259,7 +263,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateSignalType = SDST
        @@ -276,7 +280,7 @@

        -template<typename IST , typename SST , typename SDST , size_t d, typename PT >
        +template<typename IST, typename SST, typename SDST, size_t d, typename PT>

        using TranslationalDynamicsBase< IST, SST, SDST, d, PT >::StateType = typename StateSignalType::BaseType
        - + - + - + - + - + - + - + - +
        @@ -284,47 +288,47 @@

        static bool TranslationalDynamicsBase< IST, SST, SDST, d, PT >::update

        (StateDotSignalType & xdot, StateDotSignalType & xdot,
        const StateSignalType & x, const StateSignalType & x,
        const InputSignalType & u, const InputSignalType & u,
        const double & t0, const double & t0,
        const double & tf, const double & tf,
        const ParamsType & params, const ParamsType & params,
        const bool & insertIntoHistory = false, const bool & insertIntoHistory = false,
        const bool & calculateXddot = false )const bool & calculateXddot = false )
        -inlinestatic +inlinestatic

        @@ -355,7 +359,7 @@

        diff --git a/docs/structTrapezoidalIntegratorSpec-members.html b/docs/structTrapezoidalIntegratorSpec-members.html index 5045fdc..9ceb7b0 100644 --- a/docs/structTrapezoidalIntegratorSpec-members.html +++ b/docs/structTrapezoidalIntegratorSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -111,7 +115,7 @@ diff --git a/docs/structTrapezoidalIntegratorSpec.html b/docs/structTrapezoidalIntegratorSpec.html index 8ead93d..958c3ba 100644 --- a/docs/structTrapezoidalIntegratorSpec.html +++ b/docs/structTrapezoidalIntegratorSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: TrapezoidalIntegratorSpec Struct Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ - + @@ -127,7 +131,7 @@

        -template<typename BaseSignalSpec , typename TangentSignalSpec >
        +template<typename BaseSignalSpec, typename TangentSignalSpec>

        Static Public Member Functions

        template<typename BaseSignalSpec , typename TangentSignalSpec >
        template<typename BaseSignalSpec, typename TangentSignalSpec>
        static bool integrate (Signal< BaseSignalSpec, TangentSignalSpec > &xInt, const Signal< TangentSignalSpec, TangentSignalSpec > &x, const double &t0, const double &tf, const bool &insertIntoHistory)
         Trapezoidal integration implementation.
         
        - + - + - + - + @@ -160,7 +164,7 @@

        -inlinestatic +inlinestatic

        @@ -135,22 +139,22 @@

        static bool TrapezoidalIntegratorSpec::integrate

        (Signal< BaseSignalSpec, TangentSignalSpec > & xInt, Signal< BaseSignalSpec, TangentSignalSpec > & xInt,
        const Signal< TangentSignalSpec, TangentSignalSpec > & x, const Signal< TangentSignalSpec, TangentSignalSpec > & x,
        const double & t0, const double & t0,
        const double & tf, const double & tf,
        @@ -191,7 +195,7 @@

        diff --git a/docs/structVectorSignalSpec-members.html b/docs/structVectorSignalSpec-members.html index 5165cbb..9c06c3a 100644 --- a/docs/structVectorSignalSpec-members.html +++ b/docs/structVectorSignalSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structVectorSignalSpec.html b/docs/structVectorSignalSpec.html index 6010eb8..06a163f 100644 --- a/docs/structVectorSignalSpec.html +++ b/docs/structVectorSignalSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: VectorSignalSpec< T, d > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -202,7 +206,7 @@

        diff --git a/docs/structVectorStateSignalSpec-members.html b/docs/structVectorStateSignalSpec-members.html index ffde5cf..c7adf21 100644 --- a/docs/structVectorStateSignalSpec-members.html +++ b/docs/structVectorStateSignalSpec-members.html @@ -3,7 +3,7 @@ - + signals-cpp: Member List @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -113,7 +117,7 @@ diff --git a/docs/structVectorStateSignalSpec.html b/docs/structVectorStateSignalSpec.html index 1da5008..db4616d 100644 --- a/docs/structVectorStateSignalSpec.html +++ b/docs/structVectorStateSignalSpec.html @@ -3,7 +3,7 @@ - + signals-cpp: VectorStateSignalSpec< T, d > Struct Template Reference @@ -11,9 +11,9 @@ - + @@ -26,7 +26,6 @@ -
        @@ -43,18 +42,23 @@
        - + +
        @@ -202,7 +206,7 @@

        diff --git a/docs/tabs.css b/docs/tabs.css index 6c21d61..edbb424 100644 --- a/docs/tabs.css +++ b/docs/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} From d1b207db9c6f26b59b7f7982917fbdeae30d9d0c Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Fri, 12 Sep 2025 21:20:45 -0700 Subject: [PATCH 06/11] cov --- .github/workflows/test.yml | 56 +++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5ee0cca..1b87430 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,4 +20,58 @@ jobs: authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - run: > git config --global url."https://github.com/".insteadOf ssh://git@github.com/ - - run: export NIXPKGS_ALLOW_UNFREE=1 && nix-build -E 'with (import (fetchTarball "https://github.com/goromal/anixpkgs/archive/refs/tags/v0.5.0.tar.gz") {}); signals-cpp.override { pkg-src = lib.cleanSource ./.; }' + - run: export NIXPKGS_ALLOW_UNFREE=1 && nix-build -E 'with (import (fetchTarball "https://github.com/goromal/anixpkgs/archive/refs/heads/master.tar.gz") {}); signals-cpp.override { pkg-src = lib.cleanSource ./.; }' + code-cov: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v25 + with: + nix_path: nixpkgs=channel:nixos-unstable + - uses: cachix/cachix-action@v10 + with: + name: github-public + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + - name: Build, test, and generate coverage HTML report + run: | + mkdir build && cd build + nix-shell ../.github/_nixshell --run "cmake .. -DCMAKE_BUILD_TYPE=Debug && make unit-tests" + nix-shell ../.github/_nixshell --run "lcov --capture --directory . --output-file coverage.info && \ + lcov --remove coverage.info '/usr/*' '*/test/*' --output-file coverage.info.cleaned && \ + genhtml --branch-coverage --ignore-errors source --output-directory coverage_report coverage.info.cleaned" + - name: Upload coverage report artifact + uses: actions/upload-artifact@v4 + with: + name: code-coverage-report + path: build/coverage_report + - name: Post PR comment with coverage artifact (optional) + if: github.event_name == 'pull_request' + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const artifactUrl = `https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}`; + const comment = ` + ### 🧪 Code Coverage Report + The code coverage report has been generated for this PR. + + ➡️ [View coverage artifact](${artifactUrl}) + `; + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: comment + }); + - name: Copy coverage report into docs/ + run: | + mkdir -p docs/coverage + cp -r build/coverage_report/* docs/coverage/ + - name: Commit coverage report to docs/ + if: github.ref == 'refs/heads/master' + run: | + git config --global user.name "github-actions" + git config --global user.email "github-actions@github.com" + git add docs/coverage + git commit -m "Update coverage report [skip ci]" || echo "No changes to commit" + git push From 6560914bbc7d3762b315e71270b00d6082c545af Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Fri, 12 Sep 2025 21:29:09 -0700 Subject: [PATCH 07/11] wip --- .github/_nixshell | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/_nixshell b/.github/_nixshell index 4f76971..e519ea2 100644 --- a/.github/_nixshell +++ b/.github/_nixshell @@ -8,5 +8,6 @@ in with pkgs; mkShell { buildInputs = [ boost eigen + manif-geom-cpp ]; } From ee78022934f2653d830a964def9f721c27283448 Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Fri, 12 Sep 2025 21:59:22 -0700 Subject: [PATCH 08/11] wip --- CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb4d27b..fe98b88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,10 +3,18 @@ cmake_minimum_required (VERSION 3.16) set(PROJ_NAME signals-cpp) project(${PROJ_NAME}) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) +endif() + set(CMAKE_CXX_STANDARD 17) option(BUILD_TESTS "Build Tests" ON) +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -O0 -g") +endif() + find_package(Eigen3 REQUIRED NO_MODULE) find_package(manif-geom-cpp REQUIRED) From 3fa77be753a8f9c5c75ef80b96191a6a720b0f90 Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Fri, 12 Sep 2025 22:29:32 -0700 Subject: [PATCH 09/11] docs updates --- docs/Integration_8h.html | 1 + docs/Integration_8h_source.html | 1 + docs/Models_8h.html | 1 + docs/Models_8h_source.html | 1 + docs/Signal_8h.html | 1 + docs/Signal_8h_source.html | 1 + docs/Signals_8h.html | 1 + docs/Signals_8h_source.html | 1 + docs/State_8h.html | 1 + docs/State_8h_source.html | 1 + docs/Utils_8h.html | 1 + docs/Utils_8h_source.html | 1 + docs/annotated.html | 1 + docs/classModel-members.html | 1 + docs/classModel.html | 1 + docs/classSignal-members.html | 1 + docs/classSignal.html | 1 + docs/classes.html | 1 + docs/dir_661483514bb8dea267426763b771558e.html | 1 + docs/dir_d44c64559bbebec7f509842c48db8b23.html | 1 + docs/files.html | 1 + docs/functions.html | 1 + docs/functions_func.html | 1 + docs/functions_rela.html | 1 + docs/functions_type.html | 1 + docs/functions_vars.html | 1 + docs/globals.html | 1 + docs/globals_defs.html | 1 + docs/globals_enum.html | 1 + docs/globals_eval.html | 1 + docs/globals_func.html | 1 + docs/globals_type.html | 1 + docs/index.html | 1 + docs/namespacemembers.html | 1 + docs/namespacemembers_func.html | 1 + docs/namespaces.html | 1 + docs/namespacesignal__utils.html | 1 + docs/structEulerIntegratorSpec-members.html | 1 + docs/structEulerIntegratorSpec.html | 1 + docs/structIntegrator-members.html | 1 + docs/structIntegrator.html | 1 + docs/structManifoldSignalSpec-members.html | 1 + docs/structManifoldSignalSpec.html | 1 + docs/structManifoldStateSignalSpec-members.html | 1 + docs/structManifoldStateSignalSpec.html | 1 + docs/structRigidBodyDynamics3DOF-members.html | 1 + docs/structRigidBodyDynamics3DOF.html | 1 + docs/structRigidBodyDynamics6DOF-members.html | 1 + docs/structRigidBodyDynamics6DOF.html | 1 + docs/structRigidBodyParams1D-members.html | 1 + docs/structRigidBodyParams1D.html | 1 + docs/structRigidBodyParams2D-members.html | 1 + docs/structRigidBodyParams2D.html | 1 + docs/structRigidBodyParams3D-members.html | 1 + docs/structRigidBodyParams3D.html | 1 + docs/structRotationalDynamics1DOF-members.html | 1 + docs/structRotationalDynamics1DOF.html | 1 + docs/structRotationalDynamics3DOF-members.html | 1 + docs/structRotationalDynamics3DOF.html | 1 + docs/structScalarSignalSpec-members.html | 1 + docs/structScalarSignalSpec.html | 1 + docs/structScalarStateSignalSpec-members.html | 1 + docs/structScalarStateSignalSpec.html | 1 + docs/structSignal_1_1SignalDP-members.html | 1 + docs/structSignal_1_1SignalDP.html | 1 + docs/structSimpsonIntegratorSpec-members.html | 1 + docs/structSimpsonIntegratorSpec.html | 1 + docs/structState-members.html | 1 + docs/structState.html | 1 + docs/structTranslationalDynamicsBase-members.html | 1 + docs/structTranslationalDynamicsBase.html | 1 + docs/structTrapezoidalIntegratorSpec-members.html | 1 + docs/structTrapezoidalIntegratorSpec.html | 1 + docs/structVectorSignalSpec-members.html | 1 + docs/structVectorSignalSpec.html | 1 + docs/structVectorStateSignalSpec-members.html | 1 + docs/structVectorStateSignalSpec.html | 1 + doxygen-awesome-css | 1 + 78 files changed, 78 insertions(+) create mode 160000 doxygen-awesome-css diff --git a/docs/Integration_8h.html b/docs/Integration_8h.html index 6e6e4b0..2ca30c9 100644 --- a/docs/Integration_8h.html +++ b/docs/Integration_8h.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Integration_8h_source.html b/docs/Integration_8h_source.html index 91a2215..aca2b8e 100644 --- a/docs/Integration_8h_source.html +++ b/docs/Integration_8h_source.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Models_8h.html b/docs/Models_8h.html index 3fa732b..b7e1439 100644 --- a/docs/Models_8h.html +++ b/docs/Models_8h.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Models_8h_source.html b/docs/Models_8h_source.html index 0da6b03..117b332 100644 --- a/docs/Models_8h_source.html +++ b/docs/Models_8h_source.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Signal_8h.html b/docs/Signal_8h.html index fe1d507..bdf6a6d 100644 --- a/docs/Signal_8h.html +++ b/docs/Signal_8h.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Signal_8h_source.html b/docs/Signal_8h_source.html index 92ae6c9..a9335b2 100644 --- a/docs/Signal_8h_source.html +++ b/docs/Signal_8h_source.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Signals_8h.html b/docs/Signals_8h.html index 06b08bb..1a1b1ac 100644 --- a/docs/Signals_8h.html +++ b/docs/Signals_8h.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Signals_8h_source.html b/docs/Signals_8h_source.html index 0cd2635..7b076d3 100644 --- a/docs/Signals_8h_source.html +++ b/docs/Signals_8h_source.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/State_8h.html b/docs/State_8h.html index 35370a9..b736e2c 100644 --- a/docs/State_8h.html +++ b/docs/State_8h.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/State_8h_source.html b/docs/State_8h_source.html index fb830b2..288bc9f 100644 --- a/docs/State_8h_source.html +++ b/docs/State_8h_source.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Utils_8h.html b/docs/Utils_8h.html index a1c63bb..467420a 100644 --- a/docs/Utils_8h.html +++ b/docs/Utils_8h.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/Utils_8h_source.html b/docs/Utils_8h_source.html index 2bf94d5..7ab3673 100644 --- a/docs/Utils_8h_source.html +++ b/docs/Utils_8h_source.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/annotated.html b/docs/annotated.html index 78336b1..10e0802 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/classModel-members.html b/docs/classModel-members.html index 73e31a2..c37ef33 100644 --- a/docs/classModel-members.html +++ b/docs/classModel-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/classModel.html b/docs/classModel.html index 2f8e47e..6626ec3 100644 --- a/docs/classModel.html +++ b/docs/classModel.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/classSignal-members.html b/docs/classSignal-members.html index 0baccc1..ee8f0b6 100644 --- a/docs/classSignal-members.html +++ b/docs/classSignal-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/classSignal.html b/docs/classSignal.html index a930726..03a4620 100644 --- a/docs/classSignal.html +++ b/docs/classSignal.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/classes.html b/docs/classes.html index 1f0da96..4169ec2 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/dir_661483514bb8dea267426763b771558e.html b/docs/dir_661483514bb8dea267426763b771558e.html index 45c62b6..1c12c36 100644 --- a/docs/dir_661483514bb8dea267426763b771558e.html +++ b/docs/dir_661483514bb8dea267426763b771558e.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/dir_d44c64559bbebec7f509842c48db8b23.html index 1d4927a..ddd55fc 100644 --- a/docs/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/dir_d44c64559bbebec7f509842c48db8b23.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/files.html b/docs/files.html index 530668a..b381d9f 100644 --- a/docs/files.html +++ b/docs/files.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/functions.html b/docs/functions.html index 52062e5..d9de84c 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/functions_func.html b/docs/functions_func.html index 0868c0f..c8e1226 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/functions_rela.html b/docs/functions_rela.html index a6b4aa5..9a9a12d 100644 --- a/docs/functions_rela.html +++ b/docs/functions_rela.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/functions_type.html b/docs/functions_type.html index 2179666..9c7856a 100644 --- a/docs/functions_type.html +++ b/docs/functions_type.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/functions_vars.html b/docs/functions_vars.html index 9c45346..ff7b65c 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/globals.html b/docs/globals.html index b8eecaa..7541269 100644 --- a/docs/globals.html +++ b/docs/globals.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/globals_defs.html b/docs/globals_defs.html index 97997fa..3facc82 100644 --- a/docs/globals_defs.html +++ b/docs/globals_defs.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/globals_enum.html b/docs/globals_enum.html index c1b5f7e..08bda5a 100644 --- a/docs/globals_enum.html +++ b/docs/globals_enum.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/globals_eval.html b/docs/globals_eval.html index 5fd5945..0e3315f 100644 --- a/docs/globals_eval.html +++ b/docs/globals_eval.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/globals_func.html b/docs/globals_func.html index 25339b7..a46a526 100644 --- a/docs/globals_func.html +++ b/docs/globals_func.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/globals_type.html b/docs/globals_type.html index 2397070..a589281 100644 --- a/docs/globals_type.html +++ b/docs/globals_type.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/index.html b/docs/index.html index 1f3d7e5..ec4f1ba 100644 --- a/docs/index.html +++ b/docs/index.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index f7c443c..1400bf1 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 36fd00b..15a68cb 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/namespaces.html b/docs/namespaces.html index 585860f..aa7d73d 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/namespacesignal__utils.html b/docs/namespacesignal__utils.html index 76ed616..cd280cb 100644 --- a/docs/namespacesignal__utils.html +++ b/docs/namespacesignal__utils.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structEulerIntegratorSpec-members.html b/docs/structEulerIntegratorSpec-members.html index a5dd563..5a370c4 100644 --- a/docs/structEulerIntegratorSpec-members.html +++ b/docs/structEulerIntegratorSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structEulerIntegratorSpec.html b/docs/structEulerIntegratorSpec.html index bfecafd..8375992 100644 --- a/docs/structEulerIntegratorSpec.html +++ b/docs/structEulerIntegratorSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structIntegrator-members.html b/docs/structIntegrator-members.html index d0753f2..4cf6529 100644 --- a/docs/structIntegrator-members.html +++ b/docs/structIntegrator-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structIntegrator.html b/docs/structIntegrator.html index af6f66b..76af14e 100644 --- a/docs/structIntegrator.html +++ b/docs/structIntegrator.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structManifoldSignalSpec-members.html b/docs/structManifoldSignalSpec-members.html index bd91f95..b992910 100644 --- a/docs/structManifoldSignalSpec-members.html +++ b/docs/structManifoldSignalSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structManifoldSignalSpec.html b/docs/structManifoldSignalSpec.html index 36a7d1a..cad70f0 100644 --- a/docs/structManifoldSignalSpec.html +++ b/docs/structManifoldSignalSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structManifoldStateSignalSpec-members.html b/docs/structManifoldStateSignalSpec-members.html index 2bc086b..2ac9c06 100644 --- a/docs/structManifoldStateSignalSpec-members.html +++ b/docs/structManifoldStateSignalSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structManifoldStateSignalSpec.html b/docs/structManifoldStateSignalSpec.html index 5a0b527..d916ac2 100644 --- a/docs/structManifoldStateSignalSpec.html +++ b/docs/structManifoldStateSignalSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyDynamics3DOF-members.html b/docs/structRigidBodyDynamics3DOF-members.html index f4df096..d7619c7 100644 --- a/docs/structRigidBodyDynamics3DOF-members.html +++ b/docs/structRigidBodyDynamics3DOF-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyDynamics3DOF.html b/docs/structRigidBodyDynamics3DOF.html index 12a8017..2dbefbc 100644 --- a/docs/structRigidBodyDynamics3DOF.html +++ b/docs/structRigidBodyDynamics3DOF.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyDynamics6DOF-members.html b/docs/structRigidBodyDynamics6DOF-members.html index ec671d0..3ff2555 100644 --- a/docs/structRigidBodyDynamics6DOF-members.html +++ b/docs/structRigidBodyDynamics6DOF-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyDynamics6DOF.html b/docs/structRigidBodyDynamics6DOF.html index 4bb9dc7..e7bd31e 100644 --- a/docs/structRigidBodyDynamics6DOF.html +++ b/docs/structRigidBodyDynamics6DOF.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyParams1D-members.html b/docs/structRigidBodyParams1D-members.html index 4e73e0e..b073d32 100644 --- a/docs/structRigidBodyParams1D-members.html +++ b/docs/structRigidBodyParams1D-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyParams1D.html b/docs/structRigidBodyParams1D.html index b562a23..ebaa789 100644 --- a/docs/structRigidBodyParams1D.html +++ b/docs/structRigidBodyParams1D.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyParams2D-members.html b/docs/structRigidBodyParams2D-members.html index ca27749..fae0ab8 100644 --- a/docs/structRigidBodyParams2D-members.html +++ b/docs/structRigidBodyParams2D-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyParams2D.html b/docs/structRigidBodyParams2D.html index 1d8add0..3a15395 100644 --- a/docs/structRigidBodyParams2D.html +++ b/docs/structRigidBodyParams2D.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyParams3D-members.html b/docs/structRigidBodyParams3D-members.html index 7e5fb5a..52ce27b 100644 --- a/docs/structRigidBodyParams3D-members.html +++ b/docs/structRigidBodyParams3D-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRigidBodyParams3D.html b/docs/structRigidBodyParams3D.html index 62ef73c..20a7f17 100644 --- a/docs/structRigidBodyParams3D.html +++ b/docs/structRigidBodyParams3D.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRotationalDynamics1DOF-members.html b/docs/structRotationalDynamics1DOF-members.html index 6d39276..4e48a12 100644 --- a/docs/structRotationalDynamics1DOF-members.html +++ b/docs/structRotationalDynamics1DOF-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRotationalDynamics1DOF.html b/docs/structRotationalDynamics1DOF.html index 94a2097..14845ea 100644 --- a/docs/structRotationalDynamics1DOF.html +++ b/docs/structRotationalDynamics1DOF.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRotationalDynamics3DOF-members.html b/docs/structRotationalDynamics3DOF-members.html index 67c3a92..de499e5 100644 --- a/docs/structRotationalDynamics3DOF-members.html +++ b/docs/structRotationalDynamics3DOF-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structRotationalDynamics3DOF.html b/docs/structRotationalDynamics3DOF.html index 9087643..a61ee36 100644 --- a/docs/structRotationalDynamics3DOF.html +++ b/docs/structRotationalDynamics3DOF.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structScalarSignalSpec-members.html b/docs/structScalarSignalSpec-members.html index 5d7916b..f020e8c 100644 --- a/docs/structScalarSignalSpec-members.html +++ b/docs/structScalarSignalSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structScalarSignalSpec.html b/docs/structScalarSignalSpec.html index 3034fbd..449bf34 100644 --- a/docs/structScalarSignalSpec.html +++ b/docs/structScalarSignalSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structScalarStateSignalSpec-members.html b/docs/structScalarStateSignalSpec-members.html index cb77cbb..8796473 100644 --- a/docs/structScalarStateSignalSpec-members.html +++ b/docs/structScalarStateSignalSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structScalarStateSignalSpec.html b/docs/structScalarStateSignalSpec.html index 5b924a7..854e934 100644 --- a/docs/structScalarStateSignalSpec.html +++ b/docs/structScalarStateSignalSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structSignal_1_1SignalDP-members.html b/docs/structSignal_1_1SignalDP-members.html index 5f3d569..226852b 100644 --- a/docs/structSignal_1_1SignalDP-members.html +++ b/docs/structSignal_1_1SignalDP-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structSignal_1_1SignalDP.html b/docs/structSignal_1_1SignalDP.html index b84eadd..1593329 100644 --- a/docs/structSignal_1_1SignalDP.html +++ b/docs/structSignal_1_1SignalDP.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structSimpsonIntegratorSpec-members.html b/docs/structSimpsonIntegratorSpec-members.html index 8cfb045..3d9c095 100644 --- a/docs/structSimpsonIntegratorSpec-members.html +++ b/docs/structSimpsonIntegratorSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structSimpsonIntegratorSpec.html b/docs/structSimpsonIntegratorSpec.html index 9e55a1a..aefe78d 100644 --- a/docs/structSimpsonIntegratorSpec.html +++ b/docs/structSimpsonIntegratorSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structState-members.html b/docs/structState-members.html index 5fe2ec8..e9fe118 100644 --- a/docs/structState-members.html +++ b/docs/structState-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structState.html b/docs/structState.html index e47f686..5c99b3d 100644 --- a/docs/structState.html +++ b/docs/structState.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structTranslationalDynamicsBase-members.html b/docs/structTranslationalDynamicsBase-members.html index 3971e5a..d3503eb 100644 --- a/docs/structTranslationalDynamicsBase-members.html +++ b/docs/structTranslationalDynamicsBase-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structTranslationalDynamicsBase.html b/docs/structTranslationalDynamicsBase.html index 8aae15d..7d34662 100644 --- a/docs/structTranslationalDynamicsBase.html +++ b/docs/structTranslationalDynamicsBase.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structTrapezoidalIntegratorSpec-members.html b/docs/structTrapezoidalIntegratorSpec-members.html index 9ceb7b0..d2824c1 100644 --- a/docs/structTrapezoidalIntegratorSpec-members.html +++ b/docs/structTrapezoidalIntegratorSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structTrapezoidalIntegratorSpec.html b/docs/structTrapezoidalIntegratorSpec.html index 958c3ba..71af624 100644 --- a/docs/structTrapezoidalIntegratorSpec.html +++ b/docs/structTrapezoidalIntegratorSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structVectorSignalSpec-members.html b/docs/structVectorSignalSpec-members.html index 9c06c3a..339f1c2 100644 --- a/docs/structVectorSignalSpec-members.html +++ b/docs/structVectorSignalSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structVectorSignalSpec.html b/docs/structVectorSignalSpec.html index 06a163f..f3ef9b3 100644 --- a/docs/structVectorSignalSpec.html +++ b/docs/structVectorSignalSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structVectorStateSignalSpec-members.html b/docs/structVectorStateSignalSpec-members.html index c7adf21..b81d281 100644 --- a/docs/structVectorStateSignalSpec-members.html +++ b/docs/structVectorStateSignalSpec-members.html @@ -26,6 +26,7 @@ +
        diff --git a/docs/structVectorStateSignalSpec.html b/docs/structVectorStateSignalSpec.html index db4616d..9962802 100644 --- a/docs/structVectorStateSignalSpec.html +++ b/docs/structVectorStateSignalSpec.html @@ -26,6 +26,7 @@ +
        diff --git a/doxygen-awesome-css b/doxygen-awesome-css new file mode 160000 index 0000000..9760c30 --- /dev/null +++ b/doxygen-awesome-css @@ -0,0 +1 @@ +Subproject commit 9760c30014131f4eacb8e96f15f3869c7bc5dd8c From b45e4caae81edc87c496823ec6273cea8665958c Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Fri, 12 Sep 2025 22:49:14 -0700 Subject: [PATCH 10/11] wip docs --- include/signals/Models.h | 3 +++ include/signals/State.h | 49 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/include/signals/Models.h b/include/signals/Models.h index be348c2..42b74d4 100644 --- a/include/signals/Models.h +++ b/include/signals/Models.h @@ -38,6 +38,9 @@ class Model */ StateDotSignalType xdot; + /** + * @brief Initialize a model with no parameters. + */ Model() : params_{std::nullopt} { reset(); diff --git a/include/signals/State.h b/include/signals/State.h index e9ab67b..62c401b 100644 --- a/include/signals/State.h +++ b/include/signals/State.h @@ -36,21 +36,36 @@ struct State using TwistType = typename TwistTypeSpec::Type; /** - * @brief TODO + * @brief Pose type. + */ + PoseType pose; + /** + * @brief Twist (derivative of Pose) type. */ - PoseType pose; TwistType twist; + /** + * @brief Initialize an empty state. + */ State() {} + /** + * @brief Initialize state from a pose and twist pointer array. + */ State(T* arr) : pose(arr), twist(arr + PoseDim) {} + /** + * @brief State copy constructor. + */ State(const State& other) { this->pose = other.pose; this->twist = other.twist; } + /** + * @brief Set the state to identity (zero) values across the board. + */ static State identity() { State x; @@ -59,6 +74,9 @@ struct State return x; } + /** + * @brief Set the state to NaN values across the board. + */ static State nans() { State x; @@ -67,6 +85,9 @@ struct State return x; } + /** + * @brief Scale the state (pose and twist) by a scalar. + */ State& operator*=(const double& s) { pose *= s; @@ -74,6 +95,9 @@ struct State return *this; } + /** + * @brief Add a tangent space state (twist and derivative of twist) to the current state. + */ template State& operator+=(const State& r) { @@ -83,6 +107,9 @@ struct State } }; +/** + * @brief Add a tangent space state (twist and derivative of twist) to the current state. + */ template State operator+(const State& l, const State& r) { @@ -92,6 +119,9 @@ State operator+(const State& l, const return lpr; } +/** + * @brief Subtract a tangent space state (twist and derivative of twist) from the current state. + */ template State operator-(const State& l, const State& r) { @@ -101,6 +131,9 @@ State operator-(const State& l, const return lmr; } +/** + * @brief Scale the state (pose and twist) by a scalar. + */ template State operator*(const double& l, const State& r) { @@ -110,6 +143,9 @@ State operator*(const double& l, const State State operator*(const State& l, const double& r) { @@ -129,6 +165,9 @@ inline std::ostream& operator<<(std::ostream& os, const ScalarStateType& x) return os; } +/** + * @brief Scale the state (pose and twist) by a scalar. + */ template ScalarStateType operator/(const ScalarStateType& l, const double& r) { @@ -148,6 +187,9 @@ inline std::ostream& operator<<(std::ostream& os, const VectorStateType& x return os; } +/** + * @brief Scale the state (pose and twist) by a scalar. + */ template VectorStateType operator/(const VectorStateType& l, const double& r) { @@ -171,6 +213,9 @@ template struct ScalarStateSignalSpec { using Type = ScalarStateType; + /** + * TODO + */ static Type ZeroType() { return Type::identity(); From fb143d2ac94b901eb6c42b2a24abfd7b245505cc Mon Sep 17 00:00:00 2001 From: Andrew Torgesen Date: Fri, 12 Sep 2025 22:55:16 -0700 Subject: [PATCH 11/11] wip --- include/signals/Signal.h | 2 +- include/signals/State.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/signals/Signal.h b/include/signals/Signal.h index c92e6aa..b9e2a66 100644 --- a/include/signals/Signal.h +++ b/include/signals/Signal.h @@ -11,7 +11,7 @@ using namespace Eigen; /** - * @brief TODO + * @brief ^^^^ TODO */ enum InterpolationMethod { diff --git a/include/signals/State.h b/include/signals/State.h index 62c401b..e85dbc0 100644 --- a/include/signals/State.h +++ b/include/signals/State.h @@ -214,7 +214,7 @@ struct ScalarStateSignalSpec { using Type = ScalarStateType; /** - * TODO + * ^^^^ TODO */ static Type ZeroType() {