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. # radius: The radius 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);