2010-02-25 10 views
7

¿Alguien puede proporcionar un ejemplo de una función que devuelve el producto cruzado de TWO 2d vectores? Estoy tratando de implementar this algorithm.Producto cruzado de 2 vectores 2D

El código C sería genial. Gracias.


EDIT: encontró con otro TODO manera que funcione para 2D y es fácil de muertos.

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

¿Es º es para el trabajo o el trabajo a domicilio? – legends2k

+0

Esto es para disfrute personal. ¿Por qué? –

+0

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

Respuesta

15

(Nota: El de producto cruzado de 2 vectores sólo se define en 3D y 7D spaces.)

El código calcula la z componente z de 2 vectores tendido en el xy un plano:

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

Wow. Me gustaría darle un +1 extra por ese enlace! – AakashM

+2

@ tm1rbrt: Ese 'CrossProduct' debe ser un producto cruzado completo 3D. Siempre puede volver a agregar los dos componentes 0. – kennytm

+1

El producto cruzado de dos vectores en el espacio tridimensional es un vector tridimensional, pero el código solo arroja un doble. ¿De qué sirve un componente? – duffymo

Cuestiones relacionadas