FarseerPhysics.Dynamics.Joints.RopeJoint.solvePositionConstraints C# (CSharp) Méthode

solvePositionConstraints() private méthode

private solvePositionConstraints ( SolverData &data ) : bool
data SolverData
Résultat bool
		internal override bool solvePositionConstraints( ref SolverData data )
		{
			Vector2 cA = data.positions[_indexA].c;
			float aA = data.positions[_indexA].a;
			Vector2 cB = data.positions[_indexB].c;
			float aB = data.positions[_indexB].a;

			Rot qA = new Rot( aA ), qB = new Rot( aB );

			Vector2 rA = MathUtils.mul( qA, localAnchorA - _localCenterA );
			Vector2 rB = MathUtils.mul( qB, localAnchorB - _localCenterB );
			Vector2 u = cB + rB - cA - rA;

			float length = u.Length(); u.Normalize();
			float C = length - maxLength;

			C = MathUtils.clamp( C, 0.0f, Settings.maxLinearCorrection );

			float impulse = -_mass * C;
			Vector2 P = impulse * u;

			cA -= _invMassA * P;
			aA -= _invIA * MathUtils.cross( rA, P );
			cB += _invMassB * P;
			aB += _invIB * MathUtils.cross( rB, P );

			data.positions[_indexA].c = cA;
			data.positions[_indexA].a = aA;
			data.positions[_indexB].c = cB;
			data.positions[_indexB].a = aB;

			return length - maxLength < Settings.linearSlop;
		}