Pregunta

Tengo muchos aviones 3D. Lo que necesito saber es la forma de calcular el ángulo de aspecto. Espero que pueda calcular el ángulo de aspecto utilizando el vector normal proyectado de cada plano (mi ecuación de plano es ax+by-z+c = 0; por lo que el vector normal de este plano es a, b, -1) al xy plano. Luego, desde el eje y puedo calcular el ángulo de aspecto. Pero no sé cómo obtener el vector normal proyectado después de proyectar en el avión XY. Entonces, ¿puedo aplicar la ecuación que da ángulo entre dos vectores para calcular el ángulo de mi vector deseado del eje Y.

Por otro lado, descubrí que el ángulo de aspecto se define como el ángulo entre cualquier línea que pase a lo largo de la pendiente más empinada del plano y la dirección norte (aquí, eje y). ¿Seguirá esta definición, con mi forma propuesta que está tomando vectores normales? Quiero decir, ¿el vector normal proyectado siempre se da a lo largo de la pendiente más empinada del avión? Además, alguien me dijo, que este problema debería considerarse como un problema 2D. Por favor, comente y envíeme las fórmulas relevantes para calcular el ángulo de aspecto. Gracias.

¿Fue útil?

Solución

Algo de Google rápido revela la definición del ángulo de aspecto.

http://www.answers.com/topic/aspect-agle

Es el ángulo entre el norte geográfico en el hemisferio norte y el sur geográfico en el hemisferio sur. Entonces, básicamente, es una medida cuánto enfrenta una pendiente el poste más cercano.

Si su mundo es plano en lugar de esférico, simplificará las cosas, así que sí, un problema 2D. Haré esta suposición teniendo las siguientes implicaciones:

  • En un mundo esférico, el Polo Norte es un punto en la esfera. En un mundo plano, el "polo" es un plano en el infinito. Piense en un avión en algún lugar lejano en su mundo que denota "Norte". Solo la normalidad de este plano es importante en esta tarea. La unidad normal de este plano es norte(NZ, NY, NZ).
  • Arriba es un vector apuntando hacia arriba U(UX, UY, YZ). Este es el vector normal de la unidad del plano de tierra.

El vector normal de la unidad del plano V(A, B, C) ahora se puede proyectar en un vector PAGS En el plano de tierra como de costumbre: PAGS = V - (V punto U) U

Ahora es fácil medir el ángulo de aspecto del plano: es el ángulo entre el plano "polo" norte y el plano proyectado normal PAGS dada por acos(PAGS punto norte).

Dado que el norte es el eje Y positivo para ti, tenemos norte = (0, 1, 0). Y luego supongo que tienes arriba es U = (0, 0, 1), positivo Z. Esto simplificará aún más las cosas: para proyectar en el plano de tierra, solo eliminamos la partida Z. El ángulo de aspecto es entonces el ángulo entre (A, B) y (0,1).

aspectAngle = acos(b / sqrt(a*a + b*b))

Tenga en cuenta que los planos paralelos con el plano de tierra no tienen un ángulo de aspecto bien definido, ya que no hay pendiente para medir el ángulo de aspecto desde.

Otros consejos

¿Con qué tipo de superficies estás trabajando? ¿Tinas (redes irregulares triangulares) o demócratas (modelos de elevación digital)?

Si está utilizando imágenes ráster para crear sus superficies, el algoritmo para calcular el aspecto es básicamente una ventana móvil, que verifica un píxel central más los 8 vecinos.

Compare el central con cada vecino y verifique la diferencia en la elevación sobre la distancia (elevarse sobre la carrera). Puede parametrizar los controles de distancia (los vecinos del norte, sur, este y oeste están a distancia = 1 y noroeste, suroeste, sudeste y noreste están a distancia = SQRT (2)) para hacerlo más rápido.

Puede hacer esta pregunta en GIS.StAcExchange también. Muchas personas podrán ayudarte allí.

Editar:http://blog.geoprocessamento.net/2010/03/modelos-digitais-de-elevacao-e-hidrologia/

Este sitio web, Altirty en Portuguese, lo ayudará a visualizar el algoritmo. Después de calcular la pendiente más alta entre una celda central y sus ocho vecinos, asigna 0, 2, 4, 8, 16, 32, 64 o 128, dependiendo de la ubicación de la celda que presentó una pendiente más alta entre el centro y los vecinos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top