/**

Each constraint is either a hard constraint or a spring. We define the velocity at the constraint to be

the quantity

v = body0vel.dot(lin0,ang0) - body1vel.dot(lin1, ang1)

For a hard constraint, the solver attempts to generate

- a set of velocities for the objects which, when integrated, respect the constraint errors:

v + (geometricError / timestep) = velocityTarget

- a set of velocities for the objects which respect the constraints:

v = velocityTarget

Hard constraints support restitution: if the impact velocity exceeds the bounce threshold, then the target velocity

of the constraint will be set to restitution * -v

Alternatively, the solver can attempt to resolve the velocity constraint as an implicit spring:

F = stiffness * -geometricError + damping * (velocityTarget - v)

where F is the constraint force or acceleration. Springs are fully implicit: that is, the force or acceleration

is a function of the position and velocity after the solve.

All constraints support limits on the minimum or maximum impulse applied.

*/

[b]I think The comment above is not easy to understand.

I’m not clear about

v = body0vel.dot(lin0,ang0) - body1vel.dot(lin1, ang1)

F = stiffness * -geometricError + damping * (velocityTarget - v)

How to compute the Jacobian of the constraints?

I just know how to solve a linear equations.

J * u = b;

So I think Px1DConstraint is just a row of J,But Why compute a row in this way?

```
PxVec3 linear0; //!< linear component of velocity jacobian in world space
PxReal geometricError; //!< geometric error of the constraint along this axis
PxVec3 angular0; //!< angular component of velocity jacobian in world space
PxReal velocityTarget; //!< velocity target for the constraint along this axis
PxVec3 linear1; //!< linear component of velocity jacobian in world space
PxReal minImpulse; //!< minimum impulse the solver may apply to enforce this constraint
PxVec3 angular1; //!< angular component of velocity jacobian in world space
PxReal maxImpulse; //!< maximum impulse the solver may apply to enforce this constraint
```

[/b]