【问题标题】:Working out the point on a circle using another point and the angle between them使用另一个点和它们之间的角度计算圆上的点
【发布时间】:2015-03-09 11:11:10
【问题描述】:

我在一个圆心为 (0, 0) 的圆上有一个点,称为 (x1, y1),角度为 A(以度为单位)。我想找到一个函数,它可以让我在圆 (x2, y2) 上找到另一个点,如下所示:

我有一个看起来像这样的函数(我使用的是 c++ sfml)

//sf::Vector2f has two members, x and y, which are both quotes. 
sf::Vector2f findPoint(int A, sf::Vector2f x1y1) 
{
    sf::Vector2f x2y2;
    // Code I need
    return x2y2;
 }

请帮我找到我需要的代码

【问题讨论】:

  • 你试过什么?你考虑过哪些方法?你知道三角函数吗?
  • 我尝试了一些方法,我找出第一个点的角度,然后将其添加到 A,然后从角度找出点,但我不知道最后一个点的足够三角步骤。
  • 为漂亮的图片加一个 ;-) 让我的 ascii 矩阵看起来很垃圾。
  • 我用手机制作的,质量很差:P

标签: c++ sfml trigonometry


【解决方案1】:

最简单的方法是构建一个类,该类在笛卡尔极坐标中模拟一个点。

然后您可以使用 (x1, x2) -> 到极坐标 -> 添加角度 -> 到笛卡尔。

或者,您可以使用广义旋转矩阵

    /  \    /               \/  \ 
    |x2|  = | cos A   -sin A||x1| 
    |y2|    | sin A    cos A||y1| 
    \  /    \               /\  / 

x2 = y1 cos A - y1 sin Ay2 = x1 sin A + y1 cos A

【讨论】:

  • 这似乎不是最简单的方法。
  • 已经在我的脑海中完成了。哪一点是硬的?您知道 x1 = r cos T 和 y1 = r sin T 其中 T 是正 x 轴与从原点到您的点的直线之间的角度,而 r 是该点到原点的距离?你几乎可以从那里开始,如果你觉得自己很聪明,你可以使用复数。
  • 因为我必须创建一个类来模拟这两种类型的坐标。对我来说,只有一个长函数会更容易。
  • 好的。添加了长函数数学。
  • 哦,那更有用,谢谢。你知道我如何用 C++ 编写它吗?我不是很精通矩阵
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
相关资源
最近更新 更多