Dati i 4 punti che descrivono 2 segmenti di linea, come si calcola se la linea A è verso o lontano dalla linea B?
Le 2 linee hanno una lunghezza fissa e possono essere misurate come distanza da x1 / y1 a x2 / y2.

Dati i 4 punti che descrivono 2 segmenti di linea, come si calcola se la linea A è verso o lontano dalla linea B?
Le 2 linee hanno una lunghezza fissa e possono essere misurate come distanza da x1 / y1 a x2 / y2.

Risposte:
Lasciare Ae Bessere due punti sulla linea nera. Lascia Cche Dsia il tuo segmento blu. Il segno della zcoordinata del prodotto incrociato AB^ACindica se Cè "sinistra" o "destra" della linea nera. Allo stesso modo, il prodotto incrociato AB^CDti dice se CDdirige "a sinistra" o "a destra" della linea nera.
Non vogliamo davvero sapere se è sinistra o destra; tutto ciò che vogliamo è assicurarci che siano nella stessa direzione o nella direzione opposta, ecco perché moltiplichiamo i due valori.
Il seguente pseudocodice dovrebbe pertanto funzionare:
z1 = (xB-xA)*(yC-yA) - (yB-yA)*(xC-xA);
z2 = (xB-xA)*(yD-yC) - (yB-yA)*(xD-xC);
z3 = z1 * z2;
if (z3 < 0)
; /* Pointing towards (BUT maybe even crossing) */
else if (z3 > 0 || z2 != 0)
; /* Pointing away */
else
; /* Parallel */
Temo di aver bisogno di un po 'di tempo per scrivere una soluzione adeguata per la curva di Bezier. La seguente situazione è verso o lontano?

Supponendo che il punto iniziale sia il cerchio verde e il punto finale sia la freccia rossa
Calcola la distanza tra il punto iniziale come DS e il segmento nero e fai lo stesso per il punto finale (freccia rossa) come DE. Se DS> DE, il segmento punta verso. se DE> DS, punta lontano. Se entrambi sono uguali, i due sono paralleli.
È possibile trovare il modo di calcolare la distanza da un punto ad un segmento qui , e per una curva di Bézier quadratica qui . Tuttavia, a seconda della forma della curva di Bezier, potrebbe restituire risultati strani (la curva può incrociarsi)