Source code for rofunc.utils.visualab.ergo_manip_plot
import numpy as np
[docs]def plot_skeleton(ax, global_positions, parent_indices):
for i in range(len(global_positions)):
if parent_indices[i] != -1:
parent_pos = global_positions[parent_indices[i]]
joint_pos = global_positions[i]
ax.plot([parent_pos[0], joint_pos[0]], [parent_pos[1], joint_pos[1]], [parent_pos[2], joint_pos[2]], 'k-')
[docs]def plot_ellipsoid(ax, eigenvalues, eigenvectors, center, color):
eigenvalues = eigenvalues[-3:]
eigenvectors = eigenvectors[-3:, -3:]
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = np.outer(np.cos(u), np.sin(v)) / 5
y = np.outer(np.sin(u), np.sin(v)) / 5
z = np.outer(np.ones_like(u), np.cos(v)) / 5
for i in range(len(x)):
for j in range(len(x)):
[x[i, j], y[i, j], z[i, j]] = np.dot(eigenvectors, np.array([x[i, j], y[i, j], z[i, j]]) * np.sqrt(eigenvalues))
x[i, j] += center[0]
y[i, j] += center[1]
z[i, j] += center[2]
ax.plot_surface(x, y, z, color=color, alpha=0.3)
[docs]def ua_get_color(score):
if 1 <= score <= 2:
return 'green'
elif 3 <= score <= 4:
return 'orange'
elif 5 <= score <= 6:
return 'red'
else:
return 'purple' # Other scores in purple
[docs]def la_get_color(score):
if 1 <= score < 2:
return 'green'
elif 2 <= score:
return 'orange'
else:
return 'purple' # Other scores in purple
[docs]def trunk_get_color(score):
if 1 <= score <= 2:
return 'green'
elif 3 <= score <= 4:
return 'orange'
elif 5 <= score <= 6:
return 'red'
else:
return 'purple' # Other scores in purple