Wystarczy, że origin prostokąta i koła będzie w tym samym miejscu (globalnie). Pamiętaj jednak, że origin wpływa też na pozycje na ekranie.
Także załóżmy, że masz prostokat o wymiarach {300, 50}. Chcemy, żeby obracał się, powiedzmy wokół środka swojego prawego boku. Więc ustawiamy origin na {300, 25}.
Mamy też koło (sf::CircleShape) o promieniu 40. Chcemy, żeby kręcił się w okół tego samego globalnego punktu, co prostokąt, więc ustawiamy go na tą samą pozycje, co prostokąt, a origin na {400, 20}. 400 - 300 == 100, więc koło będzie 100 jednostek od lewego boku prostokąta. 20 to połowa promienia - origin będzie na wysokości środka koła.
sf::RectangleShape r({300, 50});
r.setOrigin({300, 25});
r.setPosition({500, 500});
sf::CircleShape c(40);
c.setOrigin({400, 20});
c.setPosition({500, 500});
sf::Clock clock;
while(1)
{
float dt = clock.restart().asSeconds();
c.rotate(dt * 10.f);
r.rotate(dt * 10.f);
// rysuj itd
}