我需要一个函数来创建一个类似于椭圆的二维数组,其中每个单元格都是一个像素,可以打开 (1) 或关闭 (0)。例如,如果您运行circlearray(5,8)
,它将返回如下内容:
[[0, 1, 1, 1, 0],
[0, 1, 1, 1, 0],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 1, 1, 1, 0],
[0, 1, 1, 1, 0]];
我以前试过这个,但似乎无法正确舍入(小数到整数,而不是椭圆)。我使用的公式是:f(x) = h/w * sqrt(w^2 - x^2)
,其中 h 是椭圆顶部的半径长度,w 是椭圆侧面的半径长度。它为您提供了给定行的圆圈应该有多少列,但是对于圆圈,我注意到它的侧面与直立不同,我知道这是不应该的。我似乎无法正确使用Math.round(f(x))
,Math.floor(f(x))
或Math.ceil(f(x))
. 我也不想使用 jQuery。
这是一个 jsFiddle 显示我的发现:http: //jsfiddle.net/r7cH5/
以下是如何使用公式的示例:http: //www.desmos.com/calculator/v5qbcd1jkm