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 |