Войти
ПрограммированиеФорумОбщее

Найти радиус и угол, зная координаты (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
(Правка: 17:12) 17:06, 23 янв 2023

    Имбирная Ведьмочка

radius = sqrt(x^2 + y^2)

Сурьезный математик , во второй степени :)
radius = sqrt(x*x + y*y);

А лучше вообще без sqrt и x*x и y*y
radius = abs(x) + abs(y);

#16
(Правка: 17:36) 17:28, 23 янв 2023

ronniko
сотри последнюю строку, пока никто не видел...
или замени на это radius = X/abs(cos (A));
где А = atan(Y/X);

#17
19:28, 23 янв 2023

ronniko
> А лучше вообще без sqrt и x*x и y*y
> radius = abs(x) + abs(y);
Что-то у тебя квадратный радиус какой-то выходит:
https://www.shadertoy.com/view/dtXXz7

#18
19:36, 23 янв 2023

MrShoor
> Что-то у тебя квадратный радиус какой-то выходит:

В тяжелые времена π может достигать четырех...

#19
(Правка: 20:27) 20:21, 23 янв 2023

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);
    }
    
}
#20
(Правка: 24 янв 2023, 11:48) 21:38, 23 янв 2023

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);
    }
   
}

#21
(Правка: 24 янв 2023, 3:03) 22:18, 23 янв 2023

ivashko
> radius = X/abs(cos (A))
Гланды через анус.

Кстати, даёт неправильный ответ при x=0.

ivashko
> atan(y/x)
Даёт неправильный ответ при

UPD
                                                x=0 и при x<0. Написал раздельно, потому что ответы неправильные по-разному - неправильный знак в одном случае и полное запитушение значащих цифр в другом.

#22
(Правка: 23:55) 23:51, 23 янв 2023

ivashko
> Когда я учился в 5м классе, у меня не было компа! Компов тогда не было... А у
> вас уже есть! Такими темпами вы далеко пойдёте. Главное школу не
> забрасывайте...
Тебе бы окна открыть.
Интересно как далеко ты ушёл? Наверняка с таким багажом знаний тригонометрии из 6 класса, ты уже меценат?

#23
10:07, 24 янв 2023

интересно, что компьютер быстрее посчитает, деление чисел или косинус числа?

#24
11:21, 24 янв 2023

Mirrel
> интересно, что компьютер быстрее посчитает, деление чисел или косинус числа?
Это ты к чему?

#25
11:43, 24 янв 2023

}:+()___ [Smile]
> В тяжелые времена π может достигать четырех

А то! Берем квадрат (периметр = 4), загибаем углы до соприкосновения с окружностью (периметр = 4), оставшиеся уголки снова загибаем до соприкосновения с окружностью (периметр = 4), и повторяем так до тех пор, пока визуально результат не перестанет отличаться от окружности (но периметр все также = 4).

#26
11:54, 24 янв 2023

Имбирная Ведьмочка
> Это ты к чему?
что будет проще и быстрее посчитать отношение прилежащего катета к гипотенузе или косинус угла?

#27
(Правка: 11:59) 11:57, 24 янв 2023

Имбирная Ведьмочка
> Кстати, даёт неправильный ответ при 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
тот же совет. Можно и с закрытыми окнами. Всё -равно сработает.
И кстати, условие было - " в одну строку". Угол надо было считать отдельно.

#28
(Правка: 12:04) 12:02, 24 янв 2023

Mirrel
> отношение прилежащего катета к гипотенузе
вот её то "к гипотенузе" и надо было найти...
так что перефразируйте вопрос, что быстрее - 2 квадрата, сумма и корень или одно деление и один косинус.

#29
12:25, 24 янв 2023

https://www.gamedev.ru/code/forum/?id=91557

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее