Bir nokta var ve dışbükey gövdesini bulmak istiyorum. Onları scipy.spatial (ConvexHull veya Delaunay) 'a verdiğimde, sadece orijinal puanları geri alırım. Yapım yoluyla, bu durumda olmamalı.scipy.spatial içinde dışbükey gövde rutinleri bana özgün bir dizi puan verir
Burada paketlenmiş numpy dizisi olarak the points vardır. verilen 2d örneklerde yapıldığı gibi, Açıkçası bu nokta, bazı dışbükey gövdesine iç ve spatial.ConvexHull (noktaları) veya spatial.Delaunay (nokta) ile çıkarılmalıdır
import pickle
from scipy import spatial
import matplotlib.pyplot as plt
points = pickle.load(open("points.p", "rb"))
hullpoints = spatial.ConvexHull(points).points
# plot points
fig = plt.figure()
ax = fig.gca(projection='3d')
# ax.plot(points[:, 0], points[:, 1], points[:, 2], 'r.') # original points
ax.plot(hullpoints[:, 0], hullpoints[:, 1], hullpoints[:, 2], 'r.') # convex hull of points
# set labels and show()
ax.set_xlabel('Player 1')
ax.set_ylabel('Player 2')
ax.set_zlabel('Player 3')
plt.show()
: My Kod aşağıda verilmiştir here.
Neden orijinal noktaları geri aldığımı bilen var mı? Dış noktaları bulmak için kaba kuvvet uygulayabilirim ve sadece bu noktaları çizebilirim (nihai amaç noktaların yaklaştığı dışsal şekil için bir yüzey arsasıdır), fakat scipy.spatial'ın bunu yapabilmesi gerektiği anlaşılıyor.
bu olabilir 'hull.points [np.unique (hull.simplices)]' diye dışbükey gövde benzersiz noktaların fiili listesini almak için istediği belirtildi. – Jaime
Bu böyle! Çok teşekkürler. – benten