绘制一个具有均匀分布的点数的圆
Drawing a circle with an evenly-distributed set-amount of points
我想知道假设您正在使用以像素为单位的 2D 坐标系,您将如何处理这个问题。我创建了一些例子来说明我的意思:
- 红点代表原点
- 灰色圆圈显示半径但实际上不会被绘制
- 绿点有固定的数量并且沿着
圈子
有 3 个点:
http://prntscr.com/5vbj86
有 8 个点:
http://prntscr.com/5vbobd
上圈很容易
- 对于均匀分布的点,角度以相同的步长增加
- 所以对于
N
点,步骤是 da=2.0*M_PI/N;
C++中的代码是这样的:
int i,n=10;
double x,y,a,da;
double r=100.0,x0=250.0,y0=250.0; // circle definition
da=2.0*M_PI/double(n);
for (a=0.0,i=0;i<n;i++,a+=da)
{
x=x0+r*cos(a);
y=y0+r*sin(a);
// here draw or do something with (x,y) point
}
Spektre 回答了我的问题,但在 C++ 中,它在 lua 中供任何感兴趣的人使用:
local x,y
local n = 10
local r = 100.0
local x0 = 250.0
local y0 = 250.0
local da = 2.0 * math.pi/n
local a = 0.0
for i = 0, n - 1 do
x = x0 + r * math.cos(a)
y = y0 + r * math.sin(a)
-- draw here using x,y
a = a + da
end
我想知道假设您正在使用以像素为单位的 2D 坐标系,您将如何处理这个问题。我创建了一些例子来说明我的意思:
- 红点代表原点
- 灰色圆圈显示半径但实际上不会被绘制
- 绿点有固定的数量并且沿着 圈子
有 3 个点: http://prntscr.com/5vbj86
有 8 个点: http://prntscr.com/5vbobd
上圈很容易
- 对于均匀分布的点,角度以相同的步长增加
- 所以对于
N
点,步骤是da=2.0*M_PI/N;
C++中的代码是这样的:
int i,n=10;
double x,y,a,da;
double r=100.0,x0=250.0,y0=250.0; // circle definition
da=2.0*M_PI/double(n);
for (a=0.0,i=0;i<n;i++,a+=da)
{
x=x0+r*cos(a);
y=y0+r*sin(a);
// here draw or do something with (x,y) point
}
Spektre 回答了我的问题,但在 C++ 中,它在 lua 中供任何感兴趣的人使用:
local x,y
local n = 10
local r = 100.0
local x0 = 250.0
local y0 = 250.0
local da = 2.0 * math.pi/n
local a = 0.0
for i = 0, n - 1 do
x = x0 + r * math.cos(a)
y = y0 + r * math.sin(a)
-- draw here using x,y
a = a + da
end