Search code examples
matlaboctavemobius

Coordinates of the edge of a Mobius strip


Here is a Octave/Matlab code for generating a Mobius strip.

u = linspace(0,2*pi,100);
v = linspace(-1.0,1.0,100);
[u,v] = meshgrid(u,v);

x = (1+v.*cos(u/2)).*cos(u);
y = (1+v.*cos(u/2)).*sin(u);
z = v.*sin(u/2);

plot3(x,y,z)

The output is as follow. In this, strip, I need the edge coordinates (XYZ). How I can get the XYZ coordinates of the edge?

Mobius strip


Solution

  • I could do this using python as follows. See a related post here

    bLength=1.6
    numPoints=10
    radius = bLength*numPoints / (2 * np.pi)
    theta = np.linspace(0,2*np.pi,numPoints,endpoint=False)
    dtheta=theta[1]-theta[0]
    
    x0,y0=(radius * np.cos(theta)), (radius * np.sin(theta))
    x1,y1=(radius * np.cos(theta+dtheta/2)) , (radius * np.sin(theta+dtheta/2))
    cons0=np.ones(x0.shape)*0
    cons1=np.ones(x1.shape)*2
    
    np.savetxt('cooRing00.csv',np.c_[x0,y0,cons0],delimiter=' ',fmt='%10f')
    np.savetxt('cooRing01.csv',np.c_[x1,y1,cons1],delimiter=' ',fmt='%10f')