| 1234567891011121314151617181920212223242526272829303132333435 |
- import plotly.graph_objects as go
- import numpy as np
-
- # Define the curvature function
- def kappa(x):
- return (1-((-((-1)**np.floor(x/np.pi*2)*(np.exp(-1/((x/np.pi*2)-np.floor((x/np.pi*2))))
- /(np.exp(-1/((x/np.pi*2)-np.floor((x/np.pi*2))))+np.exp(-1/(1-(x/np.pi*2)+np.floor((x/np.pi*2))))))) +
- ((-1)**np.floor((x/np.pi*2)/1)*(np.exp(-1/(1-(x/np.pi*2)+np.floor((x/np.pi*2))))/(np.exp(-1/((x/np.pi*2)-
- np.floor((x/np.pi*2))))+np.exp(-1/(1-(x/np.pi*2)+np.floor((x/np.pi*2))))))))/2 + .5))
-
- # Generate x values
- x_vals = np.linspace(0, 4*np.pi, 1000)
-
- # Compute kappa values
- kappa_vals = kappa(x_vals)
-
- # Integrate kappa values to get theta values (angles)
- theta_vals = np.cumsum(kappa_vals) * (x_vals[1]-x_vals[0])
-
- # Compute x and y coordinates of the curve
- x_coords = np.cumsum(np.cos(theta_vals)) * (x_vals[1]-x_vals[0])
- y_coords = np.cumsum(np.sin(theta_vals)) * (x_vals[1]-x_vals[0])
-
- # Create a plot using plotly
- fig = go.Figure()
-
- # Add line to the figure for the curve
- fig.add_trace(go.Scatter(x=x_coords, y=y_coords, mode='lines', name='Curve'))
-
- # Update layout
- fig.update_layout(
- autosize=True,
- xaxis=dict(scaleanchor='y', scaleratio=1) # this line sets the aspect ratio
- )
- fig.show()
|