Top.Mail.Ru
Ответы

Программирования с++, библиотека sfml

Как найти координату правого верхнего, левого нижнего и т.д углов прямоугольника sfml?

По дате
По рейтингу
Аватар пользователя
Мудрец
8мес

На

1234567891011121314151617181920212223242526272829303132333435363738394041424344
 #include <SFML/Graphics.hpp> 
#include <iostream> 
#include <array> 
 
struct RectangleCorners { 
    sf::Vector2f topLeft; 
    sf::Vector2f topRight; 
    sf::Vector2f bottomLeft; 
    sf::Vector2f bottomRight; 
}; 
 
RectangleCorners calculateCorners(const sf::RectangleShape& rectangle) { 
    sf::Vector2f topLeft = rectangle.getPosition(); 
    sf::Vector2f size = rectangle.getSize(); 
    return { 
        topLeft, 
        {topLeft.x + size.x, topLeft.y}, 
        {topLeft.x, topLeft.y + size.y}, 
        {topLeft.x + size.x, topLeft.y + size.y} 
    }; 
} 
 
void printCorners(const RectangleCorners& corners) { 
    std::array<std::pair<std::string, sf::Vector2f>, 4> cornerNames = { 
        std::make_pair("Top Left", corners.topLeft), 
        std::make_pair("Top Right", corners.topRight), 
        std::make_pair("Bottom Left", corners.bottomLeft), 
        std::make_pair("Bottom Right", corners.bottomRight) 
    }; 
 
    for (const auto& [name, corner] : cornerNames) { 
        std::cout << name << ": (" << corner.x << ", " << corner.y << ")\n"; 
    } 
} 
 
int main() { 
    sf::RectangleShape rectangle(sf::Vector2f(100.0f, 50.0f)); 
    rectangle.setPosition(200.0f, 150.0f); 
 
    RectangleCorners corners = calculateCorners(rectangle); 
    printCorners(corners); 
 
    return 0; 
}