Skip to content

Commit 1885ce8

Browse files
committed
Update to v1.3.0
1 parent 2edc1ce commit 1885ce8

File tree

3 files changed

+105
-8
lines changed

3 files changed

+105
-8
lines changed

docs/source/_static/versions.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@
33
"title": "main",
44
"aliases": ["latest", "head"]
55
}, {
6-
"version": "https://ipctk.xyz/v1.2.1",
7-
"title": "v1.2.1",
6+
"version": "https://ipctk.xyz/v1.3.0",
7+
"title": "v1.3.0",
88
"aliases": ["stable"]
9+
}, {
10+
"version": "https://ipctk.xyz/v1.2.1",
11+
"title": "v1.2.1"
912
}, {
1013
"version": "https://ipctk.xyz/v1.2.0",
11-
"title": "v1.2.0",
12-
"aliases": ["stable"]
14+
"title": "v1.2.0"
1315
}, {
1416
"version": "https://ipctk.xyz/v1.1.1",
15-
"title": "v1.1.1",
16-
"aliases": ["stable"]
17+
"title": "v1.1.1"
1718
}, {
1819
"version": "https://ipctk.xyz/v1.1.0",
1920
"title": "v1.1.0"

docs/source/changelog.rst

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,102 @@ Changelog
66
.. role:: cmake(code)
77
:language: cmake
88

9+
v1.3.0 (Aug 03, 2024)
10+
---------------------
11+
12+
- Separated the collision set and potential computations. This allows us to more easily add new potentials in the future. This will require updating calls to ``compute_potential_*``. See the `tutorial <https://ipctk.xyz/tutorial/getting_started.html>`__ for details.
13+
- Add a ``Barrier`` class to enable dynamic selection of barrier function.
14+
- Add a ``NarrowPhaseCCD`` class to enable dynamic selection of narrow-phase CCD method.
15+
16+
.. _details-4:
17+
18+
Details
19+
~~~~~~~
20+
21+
- Refactor potentials in `#83 <https://github.com/ipc-sim/ipc-toolkit/pull/83>`__
22+
23+
- Replace "constraint" and "contact" names with "collision"
24+
- Removed ``compute_potential_*`` from ``Collision`` and ``Collisions``
25+
- Add a new class hierarchy ``Potential`` which represents computing the sum of individual potentials per collision
26+
27+
- Implement the barrier potential and friction dissipative potential as Potentials: ``BarrierPotential`` and ``FrictionPotential``
28+
29+
- Now, ``Collisions`` serve solely as the set of active collisions
30+
- Add the distance mollifier to all collisions with a ``is_mollified()`` function
31+
32+
- The default mollifier is $m(x) = 1$, and only ``EdgeEdgeCollision`` overrides this
33+
34+
- Remove versions of ``compute_distance`` and ``ccd`` from ``CollisionStencil`` which take the full mesh as input
35+
36+
- Instead, expose the versions that take the collision stencil's vertex positions directly
37+
38+
- Polymorphic barrier in `#84 <https://github.com/ipc-sim/ipc-toolkit/pull/84>`__
39+
40+
- Make the barrier function an object so it can be changed at runtime
41+
- Add a virtual class ``Barrier`` as an interface for generic barriers
42+
- Add ``ClampedLogBarrier`` class which implements the smoothly clamped log barrier functions from [Li et al. 2020]
43+
- ``barrier_gradient`` and ``barrier_hessian`` renamed to ``barrier_first_derivative`` and ``barrier_second_derivative`` respectively
44+
- Co-authored by `@arvigj <https://github.com/arvigj>`__
45+
46+
- Update compiler warnings in `#88 <https://github.com/ipc-sim/ipc-toolkit/pull/88>`__
47+
48+
- Add ``-Werror=enum-conversion`` and ``-Wfloat-conversion``
49+
50+
- Fix 🐛 hash when not using Abseil in `#90 <https://github.com/ipc-sim/ipc-toolkit/pull/90>`__
51+
- Clean-up SpatialHash Broad Phase in `#91 <https://github.com/ipc-sim/ipc-toolkit/pull/91>`__
52+
53+
- Replace ``IPC_TOOLKIT_WITH_CORRECT_CCD`` with ``IPC_TOOLKIT_WITH_INEXACT_CCD``
54+
55+
- Always include Tight Inclusion CCD because it is used by Nonlinear CCD
56+
57+
- Add support for face-face collision (not used anywhere but for completeness and future-proof nonlinear face-face)
58+
- Add and use generic functions to ``SpatialHash``
59+
- Replace ``camelCase`` with ``snake_case`` in ``SpatialHash`` and ``HashGrid``
60+
61+
- Update Scalable CCD in `#92 <https://github.com/ipc-sim/ipc-toolkit/pull/92>`__
62+
63+
- Updated Scalable CCD (i.e., Sweep and Tiniest Queue and CUDA Tight Inclusion CCD) to the `unified repository <https://github.com/Continuous-Collision-Detection/Scalable-CCD>`__ with support for generic collision pairs.
64+
- Renamed ``SWEEP_AND_TINIEST_QUEUE`` to ``SWEEP_AND_PRUNE`` to reflect that it is a standard implementation of the sweep and prune algorithm (see, e.g., "Real-Time Collision Detection" [Ericson 2004])
65+
- Renamed ``SWEEP_AND_TINIEST_QUEUE_GPU`` to ``SWEEP_AND_TINIEST_QUEUE`` to reflect that it is the only existing implementation of the sweep and tiniest queue algorithm
66+
67+
- Mark single argument constructors explicit in `#93 <https://github.com/ipc-sim/ipc-toolkit/pull/93>`__
68+
69+
- Mark ``BarrierPotential(double)`` and ``FrictionPotential(double)`` as explicit constructors to avoid implicit conversions from double
70+
71+
- Fix compatibility with the latest Eigen by `@teseoch <https://github.com/teseoch>`__ in `#94 <https://github.com/ipc-sim/ipc-toolkit/pull/94>`__
72+
- Add clang-format check action in `#96 <https://github.com/ipc-sim/ipc-toolkit/pull/96>`__
73+
- Add new project PSD option by `@Huangzizhou <https://github.com/Huangzizhou>`__ in `#95 <https://github.com/ipc-sim/ipc-toolkit/pull/95>`__
74+
75+
- Instead of clamping the negative eigenvalues to zero, add the option to flips the sign of negative eigenvalues according to `[Chen et al. 2024] <https://github.com/honglin-c/abs-psd>`__
76+
77+
- Fix 🐛 Python bindings for Numpy 2 in `#100 <https://github.com/ipc-sim/ipc-toolkit/pull/100>`__
78+
- Make faces an optional parameter to ``CollisionMesh`` in `#105 <https://github.com/ipc-sim/ipc-toolkit/pull/105>`__
79+
- Fix Python documentation by @rc in `#108 <https://github.com/ipc-sim/ipc-toolkit/pull/108>`__
80+
- Polymorphic CCD in `#110 <https://github.com/ipc-sim/ipc-toolkit/pull/110>`__
81+
82+
- Add narrow phase CCD parent class; pass CCD object to choose method
83+
- Replace ``tolerance`` and ``max_iterations`` parameters with ``const NarrowPhaseCCD& narrow_phase_ccd`` parameter
84+
- ``NarrowPhaseCCD`` is a virtual class containing the CCD methods for point-point, point-edge, edge-edge, and point-triangle CCD
85+
- ``NarrowPhaseCCD`` is implemented by ``InexactCCD``, ``TightInclusionCCD``, and ``AdditiveCCD`` classes
86+
- **[Breaking]** The optional parameter order to ``is_step_collision_free`` and ``compute_collision_free_stepsize`` is changed from
87+
88+
.. code:: cpp
89+
90+
const BroadPhaseMethod broad_phase_method = DEFAULT_BROAD_PHASE_METHOD,
91+
const double min_distance = 0.0,
92+
const double tolerance = DEFAULT_CCD_TOLERANCE,
93+
const long max_iterations = DEFAULT_CCD_MAX_ITERATIONS);
94+
95+
to
96+
97+
.. code:: cpp
98+
99+
const double min_distance = 0.0,
100+
const BroadPhaseMethod broad_phase_method = DEFAULT_BROAD_PHASE_METHOD,
101+
const NarrowPhaseCCD& narrow_phase_ccd = DEFAULT_NARROW_PHASE_CCD);
102+
103+
- The inexact floating-point CCD can be enabled beside the Tight Inclusion CCD rather than replacing it
104+
9105
v1.2.1 (Jul 12, 2024)
10106
---------------------
11107

