Исходник ImGui Heart (Rainbow + Animation) | 14 февраля

ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,444
Реакции[?]
1,092
Поинты[?]
10K

1644860876339.png

giphy съело фпс и качество, на самом деле в игре выглядит отлично =)


C++:
            static float rainbow_animation;
            static ImVec2 screen_center = ImGui::GetIO( ).DisplaySize / 2.f;

            rainbow_animation += 0.002f; // 0.002f <-- speed (NOTE: Use ImGui::GetIO( ).DeltaTime to have stable animation speed)
            static const float heart_size = 15.f;

            if ( rainbow_animation > 1.f )
                rainbow_animation = 0.f;            

            auto fdl = ImGui::GetForegroundDrawList( );

            auto fx = [ ] ( float t ) -> float { return 16 * std::pow( std::sin( t ), 3 ); };
            auto fy = [ ] ( float t ) -> float { return 13 * std::cos( t ) - 5 * std::cos( 2 * t ) - 2 * std::cos( 3 * t ) - std::cos( 4 * t ); };

            for ( float sz = heart_size; sz > 0.f; sz -= heart_size / 350.f ) {
                for ( float t = 0.f; t < 2 * sdk::k_pi<float>; t += sdk::k_pi<float> / 48.f ) {
                    auto x = sz * fx( t );
                    auto y = sz * fy( t );

                    fdl->PathLineTo( screen_center - ImVec2( x, y ) );
                }

                float hue = ( 1.f / heart_size ) * sz;
                hue -= rainbow_animation;
                if ( hue < 0.f ) hue += 1.f;

                fdl->PathFillConvex( ImColor( 0, 0, 0 ).HSV( hue, 1.f, 1.f ) );
                fdl->PathClear( );
            }

по вопросам нахуя - нахуй, это просто интересно =)​
 

Вложения

t.me/maj0rblog
Дизайнер
Статус
Оффлайн
Регистрация
6 Окт 2018
Сообщения
975
Реакции[?]
619
Поинты[?]
7K

Посмотреть вложение 192359

giphy съело фпс и качество, на самом деле в игре выглядит отлично =)


C++:
            static float rainbow_animation;
            static ImVec2 screen_center = ImGui::GetIO( ).DisplaySize / 2.f;

            rainbow_animation += 0.002f; // 0.002f <-- speed (NOTE: Use ImGui::GetIO( ).DeltaTime to have stable animation speed)
            static const float heart_size = 15.f;

            if ( rainbow_animation > 1.f )
                rainbow_animation = 0.f;            

            auto fdl = ImGui::GetForegroundDrawList( );

            auto fx = [ ] ( float t ) -> float { return 16 * std::pow( std::sin( t ), 3 ); };
            auto fy = [ ] ( float t ) -> float { return 13 * std::cos( t ) - 5 * std::cos( 2 * t ) - 2 * std::cos( 3 * t ) - std::cos( 4 * t ); };

            for ( float sz = heart_size; sz > 0.f; sz -= heart_size / 350.f ) {
                for ( float t = 0.f; t < 2 * sdk::k_pi<float>; t += sdk::k_pi<float> / 48.f ) {
                    auto x = sz * fx( t );
                    auto y = sz * fy( t );

                    fdl->PathLineTo( screen_center - ImVec2( x, y ) );
                }

                float hue = ( 1.f / heart_size ) * sz;
                hue -= rainbow_animation;
                if ( hue < 0.f ) hue += 1.f;

                fdl->PathFillConvex( ImColor( 0, 0, 0 ).HSV( hue, 1.f, 1.f ) );
                fdl->PathClear( );
            }
по пидорски но код вроде норм
 
правейший
Участник
Статус
Оффлайн
Регистрация
4 Янв 2021
Сообщения
646
Реакции[?]
206
Поинты[?]
2K
а где в названии темы предупреждение об эпилепсии, я тут чуть пеной монтажной моник не залил
 
Легенда форума
Статус
Оффлайн
Регистрация
16 Сен 2018
Сообщения
4,000
Реакции[?]
1,946
Поинты[?]
7K
Выглядит конечно норм, но автор быдло злое.
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,444
Реакции[?]
1,092
Поинты[?]
10K
Сверху Снизу