J'ai un tableau MX3 utilisé pour créer un modèle 3D. Est-il un moyen rapide d'extraire tous les points appartenant à un plan donné à l'aide de fonctions numpées ou autres python? Le plan prendra la hache + par + CZ + D = 0. Je suis actuellement en boucle à travers tous les points de la matrice pour trouver les points qui répondent à cette équation.
plane1=[] for i in pcd_array: if (normal_vector[0]*(i[0]-point1[0])+normal_vector[1]*(i[1]-point1[1])+normal_vector[2]*(i[2]-point1[2]))==0: plane1.append(i)
3 Réponses :
vectorisation sera beaucoup em> plus vite. Dans l'exemple ci-dessous, tous les points ci-dessous se trouvent sur des valeurs entières dans la région -100
Cher @ anon01, est-ce que C0 est un point que l'avion se croisera?
c0 code> est les coefficients,
[a, b, c] code>.
p [0] code> (et d'autres points peut) intersecter l'avion
Est-ce que l'aide suivante? Je suppose que c'est rapide car il n'utilise aucune boucle. Ma réponse est basée sur Ceci
import numpy as np mat = np.arange(18).reshape(6,3) mat[5,:] = [0,1,2] aa = 1 bb = 2 cc = 3 dd = -8 mask = mat[:,0]*aa + mat[:,1]*bb + mat[:,2]*cc + dd == 0 selected = mat[mask,:]
Utilisation de NUMPY Où pour trouver tous les points correspondant une condition
Exemple d'utilisation forte> p>
Vous connaissez A, B, C, D?
Je suppose que ce que vous faites ici consiste à calculer des distances à l'avion d'un point? Placez vos vecteurs dans une matrice numpue, calculez les distances pour tous les points sous forme de tableau NUMPY, puis filtrez pour tous les points qui ont 0 distance. Il sera certainement beaucoup plus rapide que d'avoir des centaines de
si code> s