x2XcarleX2x commited on
Commit
6398684
·
verified ·
1 Parent(s): d3587b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -20
app.py CHANGED
@@ -11,8 +11,7 @@ import time
11
  def bernstein_poly(i, n, t):
12
  return comb(n, i) * (t**(i)) * ((1 - t)**(n - i))
13
 
14
- # --- MUDANÇA #1: CICLOS ULTRA-RÁPIDOS (Menos Vetores) ---
15
- def bezier_curve_3d(points, n_times=20): # Apenas 20 vetores por ciclo!
16
  n_points = len(points)
17
  x_points, y_points, z_points = np.array([p[0] for p in points]), np.array([p[1] for p in points]), np.array([p[2] for p in points])
18
  t = np.linspace(0.0, 1.0, n_times)
@@ -25,12 +24,12 @@ def aprender_com_o_eco_3d(pontos_do_eco: list):
25
  p1, p2 = np.array(pontos_do_eco[0]), np.array(pontos_do_eco[-1])
26
  return {"velocity_vector": p2 - p1}
27
 
28
- # --- Função Principal do Gradio (Motor Hyperdrive) ---
29
 
30
  def motor_da_simulacao_infinita(angulo_camera: int):
31
  """
32
- Motor da simulação que roda em um loop infinito, com um universo compacto
33
- e velocidade de movimento extrema.
34
  """
35
  ponto_a = np.array([0., 0., 0.])
36
  vetor_inercia = np.array([10., 10., 10.])
@@ -43,9 +42,7 @@ def motor_da_simulacao_infinita(angulo_camera: int):
43
  while True:
44
  ciclo_num += 1
45
 
46
- # --- MUDANÇA #2: UNIVERSO COMPACTO ---
47
- # Alvos aleatórios em um espaço de -25 a 25 (4x menor que o anterior)
48
- ponto_b = np.random.rand(3) * 50 - 25
49
 
50
  ponto_controle = ponto_a + vetor_inercia
51
  pontos_curva = [ponto_a, ponto_controle, ponto_b]
@@ -53,10 +50,10 @@ def motor_da_simulacao_infinita(angulo_camera: int):
53
 
54
  novos_pontos_rastro = list(zip(x_ciclo, y_ciclo, z_ciclo))
55
  historico_rastro.extend(novos_pontos_rastro)
56
- max_rastro = 5 # Rastro mais curto para um visual mais limpo
57
  historico_rastro = historico_rastro[-max_rastro:]
58
 
59
- tamanho_eco = 10 # Eco menor para trajetórias mais curtas
60
  pontos_eco = list(zip(x_ciclo[-tamanho_eco:], y_ciclo[-tamanho_eco:], z_ciclo[-tamanho_eco:]))
61
  vetor_inercia = aprender_com_o_eco_3d(pontos_eco)["velocity_vector"]
62
 
@@ -66,9 +63,12 @@ def motor_da_simulacao_infinita(angulo_camera: int):
66
  ax.cla()
67
  ax.xaxis.pane.fill = False; ax.yaxis.pane.fill = False; ax.zaxis.pane.fill = False
68
  ax.grid(color='#222222', linestyle='--')
69
- ax.view_init(elev=25., azim=angulo_camera + (len(historico_rastro) - len(x_ciclo) + frame) * 0.5) # Rotação de câmera mais rápida
70
 
71
- # --- MUDANÇA #2 (Continuação): Limites do gráfico para o universo compacto ---
 
 
 
 
72
  ax.set_xlim(-30, 30); ax.set_ylim(-30, 30); ax.set_zlim(-30, 30)
73
  ax.set_xticklabels([]); ax.set_yticklabels([]); ax.set_zticklabels([])
74
 
@@ -84,26 +84,25 @@ def motor_da_simulacao_infinita(angulo_camera: int):
84
  ax.text2D(0.05, 0.95, info_texto, transform=ax.transAxes, color='white', fontsize=10)
85
 
86
  yield fig
87
- # --- MUDANÇA #3: ATUALIZAÇÃO MAIS RÁPIDA ---
88
- time.sleep(0.01) # Pausa mínima para a UI respirar
89
 
90
  ponto_a = ponto_b
91
 
92
  plt.close(fig)
93
 
94
  # --- Interface Gradio ---
95
- with gr.Blocks(theme=gr.themes.Base(primary_hue="red")) as demo:
96
  gr.Markdown(
97
  """
98
- # ⚡ Simulador Autônomo 3D (Modo Hyperdrive)
99
- Clique em "Iniciar" para dar partida no motor da simulação. O agente irá navegar em **velocidade extrema**
100
- por um universo compacto, gerando novos alvos aleatórios em um loop infinito.
101
  """
102
  )
