Il sistema di coordinate ha l'asse Z orientato come la distanza dal sensore, X ed Y invece sono lungo la dimensione della matrice di acquisizione
Presi tre punti nello spazio (x1,y1,z1),(x2,y2,z2),(x3,y3,z3) non allineati (questa condizione visto che i dati vengono da uno strumento di misura reale diciamo che e' soddisfatta a priori) per calcolare l'equazione del piano si deve calcolare il determinante della seguente matrice con la condizione che sia uguale a zero
(x-x1, y-y1, z-z1,
x2-x1, y2-y1, z2-z1,
x3-x2, y3-y2, z3-z2)
con la formula di Laplace per il determinante si ha che (x,y,z sono le variabili)
(x-x1)[(y2-y1)(z3-z1)-(y3-y1)(z2-z2)] - (y-y1)[(x2-x1)(z3-z1)-(x3-x1)(z2-z1)]+ (z-z1)[(x2-x1)(y3-y1)-(x3-x1)(y2-y1)]= 0
si ha cosi' un risultato nella forma
ax+by+cz = 0
una volta calcolato il piano si deve calcolare la normale (nx,ny,nz)si calcola la derivata parziale
F = ax +by+cz
nx = dF/dx, ny = dF/dy, nz = dF/dz.
Visto che si tratta di un piano la derivata parziale e' banale e le componenti del vettore normale sono (a,b,c)
-----------------------------------------------------------
Un metodo alternativo (che non prevede di calcolare prima l'equazione di un piano) e' quella di calcolare il prodotto vettoriale tra i due del triangolo). Per esempio dati sempre i tre punti (x1,y1,z1),(x2,y2,z2),(x3,y3,z3) si prendono due vettori
v = (x2-x1, y2-y1, z2-z1)
w = (x3-x1, y3-y1, y3-y1)
il vettore normale e' dato dal determinante della matrice
(x,y,z
v1 ,v2 ,v3,
w1,w2,w2)
n = u X v = (v2w3-v3w2)x+(v3w1-v1w3)y+(v1w2-v2w1)z
Adesso c'e il problema e' di normali ce ne sono due essendo la superficie orientata (brutalmente una sotto ed una sopra al piano) oppure nel prodotto vettoriale dipende dall'ordine con cui si pongono i vettori (vXw e' diverso da wXv)
A questo punto si puo' procedere normalizzando il vettore.
nn1 = n1/sqrt(n1n1+n2n2+n3n3)
nn2 = n2/sqrt(n1n1+n2n2+n3n3)
nn3 = n3/sqrt(n1n1+n2n2+n3n3)
il passaggio da coordinate cartesiane a coordinate.
A questo punto si puo' procedere normalizzando il vettore.
nn1 = n1/sqrt(n1n1+n2n2+n3n3)
nn2 = n2/sqrt(n1n1+n2n2+n3n3)
nn3 = n3/sqrt(n1n1+n2n2+n3n3)
il passaggio da coordinate cartesiane a coordinate.
Se si guarda la libreria PCL la ricostruzione della normale ad una superficie viene effettuata mediante il calcolo delle componenti principali che permette anche di gestire anche che l'orientazione delle normali sia coerente
Nessun commento:
Posta un commento