0
votes

Trouver tous les points appartenant à un avion utilisant Python

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)


2 commentaires

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 s


3 Réponses :


0
votes

vectorisation sera beaucoup plus vite. Dans l'exemple ci-dessous, tous les points ci-dessous se trouvent sur des valeurs entières dans la région -100 xxx


2 commentaires

Cher @ anon01, est-ce que C0 est un point que l'avion se croisera?


c0 est les coefficients, [a, b, c] . p [0] (et d'autres points peut) intersecter l'avion



0
votes

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,:]


0 commentaires

0
votes

Utilisation de NUMPY Où pour trouver tous les points correspondant une condition

code xxx

Exemple d'utilisation xxx < p> sortie xxx


0 commentaires