#!/usr/bin/python3
# ==========================================================
# The equation for a cycloid curve is:
# x = r(θ - sin(θ))
# y = r(1 - cos(θ))
#
# where "r" is the radius of the rolling circle
# and "θ" is the angle of rotation.
# ==========================================================
import math
import matplotlib.pyplot as plt
# ----------------------------------------------------------
# ---- sin curve x,y coordinates
# ----------------------------------------------------------
def sine_curve_xy():
x_coords = []
y_coords = []
for deg in range(0,720,10):
x_coords.append(deg)
y_coords.append(math.sin(math.radians(deg)))
return (x_coords,y_coords)
# ----------------------------------------------------------
# ---- sine curve plot
# ----------------------------------------------------------
def sine_curve_plot():
# ---- define plot
plt.figure(figsize=(8.0,4.0),layout='tight')
plt.title('Sine Curve', fontsize=18)
plt.xlabel('X', fontsize=14)
plt.ylabel('Y', fontsize=14)
plt.grid(True)
# ---- sine plot coordinates
x_coords,y_coords = sine_curve_xy()
# ---- plot sine curve
plt.plot(x_coords,y_coords,color='red',linewidth=1.0)
plt.show()
# ----------------------------------------------------------
# ---- cycloid curve x,y coordinates
# ----------------------------------------------------------
def cycloid_curve_xy(raidus=10):
x_coords = []
y_coords = []
for deg in range(0,720,10):
x = raidus * (deg - math.sin(math.radians(deg)))
x_coords.append(x)
y = raidus * (1 - math.cos(math.radians(deg)))
y_coords.append(y)
return (x_coords,y_coords)
# ----------------------------------------------------------
# ---- cycloid curve plot
# ----------------------------------------------------------
def cycloid_curve_plot():
# ---- define plot
plt.figure(figsize=(8.0,3.0),layout='tight')
plt.title('Cycloid Curve', fontsize=18)
plt.xlabel('X', fontsize=14)
plt.ylabel('Y', fontsize=14)
plt.grid(True)
# cycloid plot coordinates
x_coords,y_coords = cycloid_curve_xy()
# ---- plot cycloid curve
plt.plot(x_coords,y_coords,color='red',linewidth=1.0)
plt.show()
# ----------------------------------------------------------
# ---- main
# ----------------------------------------------------------
if __name__ == '__main__':
##sine_curve_plot()
cycloid_curve_plot()