在圆形路径上移动一个点

3

我有一个二维坐标点。我需要改变这个点的坐标值,以便沿着圆形路径移动。

我应该如何使用C语言实现这个功能?


2
你需要让这个点沿周长移动吗?x和y的增量是多少?半径和中心点在哪里?这是作业吗? - Jonathan M
4
õ¢áÕ░ØÞ»òÞ┐çõ¢┐þö¿#include <math.h>µØÑÞ░âþö¿sin()ÕÆîcos()Õ碵ò░ÕÉù´╝ƒ - pmg
用极坐标描述路径。 - i_am_jorf
4个回答

16
使用正弦和余弦
for (double t = 0; t < 2*Pi; t += 0.01) {
    x = R*cos(t) + x_0;
    y = R*sin(t) + y_0;
}

其中:

  • (x_0, y_0)是圆的中心坐标
  • R是半径

8

或者用角度代替弧度...

#include <math.h>

void Circle(float center_x, float center_y, float radius)
{
    float point_x, point_y;
    int ctr;
    for (ctr = 0; ctr < 360; ctr += 1)
    {
        point_x = radius * cos(ctr * 3.1415926f / 180.0f) + center_x;
        point_y = radius * cos(ctr * 3.1415926f / 180.0f) + center_y;
    }
}

绘制一个围绕中心点每次1度的圆。您可以通过任意增加ctr来调整步长。


1
除非有充分的理由,否则在C语言中应优先使用“double”。您代码中的浮点变量和常量都应该是“double”类型。 - pmg

7
您可以使用极坐标:
X = R * cos (phi) + center_X
Y = R * sin (phi) + center_Y

并且更改循环中的phi。


1
我认为你混淆了y轴上的cos()和sin()。代码应该是: point_y = radius * sin(ctr * 3.1415926f / 180.0f) + center_y;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接