J'utilise Box2D. Comme vous pouvez le voir, il existe trois corps dynamiques connectés les uns aux autres (pensez-y comme une table vue de face). LEG1 et LEG2 sont connectés au corps statique (c'est le corps de masse). Un autre corps dynamique tombe sur la table.
J'ai besoin d'obtenir la compression dans le LEG1 et LEG2 séparément.
Les joints ont une GetReactionForce()
fonction qui renvoie a b2Vec
, qui à son tour a Length()
et LengthSqd()
fonctionne. Cela donnera la somme totale des forces dans n'importe quelle articulation prise. Mais ce dont j'ai besoin, ce sont des forces dans les corps individuels qui sont liées aux articulations. Une fois que vous connectez plusieurs corps avec une seule articulation, cela montrera à nouveau la somme des forces qui n'est pas utile. Voici le cas dont je parle:
la source
Réponses:
Le joint de distance et les joints de soudure contiennent des ancrages locaux. Chaque ancre est relative à l'un des corps reliés par l'articulation. Vous pouvez trouver votre compression d'une articulation individuelle en trouvant la distance entre les deux points d'ancrage dans l'espace mondial.
Vous pouvez utiliser ces fonctions pour les récupérer:
Pour transformer ces points en espace mondial, vous pouvez utiliser la fonction sur chaque corps appelée:
Les joints de soudure (ou joints de distance) doivent utiliser des contraintes douces, sinon l'erreur sera de toute façon négligeable de toute façon.
la source