We have an exciting announcement about badges coming in May 2025. Until then, we will temporarily stop issuing new badges for course completions and certifications. However, all completions will be recorded and fulfilled after May 2025.

Ansys Learning Forum Forums Discuss Simulation Photonics Trapezoidal ring Reply To: Trapezoidal ring

Kirill
Ansys Employee

Hello Rahul,

You’ll need to adjust your px and py coordinates. Check this example:

# Parameters
start_angle = 0.0;       # Start angle in degrees
end_angle = 45.0;        # End angle in degrees
radius = 10.0;           # Radius of the arc
m = 0.55191502449;       # "Magic number" for a 90° arc approximation

# Convert angles to radians
start_angle_rad = start_angle * pi / 180;
end_angle_rad = end_angle * pi / 180;

# Calculate arc angle
arc_angle = end_angle_rad - start_angle_rad;

# Adjust the "magic number" for the specified arc angle
m_adj = m * arc_angle / (pi / 2);

# Calculate control points for Bezier curve approximation
# Starting point (p0)
p0_x = cos(start_angle_rad) * radius;
p0_y = sin(start_angle_rad) * radius;

# First control point (p1)
p1_x = p0_x - sin(start_angle_rad) * m_adj * radius;
p1_y = p0_y + cos(start_angle_rad) * m_adj * radius;

# Ending point (p3)
p3_x = cos(end_angle_rad) * radius;
p3_y = sin(end_angle_rad) * radius;

# Second control point (p2)
p2_x = p3_x + sin(end_angle_rad) * m_adj * radius;
p2_y = p3_y - cos(end_angle_rad) * m_adj * radius;

# Create array of control points
px = [p0_x; p1_x; p2_x; p3_x];
py = [p0_y; p1_y; p2_y; p3_y];
p = [px, py];

# Output
?("Control points:");
?num2str(p, "%.3f");

So for:

px = [10.000; 10.000; 9.022; 7.071];
py = [ 0.000;  2.760; 5.120; 7.071];

you should get an approximation of a 45° arc.

I also suggest reviewing the following resources:

  1. Approximation of a cubic Bézier curve by circular arcs and vice versa – This provides a solid mathematical discussion on the topic.
  2. Approximate a circle with cubic Bézier curves – This source presents a clear discussion on approximation accuracy.
  3. Bézier curves - Desmos calculator – A nice interactive tool to speed up your understanding of Bézier curves.

I hope you find this helpful.

Best regards,
Kirill