from util import *
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import plotly.graph_objects as go
import csv
import os

def lire_un_fichier_csv(data):
    tableau_2D = []
    tab = []
    with open(data, "r") as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        for ligne in csv_reader:
            tableau_2D.append(ligne)
    for i in range(len(tableau_2D[0])):
        ligne = []
        for j in range(len(tableau_2D)):
            ligne.append(float(tableau_2D[j][i]))
        tab.append(ligne)
    return tab

def lire_fichier_csv(data,fichier):
    resultat=[]
    tableau=[]
    for i in fichier:
        tableau=lire_un_fichier_csv(os.path.join(data,i))
        resultat.append(tableau)
    return resultat

# Répertoire contenant les fichiers
dossier = "Dataset/Shear_Wave_Rot00_CSV_Data"
fichiers_selectionnes= ['Shear_x001-x101_y010_Rot00.csv', 'Shear_x001-x101_y011_Rot00.csv', 'Shear_x001-x101_y012_Rot00.csv', 'Shear_x001-x101_y013_Rot00.csv', 'Shear_x001-x101_y014_Rot00.csv', 'Shear_x001-x101_y015_Rot00.csv']
print(fichiers_selectionnes)
tableau_3D=lire_fichier_csv(dossier,fichiers_selectionnes)

tb = np.array(tableau_3D)
Bscan_array = tb[0,:,:]
# Préparation des données de coordonnées
x, y = np.meshgrid(range(Bscan_array.shape[1]), range(Bscan_array.shape[0]))
z = np.zeros(x.shape)  # Tous les points sont au niveau z=0

# Aplatir les tableaux pour la visualisation
x, y, z = x.flatten(), y.flatten(), z.flatten()
amplitude = Bscan_array.flatten()  # Utiliser les valeurs d'amplitude pour la couleur


fig = go.Figure(data=[go.Scatter3d(
    x=x,
    y=y,
    z=z,
    mode='markers',
    marker=dict(
        size=5,
        color=amplitude,  # La couleur varie avec l'amplitude
        colorscale='Viridis',  # Palette de couleurs
        opacity=0.8,
        colorbar=dict(title='Amplitude')
    )
)])

# Mise à jour de la mise en page
fig.update_layout(title='Visualisation 3D des Amplitudes avec Bscan sur z=0',
                  scene=dict(
                      xaxis_title='X',
                      yaxis_title='Y',
                      zaxis_title='Z',
                      zaxis=dict(range=[-0.1, 0.1])),  # Limite l'axe z pour mieux visualiser le plan z=0
                  margin=dict(l=0, r=0, b=0, t=0))

# Afficher la figure
fig.show()
