Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 绘制具有均匀分布的设定点数的圆_Lua_Geometry_2d - Fatal编程技术网

Lua 绘制具有均匀分布的设定点数的圆

Lua 绘制具有均匀分布的设定点数的圆,lua,geometry,2d,Lua,Geometry,2d,我想知道如果你使用的是以像素为单位的二维坐标系,你会怎么做。我创建了一些例子来说明我的意思: 红点代表原点 灰色圆圈显示半径,但实际上不会绘制 绿点有一个固定的数量,并沿方向均匀分布 圈 有3个点: 有8个点: 在圆上非常容易 对于均匀分布的点,角度将以相同的步长增加 因此,对于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; // circ

我想知道如果你使用的是以像素为单位的二维坐标系,你会怎么做。我创建了一些例子来说明我的意思:

  • 红点代表原点
  • 灰色圆圈显示半径,但实际上不会绘制
  • 绿点有一个固定的数量,并沿方向均匀分布 圈
有3个点:

有8个点:

在圆上非常容易

  • 对于均匀分布的点,角度将以相同的步长增加
  • 因此,对于
    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
 }
inti,n=10;
双x,y,a,da;
双r=100.0,x0=250.0,y0=250.0;//圆定义
da=2.0*M_π/双(n);
对于圆上的(a=0.0,i=0;i非常容易

  • 对于均匀分布的点,角度将以相同的步长增加
  • 因此,对于
    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
 }
inti,n=10;
双x,y,a,da;
双r=100.0,x0=250.0,y0=250.0;//圆定义
da=2.0*M_π/双(n);

对于(a=0,i=0;i Spkrte回答了我的问题,但是在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

SkktRe回答了我的问题,但是在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

第二张图片是8个点…谢谢,更正了错误第二张图片是8个点…谢谢,更正了错误