MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ circle_outline()

MAYAFLUX_API std::vector< Kakshya::LineVertex > MayaFlux::Kinesis::circle_outline ( glm::vec2  center,
float  radius,
uint32_t  segments,
glm::vec3  color = glm::vec3(1.F),
float  thickness = 1.F 
)

Circle outline as a LINE_LIST (closed loop, 2 * segments vertices).

Each segment is one line: [ring[i], ring[(i+1) % segments]]. Minimum segments is 3.

Parameters
centerCircle center in NDC.
radiusRadius in NDC units.
segmentsEdge count around the circumference.
colorUniform line color.
thicknessLine thickness (maps to LineVertex::thickness).

Definition at line 225 of file Geometry2D.cpp.

228{
229 segments = std::max<uint32_t>(segments, k_min_segments);
230 const float step = glm::two_pi<float>() / static_cast<float>(segments);
231
232 std::vector<Kakshya::LineVertex> out;
233 out.reserve(static_cast<size_t>(segments) * 2);
234
235 for (uint32_t i = 0; i < segments; ++i) {
236 const float a0 = static_cast<float>(i) * step;
237 const float a1 = static_cast<float>((i + 1) % segments) * step;
238 out.push_back(lvert2(ring_point(center, radius, a0), color, thickness));
239 out.push_back(lvert2(ring_point(center, radius, a1), color, thickness));
240 }
241
242 return out;
243}