Add documentation image variants compatible with dark mode. Fixes #587

PiperOrigin-RevId: 596265596
Change-Id: Iedd076fbb7a6dca77a91e52e538be1c764d1f8fb
This commit is contained in:
Yuval Tassa
2024-01-06 14:01:27 -08:00
committed by Copybara-Service
parent feb92bf535
commit c79e1e5d01
11 changed files with 578 additions and 14 deletions
+7 -1
View File
@@ -520,8 +520,14 @@ in the surrounding flow a circulation of sufficient strength to hold the rear st
This is the Kutta condition, a fluid dynamic phenomenon that can be observed for solid bodies with sharp corners, such
as slender bodies or the trailing edges of airfoils.
.. cssclass:: caption-small
.. figure:: ../images/computation/kutta_cond_plate.svg
:class: only-light
:figwidth: 95%
:align: left
.. cssclass:: caption-small
.. figure:: ../images/computation/kutta_cond_plate_dark.svg
:class: only-dark
:figwidth: 95%
:align: left
+19 -1
View File
@@ -966,6 +966,12 @@ is :math:`E f`. The matrix of basis vectors is constructed as follows.
.. image:: ../images/computation/contact_frame.svg
:width: 700px
:align: center
:class: only-light
.. image:: ../images/computation/contact_frame_dark.svg
:width: 700px
:align: center
:class: only-dark
The figure illustrates the full basis set corresponding to the case :math:`n = 6`. Otherwise we use only the first
:math:`n` or :math:`2(n-1)` columns depending on the cone type. Elliptic cones are easier to understand. Since the
@@ -1325,6 +1331,12 @@ representations of the constraint Jacobian and related matrices.
.. image:: ../images/computation/gPGS.svg
:width: 500px
:align: center
:class: only-light
.. image:: ../images/computation/gPGS_dark.svg
:width: 500px
:align: center
:class: only-dark
When using pyramidal friction cones, the problem involves box constraints to which PGS has traditionally been
applied. If we applied PGS directly to the conic constraints resulting from elliptic friction cones, it would get
@@ -1424,12 +1436,18 @@ approximations, no matter how accurate the approximation is. The figure below il
where the pyramid is not even an approximation, but represents the same constraint set as the elliptic cone. We plot the
contours of the penalty/shadow for the pyramidal (red) and elliptic (dashed blue) cones, for different friction
coefficients varying from left to right. Mathematically, the penalty in the pyramidal case is a quadratic spline, while
the penalty in the elliptic case contains pieces that are quadratics minus square roots of quadratics - allowing
the penalty in the elliptic case contains pieces that are quadratics minus square roots of quadratics -- allowing
circular contours around the tip of the cone.
.. image:: ../images/computation/softcontact.png
:width: 600px
:align: center
:class: only-light
.. image:: ../images/computation/softcontact_dark.png
:width: 600px
:align: center
:class: only-dark
In summary, elliptic and pyramidal friction cones define different soft-contact dynamics (although they are usually very
close). The elliptic model is more principled and more consistent with physical intuition, and the corresponding solvers
@@ -0,0 +1,296 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 559.62 244.73">
<defs>
<style>
.cls-1 {
font-size: 12px;
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5, .cls-6 {
fill: #fff;
}
.cls-1, .cls-3, .cls-4, .cls-5 {
font-family: ArialMT, Arial;
}
.cls-1, .cls-3, .cls-4, .cls-5, .cls-7 {
isolation: isolate;
}
.cls-8 {
stroke-width: 2px;
}
.cls-8, .cls-9 {
stroke: #4c4c4c;
}
.cls-8, .cls-9, .cls-10 {
fill: none;
}
.cls-2, .cls-10 {
stroke: #fff;
}
.cls-3 {
font-size: 8px;
}
.cls-9 {
stroke-dasharray: 0 0 5 5;
}
.cls-4 {
font-size: 24px;
}
.cls-5 {
font-size: 9px;
}
.cls-6 {
stroke-width: 0px;
}
</style>
</defs>
<line class="cls-8" x1="28.52" y1="139.62" x2="79.67" y2="174.04"/>
<line class="cls-8" x1="28.52" y1="139.62" x2="72.1" y2="113.9"/>
<line class="cls-8" x1="28.52" y1="139.62" x2="28.52" y2="69.94"/>
<g class="cls-7">
<text class="cls-1" transform="translate(25.61 10.3)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(32.28 13.3)"><tspan x="0" y="0">1</tspan></text>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(126 209.44)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(132.67 212.44)"><tspan x="0" y="0">2</tspan></text>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(123.42 85.94)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(130.09 88.94)"><tspan x="0" y="0">3</tspan></text>
</g>
<g>
<path class="cls-10" d="M56.74,118.44c0-11,6.36-20,14.2-20s14.19,9,14.19,20"/>
<path class="cls-6" d="M85.13,117.67l2.7-1.64.06.09-1.75,4.41c-.34,1.53-.67,3.07-1,4.61-.34-1.54-.68-3.08-1-4.61l-1.81-4.41v-.09l2.8,1.64Z"/>
</g>
<g>
<path class="cls-10" d="M90.33,180.04c0-11-6.35-20-14.19-20s-14.19,9-14.19,20"/>
<path class="cls-6" d="M61.94,179.27l2.7-1.64.06.09-1.75,4.41c-.34,1.53-.68,3.07-1,4.6l-1-4.6-1.75-4.41.05-.09,2.69,1.64Z"/>
</g>
<g>
<path class="cls-10" d="M21.49,83.23c14.25,0,25.8-5.49,25.8-12.26s-11.55-12.26-25.8-12.26"/>
<path class="cls-6" d="M22.25,58.71l1.64,2.71-.09.06-4.41-1.75-4.6-1,4.6-1,4.41-1.79h.09l-1.64,2.77Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(0 62.46)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(6.67 65.46)"><tspan x="0" y="0">4</tspan></text>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(58.77 199.36)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(65.44 202.36)"><tspan x="0" y="0">5</tspan></text>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(81.16 136.09)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(87.83 139.09)"><tspan x="0" y="0">6</tspan></text>
</g>
<text class="cls-1" transform="translate(18.39 122.2)"><tspan x="0" y="0">x</tspan></text>
<text class="cls-1" transform="translate(41.29 162.53)"><tspan x="0" y="0">y</tspan></text>
<text class="cls-1" transform="translate(50.31 137.92)"><tspan x="0" y="0">z</tspan></text>
<path class="cls-2" d="M32,139.57c0,1.92-1.56,3.48-3.48,3.48h0c-1.92,0-3.48-1.55-3.49-3.47h0c0-1.93,1.56-3.49,3.48-3.49,0,0,0,0,.01,0,1.92,0,3.48,1.56,3.48,3.48h0Z"/>
<g>
<line class="cls-10" x1="28.52" y1="48.07" x2="28.52" y2="22.19"/>
<path class="cls-6" d="M28.52,22.94l-2.71,1.64-.06-.09,1.75-4.41,1-4.61c.33,1.54.67,3.07,1,4.61l1.75,4.41-.05.09-2.68-1.64Z"/>
</g>
<g>
<line class="cls-10" x1="94.7" y1="184.06" x2="115.42" y2="198"/>
<path class="cls-6" d="M114.79,197.57l.14-3.16h.11l2.68,3.91c1.09,1.14,2.17,2.28,3.26,3.41l-4.39-1.73-4.63-1-.05-.09,2.88-1.34Z"/>
</g>
<g>
<line class="cls-10" x1="88.95" y1="104.87" x2="110.74" y2="92.01"/>
<path class="cls-6" d="M110.08,92.4l-2.75-1.46.05-.1,4.68-.74,4.48-1.46-3.45,3.21-2.9,3.75h-.11v-3.2Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(265.54 123.6)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(272.21 126.6)"><tspan x="0" y="0">1</tspan></text>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(229.69 111.4)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(236.36 114.4)"><tspan x="0" y="0">2</tspan></text>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(307.66 91.78)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(314.33 94.78)"><tspan x="0" y="0">3</tspan></text>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(188.06 133.82)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(194.73 136.82)"><tspan x="0" y="0">4</tspan></text>
</g>
<line class="cls-8" x1="255.21" y1="174.82" x2="303.2" y2="207.11"/>
<line class="cls-8" x1="255.21" y1="174.82" x2="298.79" y2="149.1"/>
<line class="cls-8" x1="255.21" y1="174.82" x2="255.21" y2="105.14"/>
<path class="cls-2" d="M258.7,174.77c0,1.92-1.56,3.48-3.48,3.48,0,0,0,0-.01,0-1.92,0-3.48-1.56-3.48-3.48h0c0-1.92,1.56-3.48,3.48-3.48h0c1.92,0,3.48,1.55,3.49,3.47,0,0,0,0,0,.01Z"/>
<g>
<path class="cls-9" d="M301.33,92.38c7.4,10.56-7.74,29.27-33.83,41.8-26.09,12.53-53.24,14.14-60.65,3.59s7.74-29.27,33.83-41.8,53.24-14.14,60.65-3.59Z"/>
<g>
<line class="cls-10" x1="209.77" y1="140.36" x2="255.21" y2="174.82"/>
<path class="cls-6" d="M210.38,140.82l-.33,3.15h-.11l-2.45-4.03-3.06-3.59,4.28,2,4.57,1.27.05.09-2.95,1.11Z"/>
</g>
<g>
<line class="cls-10" x1="267.54" y1="136.09" x2="255.21" y2="174.82"/>
<path class="cls-6" d="M267.33,136.81l-3.07.75v-.11l3-3.66,2.36-4.09c-.14,1.57-.28,3.14-.43,4.7l.33,4.73-.07.07-2.12-2.39Z"/>
</g>
<g>
<line class="cls-10" x1="242.89" y1="100.97" x2="255.21" y2="174.82"/>
<path class="cls-6" d="M243.01,101.72l-2.39,2.07-.08-.08,1-4.64.24-4.71c.59,1.46,1.17,2.92,1.76,4.38l2.45,4.06v.09l-2.98-1.17Z"/>
</g>
<g>
<line class="cls-10" x1="300.66" y1="96.7" x2="255.21" y2="174.82"/>
<path class="cls-6" d="M300.33,97.35l-3.17.07v-.11l3.72-2.93c1.07-1.16,2.13-2.32,3.2-3.47l-1.44,4.49-.71,4.68-.08.06-1.52-2.79Z"/>
</g>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(70.45 14.72)"><tspan x="0" y="0">elliptic basis: E = I</tspan></text>
<text class="cls-5" transform="translate(166.83 17.72)"><tspan x="0" y="0">6</tspan></text>
</g>
<text class="cls-1" transform="translate(312.5 17.19)"><tspan x="0" y="0">pyramidal basis: E =</tspan></text>
<g>
<g>
<line class="cls-10" x1="255.97" y1="83.27" x2="255.97" y2="57.39"/>
<path class="cls-6" d="M255.97,58.15l-2.7,1.64-.06-.09,1.75-4.41c.34-1.53.67-3.07,1-4.6l1,4.6,1.75,4.41v.09l-2.74-1.64Z"/>
</g>
<g>
<path class="cls-10" d="M242.94,87.42c14.26,0,25.81-5.49,25.81-12.26s-11.55-12.22-25.81-12.22"/>
<path class="cls-6" d="M243.71,62.94l1.64,2.7-.09.06-4.41-1.76-4.6-1,4.6-1,4.41-1.75h.09l-1.64,2.75Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(239.43 76.17)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(246.1 79.17)"><tspan x="0" y="0">5</tspan></text>
</g>
</g>
<g>
<g>
<line class="cls-10" x1="255.97" y1="40.49" x2="255.97" y2="14.61"/>
<path class="cls-6" d="M255.97,15.37l-2.7,1.65-.06-.1,1.75-4.4c.34-1.54.67-3.07,1-4.61l1,4.61,1.75,4.4v.1l-2.74-1.65Z"/>
</g>
<g>
<path class="cls-10" d="M268.75,45.65c-14.25,0-25.81-5.49-25.81-12.26s11.56-12.26,25.81-12.26"/>
<path class="cls-6" d="M267.98,21.13l-1.64-2.7.09-.06,4.41,1.75,4.61,1-4.61,1-4.41,1.82-.09-.05,1.64-2.76Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(260.75 35.64)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(267.42 38.64)"><tspan x="0" y="0">6</tspan></text>
</g>
</g>
<g>
<g>
<path class="cls-10" d="M323.24,213.31c0-11-6.36-20-14.2-20s-14.19,9-14.19,20"/>
<path class="cls-6" d="M294.85,212.55l2.7-1.65.07.1-1.75,4.4-1,4.61c-.34-1.54-.67-3.07-1-4.61l-1.75-4.4v-.1l2.73,1.65Z"/>
</g>
<g>
<line class="cls-10" x1="309.01" y1="211" x2="309.01" y2="185.12"/>
<path class="cls-6" d="M309.01,185.88l-2.68,1.64-.06-.09,1.75-4.4,1-4.61c.33,1.54.67,3.07,1,4.61l1.75,4.4v.09l-2.76-1.64Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(301.82 221.38)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(308.49 224.38)"><tspan x="0" y="0">7</tspan></text>
</g>
</g>
<g>
<g>
<path class="cls-10" d="M324.24,230.74c0-11.05,6.35-20,14.19-20s14.19,8.95,14.19,20"/>
<path class="cls-6" d="M352.62,229.94l2.71-1.65.06.09-1.75,4.41-1,4.61c-.33-1.54-.67-3.07-1-4.61l-1.75-4.41v-.09l2.73,1.65Z"/>
</g>
<g>
<line class="cls-10" x1="338.39" y1="228.43" x2="338.39" y2="202.55"/>
<path class="cls-6" d="M338.39,203.31l-2.7,1.64-.06-.09,1.75-4.4c.34-1.54.67-3.07,1-4.61l1,4.61,1.75,4.4v.09l-2.74-1.64Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(331.21 238.81)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(337.88 241.81)"><tspan x="0" y="0">8</tspan></text>
</g>
</g>
<g>
<g>
<path class="cls-10" d="M293.85,147.15c0-11,6.36-20,14.19-20s14.2,9,14.2,20"/>
<path class="cls-6" d="M322.24,146.39l2.7-1.65.06.09-1.75,4.41c-.34,1.54-.67,3.07-1,4.61l-1-4.61-1.75-4.41v-.09l2.74,1.65Z"/>
</g>
<g>
<line class="cls-10" x1="308.01" y1="144.84" x2="308.01" y2="118.96"/>
<path class="cls-6" d="M308.01,119.72l-2.68,1.64-.06-.09,1.75-4.4,1-4.61c.33,1.53.67,3.07,1,4.61l1.75,4.4v.09l-2.76-1.64Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(300.82 155.22)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(307.49 158.22)"><tspan x="0" y="0">9</tspan></text>
</g>
</g>
<g>
<g>
<path class="cls-10" d="M353.08,128.06c0-11.05-6.36-20-14.2-20s-14.19,9-14.19,20"/>
<path class="cls-6" d="M324.69,127.29l2.7-1.64.06.09-1.75,4.41c-.33,1.54-.67,3.07-1,4.61-.34-1.54-.67-3.07-1-4.61l-1.77-4.41v-.09l2.76,1.64Z"/>
</g>
<g>
<line class="cls-10" x1="338.85" y1="125.75" x2="338.85" y2="99.87"/>
<path class="cls-6" d="M338.85,100.63l-2.71,1.64-.06-.09,1.75-4.41,1-4.6c.33,1.53.67,3.07,1,4.6l1.75,4.41-.05.09-2.68-1.64Z"/>
</g>
<g class="cls-7">
<text class="cls-1" transform="translate(331.66 136.13)"><tspan x="0" y="0">e</tspan></text>
<text class="cls-5" transform="translate(338.33 139.13)"><tspan x="0" y="0">10</tspan></text>
</g>
</g>
<text class="cls-1" transform="translate(378.74 44.29)"><tspan x="0" y="0">1</tspan></text>
<g class="cls-7">
<text class="cls-1" transform="translate(373.33 65.99)"><tspan x="0" y="0">+m</tspan></text>
<text class="cls-3" transform="translate(390.33 68.99)"><tspan x="0" y="0">1</tspan></text>
</g>
<text class="cls-1" transform="translate(378.74 89.16)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(378.74 111.6)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(378.74 134.03)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(378.74 157.91)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(407.55 44.29)"><tspan x="0" y="0">1</tspan></text>
<text class="cls-1" transform="translate(407.55 89.16)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(407.55 111.6)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(407.55 134.03)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(407.55 157.91)"><tspan x="0" y="0">0</tspan></text>
<g class="cls-7">
<text class="cls-1" transform="translate(402.13 65.99)"><tspan x="0" y="0">-m</tspan></text>
<text class="cls-3" transform="translate(416.12 68.99)"><tspan x="0" y="0">1</tspan></text>
</g>
<text class="cls-1" transform="translate(435.2 44.29)"><tspan x="0" y="0">1</tspan></text>
<g class="cls-7">
<text class="cls-1" transform="translate(429.78 88.42)"><tspan x="0" y="0">+m</tspan></text>
<text class="cls-3" transform="translate(446.78 91.42)"><tspan x="0" y="0">2</tspan></text>
</g>
<text class="cls-1" transform="translate(435.2 66.73)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(435.2 111.6)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(435.2 134.03)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(435.2 157.91)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(463 44.29)"><tspan x="0" y="0">1</tspan></text>
<text class="cls-1" transform="translate(463 66.73)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(463 111.6)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(463 134.03)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(463 157.91)"><tspan x="0" y="0">0</tspan></text>
<g class="cls-7">
<text class="cls-1" transform="translate(457.59 88.42)"><tspan x="0" y="0">-m</tspan></text>
<text class="cls-3" transform="translate(471.58 91.42)"><tspan x="0" y="0">2</tspan></text>
</g>
<text class="cls-1" transform="translate(517.79 44.29)"><tspan x="0" y="0">1</tspan></text>
<g class="cls-7">
<text class="cls-1" transform="translate(512.37 157.17)"><tspan x="0" y="0">+m</tspan></text>
<text class="cls-3" transform="translate(529.37 160.17)"><tspan x="0" y="0">5</tspan></text>
</g>
<text class="cls-1" transform="translate(517.79 66.73)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(517.79 89.16)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(517.79 111.6)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(517.79 134.03)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(546.59 44.29)"><tspan x="0" y="0">1</tspan></text>
<text class="cls-1" transform="translate(546.59 66.73)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(546.59 89.16)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(546.59 111.6)"><tspan x="0" y="0">0</tspan></text>
<text class="cls-1" transform="translate(546.59 134.03)"><tspan x="0" y="0">0</tspan></text>
<g class="cls-7">
<text class="cls-1" transform="translate(541.18 157.17)"><tspan x="0" y="0">-m</tspan></text>
<text class="cls-3" transform="translate(555.17 160.17)"><tspan x="0" y="0">5</tspan></text>
</g>
<text class="cls-4" transform="translate(485.39 98.39)"><tspan x="0" y="0">...</tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

+102
View File
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 454.98 171.24">
<defs>
<style>
.cls-1 {
font-family: ArialMT, Arial;
font-size: 12px;
}
.cls-1, .cls-2, .cls-3 {
fill: #fff;
}
.cls-1, .cls-4 {
isolation: isolate;
}
.cls-5 {
stroke-dasharray: 0 0 4 4;
}
.cls-5, .cls-2, .cls-6, .cls-7, .cls-3, .cls-8 {
stroke: #dce0df;
}
.cls-5, .cls-6, .cls-7, .cls-9, .cls-8, .cls-10 {
fill: none;
}
.cls-11 {
fill: #0c0c0c;
}
.cls-11, .cls-10 {
stroke: #666;
}
.cls-6 {
stroke-dasharray: 0 5;
}
.cls-7 {
stroke-dasharray: 0 0 5 5;
}
.cls-3 {
stroke-miterlimit: 4;
stroke-width: 1px;
}
.cls-9 {
stroke: #fff;
stroke-width: 3px;
}
.cls-12 {
fill: #dce0df;
stroke-width: 0px;
}
</style>
</defs>
<line class="cls-10" x1="68" y1="151.26" x2="133.33" y2="67.93"/>
<line class="cls-10" x1="68" y1="151.26" x2="2.67" y2="67.93"/>
<circle class="cls-3" cx="122.67" cy="118.59" r="2.67"/>
<g class="cls-4">
<text class="cls-1" transform="translate(0 45.93)"><tspan x="0" y="0">cone</tspan></text>
<text class="cls-1" transform="translate(0 60.33)"><tspan x="0" y="0">constraint</tspan></text>
</g>
<g class="cls-4">
<text class="cls-1" transform="translate(133.33 134.6)"><tspan x="0" y="0">unconstrained</tspan></text>
<text class="cls-1" transform="translate(133.33 149)"><tspan x="0" y="0">minimum</tspan></text>
</g>
<line class="cls-7" x1="122.67" y1="118.6" x2="122.67" y2="81.54"/>
<line class="cls-6" x1="125.33" y1="118.6" x2="93.61" y2="118.6"/>
<line class="cls-9" x1="93.14" y1="119.2" x2="122.67" y2="81.54"/>
<g>
<line class="cls-8" x1="104" y1="53.93" x2="104" y2="88.93"/>
<path class="cls-12" d="M104,88.17l2.7-1.64.06.09-1.75,4.4c-.33,1.54-.67,3.07-1,4.61-.34-1.54-.67-3.07-1-4.61l-1.75-4.4v-.09l2.74,1.64Z"/>
</g>
<g class="cls-4">
<text class="cls-1" transform="translate(85.81 35.63)"><tspan x="0" y="0">continuum of</tspan></text>
<text class="cls-1" transform="translate(85.81 50.03)"><tspan x="0" y="0">PGS local minima</tspan></text>
</g>
<line class="cls-10" x1="387.29" y1="170.93" x2="452.62" y2="87.6"/>
<line class="cls-10" x1="387.29" y1="170.93" x2="321.96" y2="87.6"/>
<path class="cls-11" d="M454.48,77.71c0,19.83-30.19,35.9-67.44,35.9s-67.42-16.08-67.42-35.9,30.2-35.9,67.45-35.9,67.41,16.06,67.41,35.9Z"/>
<path class="cls-2" d="M417.85,70.44c0,1.03-.83,1.86-1.86,1.86s-1.86-.83-1.86-1.86.83-1.86,1.86-1.86h0c1.02,0,1.85.82,1.86,1.84,0,0,0,.01,0,.02Z"/>
<g class="cls-4">
<text class="cls-1" transform="translate(402.51 10.3)"><tspan x="0" y="0">search</tspan></text>
<text class="cls-1" transform="translate(402.51 24.7)"><tspan x="0" y="0">ray</tspan></text>
</g>
<g class="cls-4">
<text class="cls-1" transform="translate(297.84 33.33)"><tspan x="0" y="0">search</tspan></text>
<text class="cls-1" transform="translate(297.84 47.73)"><tspan x="0" y="0">ellipsoid</tspan></text>
</g>
<g>
<line class="cls-8" x1="416.79" y1="68.24" x2="429.11" y2="25.33"/>
<path class="cls-12" d="M428.9,26.07l-3.05.83v-.1l2.89-3.75,2.25-4.15-.3,4.71.47,4.71-.07.08-2.19-2.33Z"/>
</g>
<line class="cls-5" x1="403.95" y1="112.94" x2="416.79" y2="68.24"/>
<line class="cls-8" x1="387.29" y1="170.93" x2="403.95" y2="112.94"/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 792.59 237.27">
<defs>
<style>
.cls-1 {
stroke-miterlimit: 4;
stroke-width: 16px;
}
.cls-1, .cls-2, .cls-3, .cls-4, .cls-5, .cls-6, .cls-7, .cls-8 {
fill: none;
}
.cls-1, .cls-5, .cls-6, .cls-8 {
stroke: #fff;
}
.cls-9 {
clip-path: url(#clippath);
}
.cls-2 {
stroke: #007b76;
stroke-miterlimit: 4;
stroke-width: 2px;
}
.cls-3 {
stroke-miterlimit: 4;
stroke-width: 2px;
}
.cls-3, .cls-7 {
stroke: #0076ba;
}
.cls-4, .cls-10, .cls-11, .cls-12 {
stroke-width: 0px;
}
.cls-5 {
stroke-miterlimit: 4;
stroke-width: 2px;
}
.cls-6 {
stroke-miterlimit: 4;
stroke-width: 2px;
}
.cls-7, .cls-8 {
stroke-width: 2px;
}
.cls-13 {
font-family: ArialMT, Arial;
font-size: 32px;
}
.cls-13, .cls-14, .cls-15 {
isolation: isolate;
}
.cls-13, .cls-15, .cls-11 {
fill: #fff;
}
.cls-15 {
font-family: STIXGeneral-Italic, STIXGeneral;
font-size: 32.22px;
font-style: italic;
}
.cls-10 {
fill: #99195e;
}
.cls-12 {
fill: #0076ba;
}
</style>
<clipPath id="clippath">
<rect class="cls-4" x="520.61" y="100.37" width="16.82" height="14.57"/>
</clipPath>
</defs>
<g>
<path class="cls-1" d="M153.2,197.67L659.31,46.23"/>
<path class="cls-2" d="M653.5,38.16c-69.23-65.09-392.9,103.98-501.22,149.95"/>
<path class="cls-7" d="M792.58,52.6c-39.16-.63-79.53-1.41-113.82-20.52-11.37-6.34-21.66-14.59-33.61-19.79-20.67-9-42.42-8.25-64.46-5.66C410.68,26.63,262.71,144.22,96.39,182.57c-31.65,7.3-63.9,11.55-96.37,12.26"/>
<path class="cls-7" d="M788.09,72.98c-34.82-2.64-69.65,1.7-103.92,8.29-25.81,4.96-51.35,11.2-76.72,18.09-154.05,41.88-302.08,108.19-461.01,125.56-47.05,5.14-94.43,5.87-141.68,8.47"/>
<path class="cls-12" d="M787.39,47.75l-9.6,4.8,9.6,4.8v-9.6Z"/>
<path class="cls-12" d="M783.33,67.36l-9.6,4.8,9.6,4.8v-9.6Z"/>
<path class="cls-12" d="M29.24,188.93l-9.6,4.8,9.6,4.8v-9.6Z"/>
<path class="cls-12" d="M30.24,227.67l-9.6,4.8,9.6,4.8v-9.6Z"/>
<path class="cls-12" d="M615.4,0l-9.6,4.8,9.6,4.8V0Z"/>
<path class="cls-12" d="M349.27,77.03l-6.8,8.3,10.72.46-3.92-8.76Z"/>
<path class="cls-12" d="M473.5,26.47l-7.5,7.68,10.64,1.39-3.15-9.07Z"/>
<path class="cls-3" d="M195.07,151.07l-1.58.58-.94.34"/>
<path class="cls-12" d="M191.84,147.14l-7.36,7.81,10.67,1.2-3.3-9.01Z"/>
<path class="cls-12" d="M613.28,92.82l-8.06,7.09,10.51,2.19-2.45-9.28Z"/>
<path class="cls-12" d="M442.34,145.91l-8.06,7.09,10.51,2.19-2.45-9.28Z"/>
<path class="cls-12" d="M212.2,210.07l-8.53,6.51,10.33,2.92-1.8-9.43Z"/>
<path class="cls-7" d="M553.05,59.87c11.3-6.46,36.25-12.77,22.33-20.73-17.28-9.89-181.61,49.61-169.38,59.08,8.52,6.6,46.77-6.02,72.27-14.91l.95-.33"/>
<path class="cls-12" d="M479.86,87.84l7.47-7.7-10.65-1.36,3.17,9.06Z"/>
<path class="cls-8" d="M405.92,122.4h219.45"/>
<path class="cls-11" d="M624.38,127.2l9.6-4.8-9.6-4.8v9.6Z"/>
<text class="cls-13" transform="translate(637.08 131.54)"><tspan x="0" y="0">v</tspan></text>
<path class="cls-6" d="M141.34,157.03l38.77-11.63.96-.29"/>
<path class="cls-11" d="M181.49,149.99l7.82-7.36-10.57-1.84,2.76,9.2Z"/>
<path class="cls-5" d="M141.31,157.86l-11.63-38.77-.29-.96"/>
<path class="cls-11" d="M134.28,117.7l-7.36-7.82-1.84,10.57,9.2-2.76Z"/>
<text class="cls-13" transform="translate(135.06 107.05)"><tspan x="0" y="0">y</tspan></text>
<text class="cls-13" transform="translate(181.5 131.54)"><tspan x="0" y="0">x</tspan></text>
<path class="cls-10" d="M672.67,54.95c2.03,1.97,2.03,5.17,0,7.14-2.03,1.97-5.32,1.97-7.35,0-2.03-1.97-2.03-5.17,0-7.14,2.03-1.97,5.32-1.97,7.35,0Z"/>
<path class="cls-10" d="M147.18,196.95c2.03,1.97,2.03,5.17,0,7.14s-5.32,1.97-7.35,0-2.03-5.17,0-7.14c2.03-1.97,5.32-1.97,7.35,0Z"/>
<path class="cls-8" d="M508.05,122.3c.72-19.73-3.57-30.4-12.89-31.99"/>
<text/>
</g>
<g class="cls-9">
<g class="cls-14">
<text class="cls-15" transform="translate(519.74 114.58)"><tspan x="0" y="0">α</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

+30 -12
View File
@@ -318,7 +318,15 @@ of the function :math:`d(r)` is determined by the element-specific parameter vec
units of :math:`\text{width}`. Note that when :math:`\text{power}` is 1, the function is linear regardless of the
:math:`\text{midpoint}`.
|image0|
.. image:: images/modeling/impedance.png
:width: 600px
:align: center
:class: only-light
.. image:: images/modeling/impedance_dark.png
:width: 600px
:align: center
:class: only-dark
These plots show the impedance :math:`d(r)` on the vertical axis, as a function of the constraint violation :math:`r`
on the horizontal axis.
@@ -865,7 +873,15 @@ The advantage of the scaled quantities is that all muscles behave similarly in t
captured by the Force-Length-Velocity (:math:`\text{\small FLV}`) function measured in many experimental papers. We
approximate this function as follows:
|image1|
.. image:: images/modeling/musclemodel.png
:width: 650px
:align: center
:class: only-light
.. image:: images/modeling/musclemodel_dark.png
:width: 650px
:align: center
:class: only-dark
The function is in the form:
@@ -907,7 +923,15 @@ Before embarking on a mission to design more accurate :math:`\text{\small FLV}`
operating range of the muscle has a bigger effect than the shape of the :math:`\text{\small FLV}` function, and in many
cases this parameter is unknown. Below is a graphical illustration:
|image2|
.. image:: images/modeling/musclerange.png
:width: 500px
:align: center
:class: only-light
.. image:: images/modeling/musclerange_dark.png
:width: 500px
:align: center
:class: only-dark
This figure format is common in the biomechanics literature, showing the operating range of each muscle superimposed on
the normalized :math:`\text{FL}` curve (ignore the vertical displacement). Our default range is shown in black. The blue
@@ -1311,7 +1335,9 @@ A flex is a collection of MuJoCo bodies that are connected with massless stretch
capsules (1D flex), triangles (2D flex), or tetrahedra (3D flex). In all cases we allow a radius, which makes the
elements smooth and also volumetric in 1D and 2D. The primitive elements are illustrated below:
|flexelem|
.. image:: images/modeling/flexelem.png
:width: 600px
:align: center
Thus far these look like geoms. But the key difference is that they deform: as the bodies (vertices) move independently
of each other, the shape of the elements changes in real time. Collisions and contact forces are now generalized to
@@ -1677,12 +1703,6 @@ in a visible way, and the energy fluctuates around the initial value instead of
</worldbody>
.. |image0| image:: images/modeling/impedance.png
:width: 600px
.. |image1| image:: images/modeling/musclemodel.png
:width: 650px
.. |image2| image:: images/modeling/musclerange.png
:width: 400px
.. |image3| image:: images/modeling/tendonwraps.png
:width: 500px
.. |image4| image:: images/modeling/particle.png
@@ -1719,8 +1739,6 @@ in a visible way, and the energy fluctuates around the initial value instead of
:height: 250px
.. |particle| image:: images/models/particle.gif
:width: 270px
.. |flexelem| image:: images/modeling/flexelem.png
:width: 400px
.. |bunny1| image:: images/modeling/bunny1.png
:width: 300px
.. |bunny2| image:: images/modeling/bunny2.png