10.08.2013 Views

thesis - Computer Graphics Group - Charles University - Univerzita ...

thesis - Computer Graphics Group - Charles University - Univerzita ...

thesis - Computer Graphics Group - Charles University - Univerzita ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!