Имбирная Ведьмочка
radius = sqrt(x^2 + y^2)
Сурьезный математик , во второй степени :)
radius = sqrt(x*x + y*y);
А лучше вообще без sqrt и x*x и y*y
radius = abs(x) + abs(y);
ronniko
сотри последнюю строку, пока никто не видел...
или замени на это radius = X/abs(cos (A));
где А = atan(Y/X);
ronniko
> А лучше вообще без sqrt и x*x и y*y
> radius = abs(x) + abs(y);
Что-то у тебя квадратный радиус какой-то выходит:
https://www.shadertoy.com/view/dtXXz7
MrShoor
> Что-то у тебя квадратный радиус какой-то выходит:
В тяжелые времена π может достигать четырех...
MrShoor
> Что-то у тебя квадратный радиус какой-то выходит:
лучше так.
void mainImage( out vec4 fragColor, in vec2 fragCoord ) { float x = fragCoord.x - iResolution.x*0.5; float y = fragCoord.y - iResolution.y*0.5; //float radius = abs(x) + abs(y); float a= atan(y/x); float radius = abs(x/cos(a)); if (radius < 100.0) { fragColor = vec4(1.0); } else { fragColor = vec4(0.0,0.0,0.0,1.0); } }
MrShoor
Попробуй так. Офигеешь :)
float radius = 12.0/cos(abs(x) + abs(y));
Или float radius = abs(x*1.5 * y); как прицел крестом.
И это float radius = (abs(x*0.3*y ) + 1000.0/abs(y*0.99+x*0.9))*2.2; как прицел крестом.
Или float radius = 1.0/cos(abs(x) * abs(y));
Или float radius = y+(abs(x) + abs(y))*1.8;
Или float radius = x*y+(abs(x) + abs(y))*10.8;
Или это классно.
float radius = 2.5/sin(abs(x) * abs(y));
radius = sqrt(x*y+(abs(x) + abs(y))*10.8/radius);
А так вообще, магия.
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
float x = fragCoord.x - iResolution.x*0.5;
float y = fragCoord.y - iResolution.y*0.5;
float radius = abs(x*1.5 * y);
if (cos(radius*40.5)+99.8 < 100.0) {
fragColor = vec4(1.0);
} else {
fragColor = vec4(0.0,0.0,0.0,1.0);
}
}
ivashko
> radius = X/abs(cos (A))
Гланды через анус.
Кстати, даёт неправильный ответ при x=0.
ivashko
> atan(y/x)
Даёт неправильный ответ при
UPD
x=0 и при x<0. Написал раздельно, потому что ответы неправильные по-разному - неправильный знак в одном случае и полное запитушение значащих цифр в другом.
ivashko
> Когда я учился в 5м классе, у меня не было компа! Компов тогда не было... А у
> вас уже есть! Такими темпами вы далеко пойдёте. Главное школу не
> забрасывайте...
Тебе бы окна открыть.
Интересно как далеко ты ушёл? Наверняка с таким багажом знаний тригонометрии из 6 класса, ты уже меценат?
интересно, что компьютер быстрее посчитает, деление чисел или косинус числа?
Mirrel
> интересно, что компьютер быстрее посчитает, деление чисел или косинус числа?
Это ты к чему?
}:+()___ [Smile]
> В тяжелые времена π может достигать четырех
А то! Берем квадрат (периметр = 4), загибаем углы до соприкосновения с окружностью (периметр = 4), оставшиеся уголки снова загибаем до соприкосновения с окружностью (периметр = 4), и повторяем так до тех пор, пока визуально результат не перестанет отличаться от окружности (но периметр все также = 4).
Имбирная Ведьмочка
> Это ты к чему?
что будет проще и быстрее посчитать отношение прилежащего катета к гипотенузе или косинус угла?
Имбирная Ведьмочка
> Кстати, даёт неправильный ответ при x=0.
а ты пробовал?
зайди сюда
https://www.shadertoy.com/view/dtXXz7
и подставь это.
void mainImage( out vec4 fragColor, in vec2 fragCoord ) { float x = fragCoord.x - iResolution.x*0.5; float y = fragCoord.y - iResolution.y*0.5; //float radius = abs(x) + abs(y); float a= atan(y/x); float radius = abs(x/cos(a)); if (radius < 100.0) { fragColor = vec4(1.0); } else { fragColor = vec4(0.0,0.0,0.0,1.0); } }
будешь удивлён.
Kripto289
тот же совет. Можно и с закрытыми окнами. Всё -равно сработает.
И кстати, условие было - " в одну строку". Угол надо было считать отдельно.
Mirrel
> отношение прилежащего катета к гипотенузе
вот её то "к гипотенузе" и надо было найти...
так что перефразируйте вопрос, что быстрее - 2 квадрата, сумма и корень или одно деление и один косинус.