···1414#
1515# Eigen3::Eigen - The header-only Eigen library
1616#
1717-# This module reads hints about search locations from
1717+# This module reads hints about search locations from
1818# the following environment variables:
1919#
2020# EIGEN3_ROOT
···7272 set(Eigen3_FOUND ${EIGEN3_VERSION_OK})
73737474else ()
7575-7575+7676 # search first if an Eigen3Config.cmake is available in the system,
7777 # if successful this would set EIGEN3_INCLUDE_DIR and the rest of
7878 # the script will work as usual
···8181 if(NOT EIGEN3_INCLUDE_DIR)
8282 find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
8383 HINTS
8484- ENV EIGEN3_ROOT
8484+ ENV EIGEN3_ROOT
8585 ENV EIGEN3_ROOT_DIR
8686 PATHS
8787 ${CMAKE_INSTALL_PREFIX}/include
+5-5
cmake/FindSystemd.cmake
···2626#
2727# SPDX-License-Identifier: BSD-3-Clause
2828#=============================================================================
2929-#
2929+#
3030# Redistribution and use in source and binary forms, with or without
3131# modification, are permitted provided that the following conditions
3232# are met:
3333-#
3333+#
3434# * Redistributions of source code must retain the above copyright
3535# notice, this list of conditions and the following disclaimer.
3636-#
3636+#
3737# * Redistributions in binary form must reproduce the above copyright
3838# notice, this list of conditions and the following disclaimer in the
3939# documentation and/or other materials provided with the distribution.
4040-#
4040+#
4141# * Neither the names of Kitware, Inc., the Insight Software Consortium,
4242# nor the names of their contributors may be used to endorse or promote
4343# products derived from this software without specific prior written
4444# permission.
4545-#
4545+#
4646# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4747# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
4848# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
···4646 DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged()
4747 })
4848 // Update the color scheme when the tab is made visible again.
4949- // It is possible that the appearance was changed in another tab
4949+ // It is possible that the appearance was changed in another tab
5050 // while this tab was in the background.
5151 document.addEventListener("visibilitychange", visibilityState => {
5252 if (document.visibilityState === 'visible') {
···9797 * @returns `true` for dark-mode, `false` for light-mode user preference
9898 */
9999 static get userPreference() {
100100- return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) ||
100100+ return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) ||
101101 (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey))
102102 }
103103
···1616* Are you only including what you use?
17171818# About optimizer parameters/residuals
1919-* My understanding is that Ceres uses *forward-mode autodiff*, which means that for each number you want autodiff to consider, it's stored in a dual number (ceres::Jet) which has a "real" part - just the value, and then a "infinitesmal" part - *this value's partial derivatives with respect to the input parameters*. Then, for every operation, you do the operation to the value and apply the chain rule to the infinitesmal parts.
2020- * As such, it's much easier for the number of residuals to be different than the number of input parameters - creating one `Ceres::Jet` is the same as creating many `ceres::Jet`s, but having the number of infinitesmal parts in a Jet be different at runtime would be weird and probably really expensive.
1919+* My understanding is that Ceres uses *forward-mode autodiff*, which means that for each number you want autodiff to consider, it's stored in a dual number (ceres::Jet) which has a "real" part - just the value, and then a "infinitesmal" part - *this value's partial derivatives with respect to the input parameters*. Then, for every operation, you do the operation to the value and apply the chain rule to the infinitesmal parts.
2020+ * As such, it's much easier for the number of residuals to be different than the number of input parameters - creating one `Ceres::Jet` is the same as creating many `ceres::Jet`s, but having the number of infinitesmal parts in a Jet be different at runtime would be weird and probably really expensive.
2121 * Sooooo... for now, the input size is calculated statically. We have two possible input sizes - one that includes the hand size; one that doesn't. I've tried having the output residual size be calculated statically (annoying, because you need to write a ton of boilerplate to dispatch the correct template for different cases), and I've tried having it be calculated dynamically, and the performance difference doesn't seem to be huge. So, for simplicity and for compile times, the residual size is dynamic for now. We'll revisit this later when we have dataset playback capability :)
22222323