2010-02-25 11 views
7

Qualcuno può fornire un esempio di una funzione che restituisce il prodotto incrociato di TWO 2d vettori? Sto cercando di implementare this algorithm.Prodotto incrociato di 2 vettori 2D

codice C sarebbe grande. Grazie.


EDIT: trovato un altro todo modo che funziona per 2D ed è morto facile.

bool tri2d::inTriangle(vec2d pt) { 
    float AB = (pt.y-p1.y)*(p2.x-p1.x) - (pt.x-p1.x)*(p2.y-p1.y); 
    float CA = (pt.y-p3.y)*(p1.x-p3.x) - (pt.x-p3.x)*(p1.y-p3.y); 
    float BC = (pt.y-p2.y)*(p3.x-p2.x) - (pt.x-p2.x)*(p3.y-p2.y); 

    if (AB*BC>0.f && BC*CA>0.f) 
     return true; 
    return false;  
} 
+0

Is ° è per lavoro o lavoro a casa? – legends2k

+0

Questo è per il divertimento personale. Perché? –

+0

DUP http://stackoverflow.com/questions/243945/calculating-a-2d-vectors-cross-product –

risposta

15

(Nota: Il prodotto incrociato dei vettori 2 è definito solo in 3D e 7D spaces.)

Il codice calcola la z bicomponente di 2 vettori sdraiato sul xy -Plane:

vec2D a, b; 
... 
double z = a.x * b.y - b.x * a.y; 
return z; 
+0

Wow. Vorrei darti un +1 in più per quel link! – AakashM

+2

@ tm1rbrt: Quel 'CrossProduct' dovrebbe essere un prodotto cross 3D completo. È sempre possibile aggiungere nuovamente i due componenti 0. – kennytm

+1

Il prodotto incrociato di due vettori nello spazio 3D è un vettore 3D, ma il tuo codice restituisce solo un doppio. A cosa serve un componente? – duffymo

Problemi correlati