2011-03-08 15 views
7

Okay, sto cercando di far funzionare un algoritmo di teorema degli assi di separazione (per il rilevamento delle collisioni) e ho bisogno di trovare il vettore perpendicolare minimo tra un punto e una linea. Non sto chiedendo la minima distanza perpendicolare (che so come trovare), ma piuttosto il vettore che avrebbe la stessa grandezza di quella distanza e che va da un punto arbitrario e un punto sulla linea. Conosco la posizione del punto, un punto sulla linea e un vettore unitario che indica la direzione della linea.Vettore perpendicolare minimo tra un punto e una linea

Quello che ho provato a fare è stato trovare la distanza minima tra il punto e la linea.

La parte successiva è confusa ma: 1) Trovato il vettore tra il punto e il punto sulla linea So 2) Trovato il vettore tra il punto sulla linea e il punto della linea più l'unità vettore che dà la direzione della linea 3) Ho preso il prodotto incrociato di questi due vettori (chiamerò questo prodotto incrociato A) 4) Ho preso il prodotto incrociato del vettore unitario dando la direzione della linea e il vettore dalla croce prodotto A (chiamerò questo prodotto trasversale B) 5) Prodotto trasversale normalizzato B 6) Prodotto a scala incrociata B della distanza minima

empt fallito miseramente. Qualcuno può dirmi come dovrei trovare questo vettore?

+0

stai scrivendo un programma per fare questo, o semplicemente cercando di fare la tua Fisica/Calc compiti a casa? –

+2

È per un gioco che sto scrivendo per divertimento, come ho detto che è per il rilevamento delle collisioni. – user421215

risposta

24

Se ho capito bene la tua domanda, credo che questo è quello che stai cercando:

P - point 
D - direction of line (unit length) 
A - point in line 

X - base of the perpendicular line 

    P 
    /| 
/| 
/v 
A---X----->D 

(P-A).D == |X-A| 

X == A + ((P-A).D)D 
Desired perpendicular: X-P 

in cui il periodo rappresenta il prodotto scalare e | X-A | significa grandezza.

+0

Giusto per chiarire il. sta per il prodotto punto giusto? – user421215

+0

Giusto. Questo è ciò che intendevo per "periodo" :) – Pablo

+0

scusami. Comunque sembra che voglia lavorare, ma per qualche motivo il mio algoritmo SAT è un po 'fuori. Le cose si scontrano quando non dovrebbero essere. Sto pensando che quello che mi hai dato funziona probabilmente dal momento che le collisioni sembrano "più corrette" ora, e ho tutti i tipi di segnalini che sembrano più a bersaglio ora. Grazie mille ma sfortunatamente sembra che abbia fatto qualche altro tipo di errore nel codice. – user421215

2

enter image description here

Nella figura di seguito, si dispone:

q = p + s --> s = q - p = q - (p2-p1) = q + p1 - p2 

==> s^ = |q - p2 - p1|/|s| (unitary vector) 

Also: |s| = |q| sin c = |q|sin(b-a) 

b = arcsin (qy/|q|); a = arcsin(p1y/|p1|) 

where: |q| = (qx^2 + qy^2)^1/2 
Problemi correlati