Spaces:
Runtime error
Runtime error
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| def getSquareY(x): | |
| if x==-1 or x == 1: | |
| return 0 | |
| else: | |
| return 1 | |
| getSquareYVectorised = np.vectorize(getSquareY) | |
| def getCircle(x): | |
| return np.sqrt(1 - np.square(x)) | |
| def transform(x,y,t): | |
| points = np.array([x, y]) | |
| result = t @ points | |
| return result[0,:], result[1,:] | |
| def plotGridLines(xlim,ylim,t,color,label,linewidth): | |
| for i in range(xlim[0]-20,xlim[1]+21): | |
| x = [i,i] | |
| y = [ylim[0]-20,ylim[1]+20] | |
| x,y = transform(x,y,t) | |
| if i == xlim[0]-20: | |
| plt.plot(x,y, color=color,linestyle='dashed',linewidth=linewidth,label=label) | |
| else: | |
| plt.plot(x,y, color=color,linestyle='dashed',linewidth=linewidth) | |
| for i in range(ylim[0]-20,ylim[1]+21): | |
| y = [i,i] | |
| x = [xlim[0]-20,xlim[1]+20] | |
| x,y = transform(x,y,t) | |
| plt.plot(x,y, color=color,linestyle='dashed',linewidth=linewidth) | |
| def discriminant(t): | |
| return t[0,0]**2 - 2*t[1,1]*t[0,0] + t[1,1]**2 + 4*t[0,1]*t[1,0] | |
| def getBatman(s=2): | |
| X = [] | |
| Y = [] | |
| # lower | |
| x = np.linspace(-4, 4, 1600) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y,abs(px/2)- 0.09137*px**2 + np.sqrt(1-(abs(abs(px)-2)-1)**2) -3) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| # lower left | |
| x = np.linspace(-7., -4, 300) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, -3*np.sqrt(-(px/7)**2+1)) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| # lower right | |
| x = np.linspace(4, 7, 300) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, -3*np.sqrt(-(px/7)**2+1)) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| # top left | |
| x = np.linspace(-7, -2.95, 300) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 3*np.sqrt(-(px/7)**2+1)) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| # top right | |
| x = np.linspace(2.95, 7, 300) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 3*np.sqrt(-(px/7)**2+1)) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| # left ear left | |
| x = np.linspace(-1, -.77, 2) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 9-8*abs(px)) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| # right ear right | |
| x = np.linspace(.77, 1, 2) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 9-8*abs(px)) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| # mid | |
| x = np.linspace(-.43, .43, 100) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y,2) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| x = np.linspace(-2.91, -1, 100) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 1.5 - .5*abs(px) - 1.89736*(np.sqrt(3-px**2+2*abs(px))-2) ) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| x = np.linspace(1, 2.91, 100) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 1.5 - .5*abs(px) - 1.89736*(np.sqrt(3-px**2+2*abs(px))-2) ) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| x = np.linspace(-.7,-.43, 10) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 3*abs(px)+.75) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| x = np.linspace(.43, .7, 10) | |
| y = np.zeros((0)) | |
| for px in x: | |
| y = np.append(y, 3*abs(px)+.75) | |
| X.append(x/s) | |
| Y.append(y/s) | |
| return X, Y |