Мне нужна функция, которая создает 2D-массив, похожий на эллипс, где каждая ячейка является пикселем, который может быть включен (1) или выключен (0). Например, если вы запускали circlearray(5,8)
, она возвращает что-то вроде:Как сделать 2D-массив похожим на эллипс
[[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
Можете ли вы сделать jsfiddle для нас, чтобы играть? :) – naththedeveloper
Имейте в виду, что способ отображения массива не будет соответствовать тому, как он отображается в виде растрового изображения, поскольку вы используете символы, которые имеют соотношение сторон примерно 0,4 вместо 1,0. –