You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.2 KiB
70 lines
2.2 KiB
'''
|
|
Codigo para seleccionar en un rango de +-z
|
|
Los datos de filtro estan en el plano z = 0
|
|
'''
|
|
import orthopoly
|
|
import numpy as np
|
|
import Codigo2D_CodigoBaseFiltro as c4
|
|
# from Codigo1 import msph_mcart,mcart_msph
|
|
|
|
def public_c2s(posicionescart):
|
|
'''
|
|
De cartesianas a esfericas (c2s) de forma publica
|
|
'''
|
|
x,y,z = posicionescart.T
|
|
r,theta,phi = orthopoly.spherical_harmonic.cart2sph(-x,-y,z) #Bug in library
|
|
return np.asarray([r,theta,phi]).T
|
|
|
|
def public_s2c(posicionesesf):
|
|
'''
|
|
De esfericas a cartesianas (s2c) de forma publica
|
|
'''
|
|
r,theta,phi = posicionesesf.T
|
|
x,y,z = orthopoly.spherical_harmonic.sph2cart(r,theta,phi)
|
|
return np.asarray([x,y,z]).T
|
|
|
|
def msph_mcart(matrizsph):
|
|
tiempo = matrizsph.shape[0]
|
|
matrizcart = (public_s2c(matrizsph.reshape(-1, 3))).reshape(tiempo, -1, 3)
|
|
return matrizcart
|
|
|
|
def mcart_msph(matrizcart):
|
|
tiempo = matrizcart.shape[0]
|
|
matrizsph = (public_c2s(matrizcart.reshape(-1, 3))).reshape(tiempo, -1, 3)
|
|
return matrizsph
|
|
|
|
def funciondefiltro(Datoscart,selectz,cte):
|
|
|
|
'''
|
|
# cte es para ajustar las unidades, el codigo da del orden de 10**1
|
|
'''
|
|
|
|
Datosesf = mcart_msph(Datoscart)
|
|
|
|
Datosesf[:,:,0] = Datosesf[:,:,0]/(cte) # Normalizamos
|
|
Datoscart = msph_mcart(Datosesf)
|
|
|
|
contador = c4.contarpuntos(selectz,Datoscart) # Contamos el numero de puntos que cumplen la condicion en cada tiempo
|
|
filtro1 = c4.datosfiltrados(selectz,Datoscart) # Filtramos los puntos (nota: la matriz contiene filas de ceros, el numero de filas de ceros varian en el tiempo)
|
|
filtroesf1 = c4.mcart_msph_filtrado(filtro1)
|
|
|
|
return filtro1,filtroesf1
|
|
|
|
def filtroz(Datoscart,selectz,cte):
|
|
'''
|
|
Codigo para hacer la proyeccion (sigue manteniendo 0's pero interpolar ignora los 0's)
|
|
'''
|
|
f1,esf1 = funciondefiltro(Datoscart,selectz,cte)
|
|
|
|
FiltroCart = np.zeros_like(f1)
|
|
FiltroEsf = np.zeros_like(f1)
|
|
|
|
FiltroEsf[:,:,0] = np.sqrt(f1[:,:,0]**2 + f1[:,:,1]**2)
|
|
FiltroEsf[:,:,1][esf1[:,:,1] != 0] = np.pi/2 # da igual poner el esf1[1]
|
|
FiltroEsf[:,:,2] = esf1[:,:,2]
|
|
|
|
FiltroCart = c4.msph_mcart_filtrado(FiltroEsf)
|
|
FiltroCart[:,:,2] = 0
|
|
|
|
return FiltroCart,FiltroEsf
|
|
|
|
|