Puede determinar el ángulo de dos vectores simplemente tomando el producto escalar (producto escalar).Una propiedad útil es que si los vectores son ortogonales, su producto escalar es cero; si su ángulo es obtuso, el producto es negativo, de lo contrario positivo. Por lo tanto, los pasos a seguir son los siguientes:
- encontrar el primer borde de V0 a V1 (como un vector, se obtiene esta restando las coordenadas), y luego girarlo 90 grados a la izquierda (esto se acaba transformando
(x y)
a (-y x)
)
- encontrar el segundo borde de V1 a V2 (no girado)
- tomar el producto escalar (esto es sólo
(x1 * x2) + (y1 * y2)
)
- si el producto escalar es negativo, se trata de un giro a la derecha, de lo contrario una giro a la izquierda
- siguiente borde ...
- si pasa por los vértices en sentido contrario a las agujas del reloj, cuente el número de giros a la derecha, de lo contrario el número de giros a la izquierda
- para el último vértice, tiene que volver al primero (es decir utilizar los bordes VN a V0 y V0 a V1)
edición: Usted puede encontrar si los vértices están ordenados en sentido antihorario o en sentido horario utilizando la siguiente fórmula para calcular el área del polígono:
1 n-1
A = --- SUM(x(i)*y(i+1) - x(i+1)*y(i))
2 i=0
donde n
es la cantidad de vértices. x(n)
y y(n)
son lo mismo que x(0)
y y(0)
(para cerrar el polígono).
Si es positivo, entonces los vértices se ordenan en sentido antihorario, de lo contrario en el sentido de las agujas del reloj.
edit: Cuando simplifica los pasos de rotación y producto escalar, llega a la fórmula para el producto cruzado bidimensional, x1*y2 - x2*y1
. Esto simplifica los primeros pasos arriba:
- encontrar el primer borde de V0 a V1 (como un vector, restando las coordenadas)
- dito para el segundo borde de V1 a V2
- tomar el producto cruz
((x1 * y2) - (x2 * y1))
- si el producto vectorial es positiva, se trata de un giro a la izquierda
lo siento por el primer enfoque complicado.
No se puede definir un polígono simplemente por vértices. Debes especificar los lados también. –
Tengo el vértice en orden, así que no necesito los lados. – lucasbls1
Los vértices definen los puntos que se conectarían (los lados) para dar el polígono. – Swinders