#include <SFML/Graphics.hpp>
#include <cmath>
int main() {
sf::RenderWindow window(sf::VideoMode(800, 600), "Hand Mouse");
sf::Texture handTexture;
if (!handTexture.loadFromFile("hand.png")) {
return -1;
}
sf::Sprite handSprite(handTexture);
// Установка центра вращения спрайта в его середину
handSprite.setOrigin(handTexture.getSize().x / 2, handTexture.getSize().y / 2);
// Установка начальной позиции спрайта руки
handSprite.setPosition(400, 300); // Например, в центр экрана
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
sf::Vector2i mPos = sf::Mouse::getPosition(window);
// Преобразование векторных координат мыши в координаты окна
sf::Vector2f mPosF(static_cast<float>(mPos.x), static_cast<float>(mPos.y));
// Вычисление разницы между позицией руки и курсора
sf::Vector2f direction = mPosF - handSprite.getPosition();
// Вычисление угла поворота в радианах
float angle = std::atan2(direction.y, direction.x);
// Конвертация угла из радианов в градусы
float angleDegrees = angle * 180.f / 3.14159f;
handSprite.setRotation(angleDegrees);
window.clear();
window.draw(handSprite);
window.display();
}
return 0;
}