@@ -94,7 +190,7 @@ Details
94190
v1.1.1 (Aug 18, 2023)
95191
---------------------
96192

97-
* Logo by @zfergus in `#52 <https://github.com/ipc-sim/ipc-toolkit/pull/52>`__
193+
* Logo by `@zfergus <https://github.com/zfergus>`__ in `#52 <https://github.com/ipc-sim/ipc-toolkit/pull/52>`__
98194
* Fix vertex-vertex :cpp:`==` and :cpp:`<` functions to be order independent
99195

100196
* This allows vertex-vertex constraints merge correctly

docs/source/cpp.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ C++
2424
:end-before: <!--- BEGIN C++ README 2 --->
2525

2626
.. tip::
27-
If your :cmake:`IPC_TOOLKIT_GIT_TAG` is a tag (e.g. ``v1.2.1``), then you can use the :cmake:`FetchContent_Declare` argument :cmake:`GIT_SHALLOW TRUE` to download only a single commit. Otherwise, you should use the default :cmake:`GIT_SHALLOW FALSE`.
27+
If your :cmake:`IPC_TOOLKIT_GIT_TAG` is a tag (e.g. ``v1.3.0``), then you can use the :cmake:`FetchContent_Declare` argument :cmake:`GIT_SHALLOW TRUE` to download only a single commit. Otherwise, you should use the default :cmake:`GIT_SHALLOW FALSE`.
2828

2929
.. include:: ../../README.md
3030
:parser: myst_parser.sphinx_

0 commit comments

Comments
 (0)