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完全解决。给你完整的代码不会有教育意义。但我会给你一些提示:) .
- 你的世界更新应该在循环中发生。在 while 循环中。你那里有两个。你认为哪一个是更新你的世界的那个?
- 笛卡尔坐标系下的圆方程为:
(x-a)^2 + (y-b)^2 = r^2
- 在 1 的循环中,您应该使用 2 的等式来更新第二个对象 (shape2) 的坐标。
- 要执行第 3 点的操作,您有两种可能性:函数
setPosition
和函数 move
,都是 class CircleShape
. 的成员
如果您还有其他问题,请在评论中提问。
关于你未来关于堆栈的问题:给我们证明你在解决问题上付出了一些努力。如果问题看起来像我现在要回答的问题,我们认为您只是 post 在这里编辑了它,您正在等待有人为您编写代码。
我最近开始学习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完全解决。给你完整的代码不会有教育意义。但我会给你一些提示:) .
- 你的世界更新应该在循环中发生。在 while 循环中。你那里有两个。你认为哪一个是更新你的世界的那个?
- 笛卡尔坐标系下的圆方程为:
(x-a)^2 + (y-b)^2 = r^2
- 在 1 的循环中,您应该使用 2 的等式来更新第二个对象 (shape2) 的坐标。
- 要执行第 3 点的操作,您有两种可能性:函数
setPosition
和函数move
,都是 classCircleShape
. 的成员
如果您还有其他问题,请在评论中提问。
关于你未来关于堆栈的问题:给我们证明你在解决问题上付出了一些努力。如果问题看起来像我现在要回答的问题,我们认为您只是 post 在这里编辑了它,您正在等待有人为您编写代码。