# Octave: Dotted Circle

I was in need for a tool that generates 2D cartesian coordinates (x/y) of points that are equally spaced on a circle (in Euclidean space). As this was a one-time endeavour I chose to quickly fire up Octave and created a simple function to get the job done:

``````# CIRCLE_POINTS Calculates equally spaced points on a circle.
#
# Inputs:
#   x0    : The X-component of the origin of the circle.
#   y0    : The Y-component of the origin of the circle.
#   count : The number of points on the circle.
#
# Outputs:
#   coords: A 2xcount matrice containing the X & Y coordinates of each point on the circle.
#
# Author: Joel Bodenmann
#
function coords = circle_points(x0, y0, radius, count)
theta = (0:count-1)*2*pi/count;

x = x0 + radius * cos(theta);
y = y0 + radius * sin(theta);

coords = [x; y];
endfunction
``````

There’s nothing surprising going on here: First, we create a list of angles, then we simply calculate X and Y coordinates for each angle. That’s it.

The function can be used like this:

``````# PLOT_2D_COORDINATES    Plots 2D coordinates in a scatter plot.
#
# Inputs:
#   coords    : A cell array where each cell contains a 2xN matrix represending the X & Y components of each coordinate.
#
function plot_2d_coordinates(coords)
# Styling options
dotSize = 15;
color = "b";
style = "filled";

# Plot
hold on;
axis equal;
scatter(coords(1,:), coords(2,:), dotSize, color, style);
set(gca, "xaxislocation", "origin");
set(gca, "yaxislocation", "origin");
hold off;
endfunction

# Calculate points on concentric circles
coords = circle_points(0, 0, 1, 32);

# Plot
figure(1);
clf;
plot_2d_coordinates(coords);
``````

Resulting plot: