Potrzebuję wykreślić chmurę punktów 3D (liczba punktów: N), następnie wypukły kadłub (w rzeczywistości wielościan z wierzchołkami N) z punktów. Zrobiłem skrypt w pythonie z scipy.spatial ConvexHull dla wykresu 8 punktów i wykreśl kostkę, wykres chmury punktów jest w porządku, ale kostka nie jest w porządku, ponieważ kod stawia dwie linie przechodzące przez przekątną ścianę sześcianu oprócz linii krawędzi. Nie rozumiem, dlaczego linie kreślone są przez twarze.3D wypukły kadłub z chmury punktów
Skrypt:
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from scipy.spatial import ConvexHull
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
points= np.array([[0,0,0],
[4,0,0],
[4,4,0],
[0,4,0],
[0,0,4],
[4,0,4],
[4,4,4],
[0,4,4]])
hull=ConvexHull(points)
edges= zip(*points)
for i in hull.simplices:
plt.plot(points[i,0], points[i,1], points[i,2], 'r-')
ax.plot(edges[0],edges[1],edges[2],'bo')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.set_xlim3d(-5,5)
ax.set_ylim3d(-5,5)
ax.set_zlim3d(-5,5)
plt.show()
Wynik skryptu:
Jak mogę edytować swoje pytanie? Zapomniałem "Cześć wszystko" z pierwszego wiersza i jeśli kliknę "edytuj" i chcę zapisać zmiany, nic się nie dzieje. – Feri