Update app.py
Browse files
app.py
CHANGED
|
@@ -32,7 +32,7 @@ def motor_da_simulacao_infinita(angulo_camera: int):
|
|
| 32 |
velocidade extrema e um AMBIENTE FIXO.
|
| 33 |
"""
|
| 34 |
ponto_a = np.array([0., 0., 0.])
|
| 35 |
-
vetor_inercia = np.array([
|
| 36 |
historico_rastro = [ponto_a.tolist()]
|
| 37 |
|
| 38 |
fig = plt.figure(figsize=(8, 8)); ax = fig.add_subplot(111, projection='3d')
|
|
@@ -42,7 +42,7 @@ def motor_da_simulacao_infinita(angulo_camera: int):
|
|
| 42 |
while True:
|
| 43 |
ciclo_num += 1
|
| 44 |
|
| 45 |
-
ponto_b = np.random.rand(3) *
|
| 46 |
|
| 47 |
ponto_controle = ponto_a + vetor_inercia
|
| 48 |
pontos_curva = [ponto_a, ponto_controle, ponto_b]
|
|
@@ -50,10 +50,10 @@ def motor_da_simulacao_infinita(angulo_camera: int):
|
|
| 50 |
|
| 51 |
novos_pontos_rastro = list(zip(x_ciclo, y_ciclo, z_ciclo))
|
| 52 |
historico_rastro.extend(novos_pontos_rastro)
|
| 53 |
-
max_rastro =
|
| 54 |
historico_rastro = historico_rastro[-max_rastro:]
|
| 55 |
|
| 56 |
-
tamanho_eco =
|
| 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 |
|
|
@@ -66,14 +66,14 @@ def motor_da_simulacao_infinita(angulo_camera: int):
|
|
| 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=
|
| 70 |
# ------------------------------------------
|
| 71 |
|
| 72 |
-
ax.set_xlim(-
|
| 73 |
ax.set_xticklabels([]); ax.set_yticklabels([]); ax.set_zticklabels([])
|
| 74 |
|
| 75 |
-
ax.scatter(*ponto_a, s=
|
| 76 |
-
ax.scatter(*ponto_b, s=
|
| 77 |
|
| 78 |
indice_global_frame = len(historico_rastro) - len(x_ciclo) + frame
|
| 79 |
ax.plot(rastro_np[:indice_global_frame+1, 0], rastro_np[:indice_global_frame+1, 1], rastro_np[:indice_global_frame+1, 2], '-', color='#ff4500', linewidth=4, alpha=0.6)
|
|
@@ -81,10 +81,10 @@ def motor_da_simulacao_infinita(angulo_camera: int):
|
|
| 81 |
ax.plot([x_ciclo[frame]], [y_ciclo[frame]], [z_ciclo[frame]], 'o', color='#ff4500', markersize=8, markeredgecolor='white')
|
| 82 |
|
| 83 |
info_texto = f"Ciclo: {ciclo_num}\nAlvo: {np.round(ponto_b, 1)}"
|
| 84 |
-
ax.text2D(0.
|
| 85 |
|
| 86 |
yield fig
|
| 87 |
-
time.sleep(0.
|
| 88 |
|
| 89 |
ponto_a = ponto_b
|
| 90 |
|
|
|
|
| 32 |
velocidade extrema e um AMBIENTE FIXO.
|
| 33 |
"""
|
| 34 |
ponto_a = np.array([0., 0., 0.])
|
| 35 |
+
vetor_inercia = np.array([12., 12., 12.])
|
| 36 |
historico_rastro = [ponto_a.tolist()]
|
| 37 |
|
| 38 |
fig = plt.figure(figsize=(8, 8)); ax = fig.add_subplot(111, projection='3d')
|
|
|
|
| 42 |
while True:
|
| 43 |
ciclo_num += 1
|
| 44 |
|
| 45 |
+
ponto_b = np.random.rand(3) * 60 - 24 # 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 = 4
|
| 54 |
historico_rastro = historico_rastro[-max_rastro:]
|
| 55 |
|
| 56 |
+
tamanho_eco = 8
|
| 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 |
|
|
|
|
| 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=32., azim=angulo_camera)
|
| 70 |
# ------------------------------------------
|
| 71 |
|
| 72 |
+
ax.set_xlim(-32, 32); ax.set_ylim(-32, 32); ax.set_zlim(-32, 32)
|
| 73 |
ax.set_xticklabels([]); ax.set_yticklabels([]); ax.set_zticklabels([])
|
| 74 |
|
| 75 |
+
ax.scatter(*ponto_a, s=160, c='lime', alpha=0.8)
|
| 76 |
+
ax.scatter(*ponto_b, s=160, c='red', marker='X', alpha=0.2)
|
| 77 |
|
| 78 |
indice_global_frame = len(historico_rastro) - len(x_ciclo) + frame
|
| 79 |
ax.plot(rastro_np[:indice_global_frame+1, 0], rastro_np[:indice_global_frame+1, 1], rastro_np[:indice_global_frame+1, 2], '-', color='#ff4500', linewidth=4, alpha=0.6)
|
|
|
|
| 81 |
ax.plot([x_ciclo[frame]], [y_ciclo[frame]], [z_ciclo[frame]], 'o', color='#ff4500', markersize=8, markeredgecolor='white')
|
| 82 |
|
| 83 |
info_texto = f"Ciclo: {ciclo_num}\nAlvo: {np.round(ponto_b, 1)}"
|
| 84 |
+
ax.text2D(0.04, 0.88, info_texto, transform=ax.transAxes, color='white', fontsize=10)
|
| 85 |
|
| 86 |
yield fig
|
| 87 |
+
time.sleep(0.008)
|
| 88 |
|
| 89 |
ponto_a = ponto_b
|
| 90 |
|