2013-06-21 10 views
5

Dato A: un punto, B: Un punto noto esistere su un piano P, C: il normale del piano P. Posso determinare se A giace su P dal risultato di un prodotto punto tra (A - B) e C è zero? (o entro un certo livello di precisione, probabilmente userò 0.0001f)Utilizzo del prodotto punto per determinare se il punto giace su un piano

Potrei semplicemente mancare qualche ovvio difetto matematico ma questo sembra essere molto più semplice e più veloce di trasformare il punto nello spazio di coordinate di un triangolo a. la risposta a Check if a point is inside a plane segment

Quindi, in secondo luogo, credo; se questo è un controllo valido, sarebbe computazionalmente più veloce che usare le trasformazioni di matrice se tutto ciò che voglio è vedere se il punto è sull'aereo? (e non se si trova all'interno di un poligono su tale piano, probabilmente continuerò a usare le trasformazioni di matrice per quello)

risposta

7

Sei corretto che B si trova sul piano attraverso A e con normale P se e solo se dotProduct (AB , P) = 0.

Per stimare la velocità per questo tipo di cose, è sufficiente contare le moltiplicazioni. Questa formula ha solo tre moltiplicazioni, quindi sarà più veloce di qualsiasi cosa abbia a che fare con le matrici.

+0

Sareste in grado di pubblicare un esempio con dati/matematica? Specificamente per rispondere al titolo della domanda che è un risultato massimo per un noob come me che sta cercando di imparare come fare questo tipo di confronto, in primo luogo; molto meno importa se è ottimizzato e quanto è costoso. – ThorSummoner

+0

@ThorSummoner: la matematica non è male. Nota che in questo contesto, normale significa solo perpendicolare. Il normale di un piano è, per definizione, il vettore perpendicolare a tutti i vettori che giacciono su un piano. Poiché A è nel piano, A - B (o B - A) è un vettore nel piano. Quel vettore è perpendicolare a P se e solo se dotProduct (A-B, P) = 0. Ciò aiuta? –

+0

E la distanza del piano dall'origine? Ciò dovrebbe essere preso in considerazione perché ciò sia accurato. –

0

Le risposte sopra sono più vicine alla dimostrazione, ma non sufficienti. Dovrebbe essere intuitivo che l'uso di soli due vettori non sia sufficiente perché, per uno, il punto P può essere al di sopra del piano e una linea verticale disegnata da esso sul piano genererebbe comunque un prodotto a punto zero con qualsiasi singolo vettore che giace sul piano, proprio come sarebbe per un punto P sull'aereo. La condizione necessaria e sufficiente è che se due vettori si trovano sul piano poi l'aereo effettivo è rappresentato in modo univoco con il prodotto vettoriale dei due vettori cioè w =u x v. Per definizione, w è il vettore area, che è sempre perpendicolare al piano.

Poi, per il punto P in questione, la costruzione di un terzo vettore s da entrambi u o v deve essere testato contro w dal prodotto scalare, S.T.

w. s = | w || s | cos (90) = 0 implica che il punto P giace sul piano descritto da w, che è a sua volta descritta da vettori u e v.