Thursday, February 13, 2025

Circle Animation with ImGui

 Circle Animation with ImGui for C++

Youtube:


Source code:

void CircFunc()
{
    static int nc = 360;
    double radius = 300;
    static float mul = 1;
    ImGui::Begin("Settings");
    ImGui::InputInt("Number", &nc, 2, 1000);
    ImGui::InputFloat("Multiply", &mul, 0.01f, 1.0f, "%.3f");
    ImGui::SliderInt("Number_", &nc, 2, 1000);
    ImGui::SliderFloat("Multiply_", &mul, 0.0f, 100.0f);
    ImGui::End();
    ImGui::Begin("Canvas");
    ImVec2 window_pos = ImGui::GetWindowPos();
    ImVec2 window_size = ImGui::GetWindowSize();
    ImVec2 cent = ImVec2(window_pos.x + window_size.x * 0.5f, window_pos.y + window_size.y * 0.5f);
    ImDrawList* drawlist = ImGui::GetWindowDrawList();
    drawlist->AddCircle(cent, radius, IM_COL32(255, 255, 255, 255));
    double divang = PI2 / nc;
    for (int i=0;i<nc;i++)
    {
        double b = i * mul;
        double x1 = cent.x + cos(i * divang) * radius;
        double y1 = cent.y + sin(i * divang) * radius;
        double x2 = cent.x + cos(b * divang) * radius;
        double y2 = cent.y + sin(b * divang) * radius;
        drawlist->AddLine(ImVec2((float)x1, (float)y1), ImVec2((float)x2, (float)y2), IM_COL32(255, 255, 255, 255));
    }
    ImGui::End();
}

No comments:

Post a Comment

Circle Animation with ImGui

 Circle Animation with ImGui for C++ Youtube: Source code: void CircFunc () {     static int nc = 360 ;     double radius = 300 ;     ...