103
  with gr.Row():
104
  with gr.Column(scale=1):
105
- angulo_camera_slider = gr.Slider(-180, 180, value=45, label="Ângulo Inicial da Câmera")
106
- start_btn = gr.Button("🚀 Iniciar Simulação (Hyperdrive)", variant="primary")
107
  with gr.Column(scale=2):
108
  plot_output = gr.Plot(label="Visualização em Tempo Real")
109
 
 
11
  def bernstein_poly(i, n, t):
12
  return comb(n, i) * (t**(i)) * ((1 - t)**(n - i))
13
 
14
+ def bezier_curve_3d(points, n_times=20): # 20 vetores para alta velocidade
 
15
  n_points = len(points)
16
  x_points, y_points, z_points = np.array([p[0] for p in points]), np.array([p[1] for p in points]), np.array([p[2] for p in points])
17
  t = np.linspace(0.0, 1.0, n_times)
 
24
  p1, p2 = np.array(pontos_do_eco[0]), np.array(pontos_do_eco[-1])
25
  return {"velocity_vector": p2 - p1}
26
 
27
+ # --- Função Principal do Gradio (Motor Hyperdrive com Ambiente Fixo) ---
28
 
29
  def motor_da_simulacao_infinita(angulo_camera: int):
30
  """
31
+ Motor da simulação que roda em um loop infinito, com um universo compacto,
32
+ velocidade extrema e um AMBIENTE FIXO.
33
  """
34
  ponto_a = np.array([0., 0., 0.])
35
  vetor_inercia = np.array([10., 10., 10.])
 
42
  while True:
43
  ciclo_num += 1
44
 
45
+ ponto_b = np.random.rand(3) * 50 - 25 # Universo compacto
 
 
46
 
47
  ponto_controle = ponto_a + vetor_inercia
48
  pontos_curva = [ponto_a, ponto_controle, ponto_b]
 
50
 
51
  novos_pontos_rastro = list(zip(x_ciclo, y_ciclo, z_ciclo))
52
  historico_rastro.extend(novos_pontos_rastro)
53
+ max_rastro = 150
54
  historico_rastro = historico_rastro[-max_rastro:]
55
 
56
+ tamanho_eco = 10
57
  pontos_eco = list(zip(x_ciclo[-tamanho_eco:], y_ciclo[-tamanho_eco:], z_ciclo[-tamanho_eco:]))
58
  vetor_inercia = aprender_com_o_eco_3d(pontos_eco)["velocity_vector"]
59
 
 
63
  ax.cla()
64
  ax.xaxis.pane.fill = False; ax.yaxis.pane.fill = False; ax.zaxis.pane.fill = False
65
  ax.grid(color='#222222', linestyle='--')
 
66
 
67
+ # --- A MUDANÇA PRINCIPAL: AMBIENTE FIXO ---
68
+ # A câmera não gira mais com base no frame. Ela usa o ângulo fixo da UI.
69
+ ax.view_init(elev=30., azim=angulo_camera)
70
+ # ------------------------------------------
71
+
72
  ax.set_xlim(-30, 30); ax.set_ylim(-30, 30); ax.set_zlim(-30, 30)
73
  ax.set_xticklabels([]); ax.set_yticklabels([]); ax.set_zticklabels([])
74
 
 
84
  ax.text2D(0.05, 0.95, info_texto, transform=ax.transAxes, color='white', fontsize=10)
85
 
86
  yield fig
87
+ time.sleep(0.01)
 
88
 
89
  ponto_a = ponto_b
90
 
91
  plt.close(fig)
92
 
93
  # --- Interface Gradio ---
94
+ with gr.Blocks(theme=gr.themes.Base(primary_hue="teal", secondary_hue="green")) as demo:
95
  gr.Markdown(
96
  """
97
+ # ⚡ Simulador Autônomo 3D (Hyperdrive Estático)
98
+ Defina um ângulo para a câmera e clique em "Iniciar". O agente (bola) irá navegar em
99
+ **velocidade extrema** por um universo compacto com um **ponto de vista fixo**.
100
  """
101
  )
102
  with gr.Row():
103
  with gr.Column(scale=1):
104
+ angulo_camera_slider = gr.Slider(-180, 180, value=45, label="Ângulo da Câmera (Fixo)")
105
+ start_btn = gr.Button("🚀 Iniciar Simulação (Ambiente Fixo)", variant="primary")
106
  with gr.Column(scale=2):
107
  plot_output = gr.Plot(label="Visualização em Tempo Real")
108