C++ SFML,轨道

C++ SFML, orbiting

我最近开始学习SFML,有一个问题,如何让第二个物体在轨道上运动,请帮助。

#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
   RenderWindow window(VideoMode(800, 600), "Hello, world!");

    CircleShape shape(50.f);
    shape.setFillColor(Color::Black);
    shape.setPosition(400,300);
    shape.setOrigin(50,50);

    CircleShape shape2(10.f);
    shape2.setFillColor(Color::Black);
    shape2.setPosition(700,500);
    shape2.setOrigin(10,10);

    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event)) 
        {       
            if (event.type == sf::Event::Closed)        
                window.close();

        }
        window.clear(Color::White);
        window.draw(shape);
        window.draw(shape2);
        window.display();
    }
    return 0;
}

嗯...我不会post完全解决。给你完整的代码不会有教育意义。但我会给你一些提示:) .

  1. 你的世界更新应该在循环中发生。在 while 循环中。你那里有两个。你认为哪一个是更新你的世界的那个?
  2. 笛卡尔坐标系下的圆方程为:(x-a)^2 + (y-b)^2 = r^2
  3. 在 1 的循环中,您应该使用 2 的等式来更新第二个对象 (shape2) 的坐标。
  4. 要执行第 3 点的操作,您有两种可能性:函数 setPosition 和函数 move,都是 class CircleShape.
  5. 的成员

如果您还有其他问题,请在评论中提问。

关于你未来关于堆栈的问题:给我们证明你在解决问题上付出了一些努力。如果问题看起来像我现在要回答的问题,我们认为您只是 post 在这里编辑了它,您正在等待有人为您编写代码。