1 votos

Cómo elegir un segundo punto en una línea kx+m para que esté más lejos en el sentido de las agujas del reloj

En primer lugar, perdón por la posible formulación burda de la pregunta. Sospecho que hay una forma más sofisticada, pero simplemente me falta la jerga específica del dominio. Espero que sea comprensible sin demasiadas molestias.

Supongamos que tenemos un casco convexo y que B y C son dos vértices adyacentes de muchos. Supongamos que tenemos una pendiente kb para una línea a través de B . Supongamos que tenemos una pendiente kc para una línea a través de C . Dada la información es fácil calcular el punto X donde se cruzan las dos líneas.

Me gustaría calcular el ángulo BXC . Es fácil en la mayoría de los casos creando los vectores BX y CX aplicando la fórmula:

arccos( BX punto CX / |BX| * |CX| )

El problema se produce cuando el punto de intersección X es el mismo que el vértice C . En tal caso, necesito otro punto en la línea que pasa por C porque el vector CX entonces es sólo el origen , es decir, (0,0). La obtención de estos puntos es trivial porque sólo tenemos que poner diferentes valores para t en la fórmula de la línea, kc t + mc .

El problema que no puedo resolver es cómo elegir dicho valor. Puede ser t < C.x pero también t > C.x y dependiendo de cuál elija, el ángulo calculado será diferente. Tengo que elegir t de manera que el segundo punto de la línea c sea más lejos en el sentido de las agujas del reloj de B que C es. ¿Cómo lo hago?

He tratado de relacionar la t a los otros puntos, a las coordenadas de B el punto D después de C etc. Sin embargo, parece que siempre hay un caso en el que deja de funcionar, así que supongo que necesito un empujón en la dirección correcta sobre cómo razonar aquí.

Hay que tener en cuenta que las pendientes kb y kc no se alinean con los lados del casco convexo y pueden ser o no paralelos a alguna arista del mismo. Sin embargo, sí son tangentes a los vértices.

1voto

amd Puntos 2503

Parece que quieres medir el ángulo entre $\vec{XB}=\vec{CB}$ y la segunda línea (la que no pasa por $B$ ) en el sentido de las agujas del reloj en este caso "degenerado". Como ha señalado, esto se reduce a la elección de un $t$ con el signo correcto para producir un punto $C'=C+t(1,k_c)$ . Para ello se puede utilizar el "producto cruzado bidimensional".

Para los vectores $\mathbf v$ y $\mathbf w$ , computa $\|\mathbf v\|\,\|\mathbf w\|\sin\theta=v_xw_y-v_yw_x$ y examinar su signo: si es positivo, entonces una rotación en sentido contrario a las agujas del reloj toma $\mathbf v$ en $\mathbf w$ si es negativo, la rotación es en el sentido de las agujas del reloj. Para su problema, tome $\mathbf v=B-C$ y $\mathbf w=(1,k_c)$ el vector de dirección de la segunda línea. Si éste es negativo, entonces un valor positivo de $t$ si es positivo, entonces querrá un valor negativo para $t$ .

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