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