Commit ca142c4e authored by Nicolas Nunez Barreto's avatar Nicolas Nunez Barreto

agregue para plotear dos tenedores. tiene la opcion de que sean horizontales o...

agregue para plotear dos tenedores. tiene la opcion de que sean horizontales o verticales. y tambien saque todos los espacios entre los patrones asi que esta todo muy optimizado
parent 27627ced
......@@ -66,29 +66,36 @@ def arbpower_sawtooth(t, power, width=1):
def on_key(event):
xlim = ax.get_xlim()
ylim = ax.get_ylim()
step_sizex = (max(xlim) - min(xlim))/len(x) # Ajusta este valor para cambiar la velocidad de desplazamiento
step_sizey = (max(ylim) - min(ylim))/len(y)
print(max(xlim))
step_sizex = (max(xlim) - min(xlim))/len(y) # Ajusta este valor para cambiar la velocidad de desplazamiento
step_sizey = (max(ylim) - min(ylim))/len(x)
# print(step_sizex)
# print(step_sizey)
if event.key == "right":
ax.set_xlim(xlim[0] - step_sizex, xlim[1] - step_sizex) # Mover derecha
ax.set_xlim(xlim[0] - step_sizey, xlim[1] - step_sizey) # Mover derecha
elif event.key == "left":
ax.set_xlim(xlim[0] + step_sizex, xlim[1] + step_sizex) # Mover izquierda
ax.set_xlim(xlim[0] + step_sizey, xlim[1] + step_sizey) # Mover izquierda
elif event.key == "up":
ax.set_ylim(ylim[0] - step_sizey, ylim[1] - step_sizey) # Mover arriba
ax.set_ylim(ylim[0] - step_sizex, ylim[1] - step_sizex) # Mover arriba
elif event.key == "down":
ax.set_ylim(ylim[0] + step_sizey, ylim[1] + step_sizey) # Mover abajo
ax.set_ylim(ylim[0] + step_sizex, ylim[1] + step_sizex) # Mover abajo
fig.canvas.draw_idle() # Redibujar la imagen sin regenerarla
#%%
"""
Codigo para hacer un tenedor con todo ajustado y andando
"""
size=1 #esto en realidad no cambia absolutamente nada
Nx = 800
Ny = 600
Nx = 8
Ny = 6
linewidth = 300
linewidth = 1200
k = 1*np.pi/((linewidth/10000)*size)
......@@ -139,3 +146,129 @@ print(f'done {p}')
# Conectar la función al evento de teclado
fig.canvas.mpl_connect("key_press_event", on_key)
#%%
"""
Codigo para hacer dos tenedores de helicidades l1 y l2
"""
size=1 #esto en realidad no cambia absolutamente nada
Nx = 800
Ny = 300
linewidth = 300
k = 1*np.pi/((linewidth/10000)*size)
l1, l2 = 1, 1 #para usar redes comunes pone l=0
mini, maxi = 0,255 #numeros de 0 a 255 que definen los tonos de gris de las franjas
binary = 'binary' #posibles: binary o notbinary. para usar blaze usa notbinary
orientation = 'vertical' #posibles: vertical (tenedores uno arriba del otro) u horizontal (tenedores uno al lado del otro)
Inverted=True
Blaze=False
bfactor = 2
print("aguante boca")
# Phase = [0,45,90,135,180]
Phase = [0]
for p in Phase:
# p = 90
phase = p*np.pi/180
binaryfactor = 0.5
if binary == 'binary':
Pattern1, x1, y1 = Grating(np.pi/((linewidth/10000)*size), l1, size, Binary=True, Blaze=Blaze, Inverted=Inverted, powerblaze=bfactor, BinaryFactor=binaryfactor, Nx=Nx, Ny=Ny, phase1storder=phase, mini=mini, maxi=maxi)
Pattern2, x2, y2 = Grating(np.pi/((linewidth/10000)*size), l2, size, Binary=True, Blaze=Blaze, Inverted=Inverted, powerblaze=bfactor, BinaryFactor=binaryfactor, Nx=Nx, Ny=Ny, phase1storder=phase, mini=mini, maxi=maxi)
else:
Pattern1, x1, y1 = Grating(np.pi/((linewidth/10000)*size), l1, size, Binary=False, Blaze=Blaze, Inverted=Inverted, powerblaze=bfactor, BinaryFactor=binaryfactor, Nx=Nx, Ny=Ny, phase1storder=phase, mini=mini, maxi=maxi)
Pattern2, x2, y2 = Grating(np.pi/((linewidth/10000)*size), l2, size, Binary=False, Blaze=Blaze, Inverted=Inverted, powerblaze=bfactor, BinaryFactor=binaryfactor, Nx=Nx, Ny=Ny, phase1storder=phase, mini=mini, maxi=maxi)
def on_key2(event):
xlim1, ylim1 = ax1.get_xlim(), ax1.get_ylim()
xlim2, ylim2 = ax2.get_xlim(), ax2.get_ylim()
step_sizex1 = (max(xlim1) - min(xlim1))/len(y1) # Ajusta para cambiar la velocidad
step_sizey1 = (max(ylim1) - min(ylim1))/len(x1)
step_sizex2 = (max(xlim2) - min(xlim2))/len(y2) # Ajusta para cambiar la velocidad
step_sizey2 = (max(ylim2) - min(ylim2))/len(x2)
# print(step_sizex)
# print(step_sizey)
# xlim = ax.get_xlim()
# ylim = ax.get_ylim()
# step_sizex = (max(xlim) - min(xlim))/len(x) # Ajusta este valor para cambiar la velocidad de desplazamiento
# step_sizey = (max(ylim) - min(ylim))/len(y)
# Verifica si Shift está presionado para determinar cuál patrón mover
if event.key == "shift+right":
xlim2 = (xlim2[0] - step_sizex2, xlim2[1] - step_sizex2)
ax2.set_xlim(xlim2)
elif event.key == "shift+left":
xlim2 = (xlim2[0] + step_sizex2, xlim2[1] + step_sizex2)
ax2.set_xlim(xlim2)
elif event.key == "shift+up":
ylim2 = (ylim2[0] - step_sizey2, ylim2[1] - step_sizey2)
ax2.set_ylim(ylim2)
elif event.key == "shift+down":
ylim2 = (ylim2[0] + step_sizey2, ylim2[1] + step_sizey2)
ax2.set_ylim(ylim2)
elif event.key == "right":
xlim1 = (xlim1[0] - step_sizex1, xlim1[1] - step_sizex1)
ax1.set_xlim(xlim1)
elif event.key == "left":
xlim1 = (xlim1[0] + step_sizex1, xlim1[1] + step_sizex1)
ax1.set_xlim(xlim1)
elif event.key == "up":
ylim1 = (ylim1[0] - step_sizey1, ylim1[1] - step_sizey1)
ax1.set_ylim(ylim1)
elif event.key == "down":
ylim1 = (ylim1[0] + step_sizey1, ylim1[1] + step_sizey1)
ax1.set_ylim(ylim1)
fig.canvas.draw_idle() # Redibujar la imagen sin regenerarla
if orientation=='vertical':
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6), dpi=100)
elif orientation=='horizontal':
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 6), dpi=100)
else:
print('no se entendio la orientacion')
raise
# Grafica Pattern1 en el primer eje
ax1.pcolor(Pattern1, cmap='gray', vmin=0, vmax=255,edgecolors='none')
ax1.set_xticks([])
ax1.set_yticks([])
for spine in ax1.spines.values():
spine.set_visible(False)
# Grafica Pattern2 en el segundo eje
ax2.pcolor(Pattern2, cmap='gray', vmin=0, vmax=255,edgecolors='none')
ax2.set_xticks([])
ax2.set_yticks([])
for spine in ax2.spines.values():
spine.set_visible(False)
# Configuración para pantalla completa y sin bordes
plt.subplots_adjust(left=0, right=1, top=1, bottom=0, wspace=0, hspace=0)
manager = plt.get_current_fig_manager()
manager.full_screen_toggle()
fig.canvas.window().statusBar().setVisible(False)
manager.toolbar.hide()
plt.show()
def on_keytest(event):
print('you pressed', event.key, event.xdata, event.ydata)
print(f'done {p}')
# Conectar la función al evento de teclado
fig.canvas.mpl_connect("key_press_event", on_key2)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment