Existem dois tipos de formas e três maneiras de fazê-las no Box2D.
Um b2CircleShape sempre tem seu centro no centro do círculo. Se você deseja fazer um "círculo torto", deve fixar o círculo em outro objeto (por exemplo, um pequeno círculo dentro dele) com uma junta.
Um b2PolygonShape pode ser inicializado com SetAsBox. Por padrão, SetAsBox coloca a origem no meio do retângulo, mas você pode passar um b2Vec2 como o terceiro argumento para colocar a origem em outro lugar.
Um b2PolygonShape não caixa é inicializado com a origem nas coordenadas locais 0,0. Para criar uma forma que estenda apenas uma direção, por exemplo, à direita e para cima, basta especificar coordenadas como (0, 0), (0, 5), (5, 5), (5, 0), construindo a forma apenas ao longo das coordenadas locais que se movem para cima e para a direita (e na ordem de enrolamento no sentido anti-horário).
Lembre-se de que a origem da forma é sempre a coordenada local (0, 0). Se você tentar pensar nisso como "movendo a origem", apenas se confundirá - o que está fazendo é compensar os outros vértices em relação à origem.