2011-09-15 47 views
2

我有一个2D坐标点。我需要改变点坐标值以遵循循环路径。在圆形路径上移动一个点

我该如何实现使用C?

+2

你需要让点移动周长? x和y的增量是多少?什么半径和中心点?这是功课吗? –

+4

'#include '并使用'sin()'和'cos()'。你有什么尝试? – pmg

+0

描述使用极坐标的路径。 –

回答

6

你可以用极坐标:

X = R * cos (phi) + center_X 
Y = R * sin (phi) + center_Y 

,改变披在循环。

11

使用正弦和余弦

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的中心是RADUIS
6

或者在角的代替弧度...

#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

0

我相信你对y轴的sin()困惑了cos()。代码应该是: point_y = radius * sin(ctr * 3.1415926f/180.0f)+ center_y;