thesis - Computer Graphics Group - Charles University - Univerzita ...
thesis - Computer Graphics Group - Charles University - Univerzita ...
thesis - Computer Graphics Group - Charles University - Univerzita ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
6.2. ACCELERATION-LEVEL CONSTRAINTS 57<br />
define this constraint (as usually) in terms of a constraint force F i c = J T i · λi and conditions on<br />
λi multipliers.<br />
If the dimensionality of the constraint was one, mi = 1, then the magnitude of the constraint<br />
force F i c would be J T i · |( λi)1| and instead of limiting the force magnitude we could limit (the<br />
only component of) λi. In the general case we will also limit the (multiple) components of λi, but<br />
independently on each other, because the equations would not be linear otherwise. Henceforward<br />
we will assume that we are provided with mi-vectors λ lo<br />
i ≤ 0 and λ hi<br />
i ≥ 0 so that the limits are<br />
specified as<br />
( λ lo<br />
i )j ≤ ( λi)j ≤ ( λ hi<br />
i )j,<br />
where 1 ≤ j ≤ mi.<br />
According to the notation we already used while deriving conditions for greater-or-equal<br />
constraints, bodies in the velocity space will be constrained not to accelerate along the directions<br />
of the hypersurface normals due to the corresponding unbounded equality constraint. If the<br />
bodies began to accelerate off the hypersurface j due to the j-th constraint DOF in the direction<br />
of its normal, a negative ( λi)j would be required to cancel the acceleration. However if ( λi)j<br />
dropped below its lower limit ( λ lo<br />
i )j, ( λi)j would be clamped and the magnitude of the clamped<br />
value would not be big enough to cancel the prohibited acceleration, hence ( Ci)j > 0. Similarly,<br />
if the bodies began to accelerate off the hypersurface in the opposite direction, a positive ( λi)j<br />
would be required to cancel the acceleration and if ( λi)j exceeded the upper limit ( λ hi<br />
i )j, ( λi)j<br />
would be clamped and hence ( Ci)j < 0. Since Ci = Ai · λ + bi, these conditions can be written as<br />
( λ lo<br />
i )j ≤ 0<br />
( λ hi<br />
i )j ≥ 0<br />
( λ lo<br />
i )j ≤ ( λi)j ≤ ( λ hi<br />
i )j<br />
( λi)j = ( λ lo<br />
i )j ⇒ (Ai · λ + bi)j ≥ 0<br />
( λi)j = ( λ hi<br />
i )j ⇒ (Ai · λ + bi)j ≤ 0<br />
( λ lo<br />
i )j < ( λi)j < ( λ hi<br />
i )j ⇒ (Ai · λ + bi)j = 0, (6.15)<br />
where Ai and bi are from (6.10). We can now define the constraint properly.<br />
Acceleration-level bounded-equality constraint i affecting bodies Ai and Bi with λi limits λ lo<br />
i ≤<br />
0 and λ hi<br />
i ≥ 0 is defined as an equality constraint<br />
Ji,Ai · aAi + Ji,Bi · aBi = ci, (6.16)<br />
where Ji,Ai and Ji,Bi are mi × 6 Jacobian blocks due to the constraint i and the constrained<br />
bodies, mi is the dimensionality of the constraint, ci is the right-hand side vector of length mi<br />
and λ lo<br />
i and λ hi<br />
i are mi-vectors that specify the lower and upper limits of the components of λi<br />
due to the constraint.<br />
From (6.15) we get<br />
therefore if we set λ lo<br />
i = 0 and λ hi<br />
i<br />
(Ai · λ + bi)j > 0 ⇒ ( λi)j = ( λ lo<br />
i )j<br />
(Ai · λ + bi)j < 0 ⇒ ( λi)j = ( λ hi<br />
i )j,<br />
greater-or-equal constraint (6.12). Similarly, by setting λ lo<br />
i<br />
or-equal constraint (6.14). Finally, by setting λ lo<br />
i<br />
=<br />
−−→<br />
+∞ then the bounded equality constraint turns into a<br />
=<br />
−−→<br />
−∞ and λ hi<br />
i = 0 we get a less-<br />
=<br />
−−→<br />
−∞ and λ hi =<br />
−−→<br />
+∞ we get an unbounded<br />
i