J'ai du mal à apprendre et à comprendre box2d. Voici mon problème:Avoir des problèmes de compréhension du positionnement du corps dans Box2d. Des conseils sur la façon dont les choses fonctionnent?
Je suis en train de faire une voiture simple, le corps de la voiture ressemble à ceci pour l'instant:
Maintenant, je suis en train d'ajouter une roue, je crée la corps de la roue et je suppose que je vais lier la roue à la carrosserie de la voiture en utilisant un b2RevolutionJoint. Jusqu'à ce que j'arrive à cette partie, je veux juste être en mesure de positionner la roue à sa place, donc par rapport au BodyCar Body. Comment est-ce que je fais cela correctement?
Ce que j'ai vu en ligne est quelque chose comme ceci:
bodyDef2.position.Set(axle2->GetWorldCenter().x + 1.3*cos(-M_PI/3), axle2->GetWorldCenter().y + 0.3*sin(-M_PI/3));
Cependant, je ne comprends pas les cos et parties du péché de cette expression.
Ce que je suis en train de faire est la suivante:
backWheelDef.position = b2Vec2(carBody->GetWorldCenter().x - 20.0/PTM_RATIO,carBody->GetWorldCenter().y);
Depuis mon Carrosseries sommets définition ressemble à ceci:
b2Vec2 vertices[] = {
b2Vec2(100.0/PTM_RATIO,15.0/PTM_RATIO),
b2Vec2(100.0/PTM_RATIO,30.0/PTM_RATIO),
b2Vec2(50.0/PTM_RATIO,65.0/PTM_RATIO),
b2Vec2(20.0/PTM_RATIO,65.0/PTM_RATIO),
b2Vec2(0.0/PTM_RATIO,45.0/PTM_RATIO),
b2Vec2(0.0/PTM_RATIO,15.0/PTM_RATIO)
};
Le résultat de la manière ci-dessus de positionnement de la roue semble en quelque sorte correct (voir capture d'écran ci-dessous) mais si vous regardez les chiffres ci-dessus, cela n'a pas beaucoup de sens.
Étant donné que la largeur carBody est 100.0/PTM_RATIO, je suppose que GetWorldCenter(). X renvoie une valeur égale à 50.0/PTM_RATIO.
Donc la position de la roue serait après le calcul à 30.0/PTM_RATIO, n'est-ce pas? Eh bien, si vous regardez le résultat sous la roue x le positionnement semble être à 20,0/PTM_RATIO.
Quelqu'un peut-il s'il vous plaît expliquer comment les choses fonctionnent avec les organes de positionnement par rapport aux autres corps travaille dans Box2D? Une fois que je suis clair avec ce genre de choses, je vais passer à les relier en utilisant des joints
Merci beaucoup!
PLUS TARD MODIFIER SUR LA BASE DE RÉPONSE iforce2d:
Merci iforce2d pour répondre et merci pour tout le bien aperçu que vous fournissez dans le monde box2d. Ce que vous dites est parfaitement vrai, mais ce n'était pas ma question. Une fois que j'ai compris que GetWorldCenter renvoie le centre de gravité et que GetPosition renvoie l'origine de la position de l'objet, il était facile de placer ma roue exactement là où j'avais besoin d'être en relation avec le carBody. Même si j'ai toujours le comportement de ce qui apparaît sous le corps, je savais que ce serait corrigé une fois que j'ajouterais des articulations dans l'équation.
Maintenant, j'ai une autre question qui concerne en quelque sorte ce problème de positionnement.Jetez un oeil à l'image ci-dessous:
Est-ce la bonne façon mes articulations doivent regarder une fois que je mets les points d'ancrage comme ci-dessous? Je suis un peu confus par eux allant de l'origine au lieu d'eux allant de anchorPointA à anchorPointB
Merci encore!
Salut, pouvez-vous s'il vous plaît jeter un oeil à ma dernière édition dans ma question et me guider avec ça? Merci! –
Le débogage dessine une ligne entre les positions du corps (pas le centre de masse, qui est ce que sont les petits axes rouges et verts), donc cela semble correct. Si elle trace une ligne entre les positions d'ancrage, vous ne verrez rien car les positions des ancres sont au même endroit (au moins pour un joint rotatif). – iforce2d
Super, merci. Je vais marquer cette réponse comme correcte –