Origine du coffret 2D

8

J'essaie de définir l'origine d'une forme box2d. Par défaut, une forme tourne autour du centre. Mais j'essaie de le faire tourner autour de la gauche de la forme. Comme une horloge par exemple.

J'ai entendu parler de choses comme SetXForm mais cette fonction ne semble même pas exister. J'utilise C ++ au cas où vous auriez besoin de le savoir.

Merci à l'avance, toute aide est appréciée.


la source

Réponses:

6

Il existe deux types de formes et trois façons de les créer dans Box2D.

Une b2CircleShape a toujours son centre au centre du cercle. Si vous voulez faire un "cercle déséquilibré", vous devez fixer le cercle à un autre objet (par exemple un petit cercle à l'intérieur) avec un joint.

Un b2PolygonShape peut être initialisé avec SetAsBox. SetAsBox place par défaut l'origine au milieu du rectangle, mais vous pouvez passer un b2Vec2 comme troisième argument pour placer l'origine ailleurs.

Un b2PolygonShape non-box est initialisé avec l'origine aux coordonnées locales 0,0. Pour créer une forme qui ne s'étend que dans une seule direction, par exemple vers la droite et vers le haut, spécifiez simplement des coordonnées comme (0, 0), (0, 5), (5, 5), (5, 0), en construisant la forme uniquement le long des coordonnées locales qui se déplacent vers le haut et vers la droite (et dans l'ordre d'enroulement CCW).

N'oubliez pas que l'origine de la forme est toujours une coordonnée locale (0, 0). Si vous essayez de le considérer comme "déplacer l'origine", vous allez juste vous confondre - ce que vous faites est de compenser les autres sommets par rapport à l'origine.


la source
2

Peu importe, je trouve la réponse. Apparemment dans la b2PolygonShape, lorsque vous appelez la fonction

SetAsBox ()

Il y a 2 surcharges. Et l'un d'eux est:

SetAsBox (demi-largeur, mi-hauteur, centre, angle);


la source