【问题标题】:How to find the coordinates of a rectangle shape in SFML?如何在 SFML 中找到矩形的坐标?
【发布时间】:2019-09-13 09:37:36
【问题描述】:

我想用矩形在屏幕上画一条连续的线。我已经修改了矩形形状的厚度,所以它看起来是一条线,而不是矩形。现在,因为我想绘制不同的矩形形状,所以我需要知道形状的坐标以便我可以调整它们,但是给出的函数,GetPoint 只给我一个包含两个值的向量,当矩形有4分。也许这是一个愚蠢的问题,但我怎样才能得到形状的坐标,如果有旋转,我该怎么做?我在 sfml 上读到函数 GetPoint 没有考虑旋转和其他事情。 我附上了我想做的事情的链接。 所以我想制作一个矩形形状列表,看起来像线条,为旋转生成一个随机角度,然后制作一个函数来设置图片中的位置(尽管,我不知道我的想法是否可行,如果有更简单的方法,请随时提出想法)。

https://imgur.com/a/KUwqn9M

【问题讨论】:

    标签: c++ sfml rectangles


    【解决方案1】:

    您可以使用 getPoint(index) 获取形状的所有点,索引范围为 0 到 Shape::getPointCount()(在您的情况下应该为 4)。您可以使用自定义矩阵进一步转换这些点以获得真实世界位置。

    sf::Shape myShape = /* ... */;
    sf::Transform matrix = /* could be myShape.getTransform() */;
    for (int i = 0; i < myShape.getPointCount(); ++i) {
        const auto pointInModelSpace = matrix.transformPoint(myShape.getPoint(i));
    }
    

    【讨论】:

    • 问题,如果我改为 for (int i=0; i
    • 好的,我尝试运行 std::cout
    • sf::Vector2f 没有cout 的重载运算符,您需要分别打印值xy。否则你的循环是正确的。 sf::Shape 派生自sf::Transformable,它存储每个形状的局部模型矩阵(由setPosition 等修改)。您应该查看 sfml 文档。
    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多