8 votos

Ángulo entre dos vectores frente a un punto

Necesito un algoritmo matemático para hallar el ángulo formado por los tres puntos, que se abre hacia un cuarto de punto.

Por ejemplo, en Fig.1 de abajo te deseo ángulo de $\theta$ porque es "hacia" punto de $P$. Sin embargo, la fórmula para el ángulo entre dos vectores, $$\theta=\cos^{-1}\Big(\frac{\vec{u}\cdot\vec{v}}{uv}\Big)$$ gives angle $\alfa$ porque el anterior relación siempre devuelve el ángulo en el que está a menos de 180 grados.

Figure 1(Fig.1)

En contraste, en la Fig2 deseo ángulo de $\alpha$ porque en este tiempo se está "frente a" punto de $P$.

Figure 2(Fig2)

Como un ejemplo final, en la Fig3 debajo necesito ángulo de $\theta$, debido a que es todavía técnicamente "frente a" punto de $P$.

Figure 3(Fig3)

Este problema puede producirse en cualquier orientación, lo que es difícil decir, por ejemplo, "Si el punto de $P$ está a la izquierda de los puntos de $A, B, C$, utilice el ángulo de la izquierda, de lo contrario usar la derecha" o algo así.

Cualquier ayuda se agradece!


Mi Intento De Solución

Si alguien está interesado, mi solución actual es la de dividir el ángulo que se enfrenta el punto de $P$ en la mitad y agregar los dos juntos.

En la Fig4 abajo, yo uso la línea gris para dividir el ángulo en la mitad, encontrar $s$ e $t$ utilizando el producto escalar, a continuación, agregue $s$ e $t$ para obtener el ángulo que enfrentan $P$.

Figure 4(Fig4)

Esto funciona hasta que llegue a una situación como la que en Fig5. Lo que necesito es $s+t$, pero lo que me pasa es $q+t$ debido a que el producto escalar de da $q$ (desde $s$ es mayor que $180$ grados).

Figure 5(Fig5)

Es un acertijo.

4voto

Hagen von Eitzen Puntos 171160

A menos $A-B$ e $C-B$ son linealmente dependientes, usted puede expresar de manera singular $P-B$ en términos de: $$ P-B=r\cdot(A-B)+s\cdot(C-B).$$ Ahora $P$ es en el menor de los dos ángulos posibles si y sólo si $r$ e $s$ son positivos. Es en el rayo $BA$ si y sólo si $s=0$ e $r\ge0$, y en el rayo $BC$ si y sólo si $r=0$ e $s\ge 0$. En todos los demás casos, es en la mayor ángulo.

3voto

Technophile Puntos 101

Excepto si $A,B,C$ son colineales, por cualquier $P$ sobre la no-reflex lado de $\angle ABC$, la única solución de $(t,u)$ a $\vec{BP}=t\vec{BA}+u\vec{BC}$ tienen $t,u\ge0$. Esto nos lleva a la siguiente algoritmo:

  1. Traducir todos los puntos, por lo $B$ está en el origen.

  2. En estas nuevas coordenadas, resolver el sistema lineal $$\begin{bmatrix}x_A&x_C\\y_A&y_C\end{bmatrix}\begin{bmatrix}t\\u\end{bmatrix}=\begin{bmatrix}x_P\\y_P\end{bmatrix}$$

  3. Si tanto $t$ e $u$ son no-negativos, tomar el no-reflex ángulo de $\alpha$ , resultante de la aplicación de la fórmula estándar para el ángulo entre dos vectores. De lo contrario, el complementario reflejo ángulo de $\theta$.

  4. Si $A,B,C$ son colineales, el sistema lineal en el paso 2 será indeterminado, y es fácil de comprobar si $\angle ABC=0$ (en cuyo caso $2\pi$ es devuelto) o $\pi$ (en cuyo caso $\pi$ es devuelto).

2voto

amd Puntos 2503

Usted puede resolver esto mediante la comparación de los signos de los tres factores determinantes. Vamos $$d_0 = \det\begin{bmatrix}B_x&B_y&1\\A_x&A_y&1\\C_x&C_y&1\end{bmatrix}.$$ This tells you the direction in which the vertices of $\triángulo{BAC}$ are traversed: positive means counterclockwise, negative clockwise, and the points are colinear if it's zero. Note that the area of this triangle is equal to $\frac12\lvert d_0\rvert = \frac12\lVert a-B\rVert\,\lVert C-B\rVert\,\lvert\sin\phi\rvert$, with $\lvert\phi\rvert\[0,\pi)$, así que cuando los puntos no colinear esta es otra manera de encontrar el ángulo entre ellos. Además, a diferencia del producto escalar, este determinante se puede distinguir entre izquierda y derecha. Por otro lado, no se puede decir el orden de los puntos cuando están colinear, que el producto escalar puede.

Ahora, suponiendo que $d_0\ne0$, comparar los signos de los correspondientes factores determinantes de la $\triangle{APB}$ e $\triangle{BPC}$ $$d_A=\det\begin{bmatrix}A_x&A_y&1\\P_x&P_y&1\\B_x&B_y&1\end{bmatrix} \text{ and } d_C=\det\begin{bmatrix}B_x&B_y&1\\P_x&P_y&1\\C_x&C_y&1\end{bmatrix},$$ respectively, to the sign of $d_0$: If they are all the same, then $P$ lies within the "narrow" side and you can use the angle $\theta$ computed in your question; if any differ, then $P$ is on the "wide" side and you want $2\pi\theta$. If either $d_A$ or $d_C$ is zero, ignore it; if both are zero, then $P=B$ and you might as well use $\theta$.

Si usted ampliar estos determinantes, usted podría encontrar que el resultado de las expresiones de aspecto familiar. Por ejemplo, $d_0 = (A-B)\wedge(C-B)$, donde $\mathbf v\wedge\mathbf w=v_x w_y-v_y w_x$ es la de "dos dimensiones de producto cruzado" de los vectores.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X