Si tengo a, b, c punto con x, y en forma de vectores que cómo puedo encontrar puntos colineales ..puntos colineales
fabs ((_) * (c b.x_-a.x. y_-a.y _) - (c.x_-a.x _) * (b.y_-a.y_) se usa así ... ¿cómo es esto?
Si tengo a, b, c punto con x, y en forma de vectores que cómo puedo encontrar puntos colineales ..puntos colineales
fabs ((_) * (c b.x_-a.x. y_-a.y _) - (c.x_-a.x _) * (b.y_-a.y_) se usa así ... ¿cómo es esto?
Las diferencias le dan los vectores internos de un a b y a a C.
las multiplicaciones a continuación representan el producto vectorial entre estos dos vectores. el producto cruz es proporcional al seno del ángulo entre estos dos vectores. el seno entre estos dos vectores es cero cuando el p las manchas son colineales
Su fórmula particular es una contracción en 2d del producto en cruz más convencional en 3D. Ver: http://en.wikipedia.org/wiki/Cross_product
Se puede interpretar la fórmula como un producto vectorial (como se explica en winwaed 's respuesta), o se puede interpretar como sobre las laderas de los vectores b-a y c-a, como se explica en this answer.
fabs((b.x_-a.x_)*(c.y_-a.y_)-(c.x_-a.x_)*(b.y_-a.y_)
es el producto cruzado.
en cuenta que:
fabs(crossProduct((b-a), (c-a))) == length(b-a)*distance of c from the line (a,b)
Por lo tanto es cero si y sólo si sólo cuando c encuentra en la línea (a, b), solo proporcionando a, b son distintos.
Me gustaría escuchar comentarios, o mejores ejemplos, sobre por qué esto podría ser "inestable". Siempre pensé que era bastante robusto.
Habrá inestabilidades numéricas con ese enfoque, considere un proceso más robusto, por ejemplo, la distancia de C desde la línea (no segmento de línea) AB y esa distancia es menor que cierta tolerancia. –