2010-06-15 16 views
5

No soy matemático, pero de alguna manera me metí en el desarrollo de juegos como un hobby.Cómo reflejar un ángulo en el eje Y

Nunca he estudiado nada más allá de las matemáticas básicas, tengo muchos problemas para encontrar la forma de invertir el ángulo de algo, mirando en dirección opuesta, a lo largo del eje X & en el eje Y.

Una imagen vale más que 1000 palabras (palabras aunque sin educación especial): http://img156.imageshack.us/i/wihwin.png/

que básicamente quieren invertir la dirección del cañón objetos adheridos a un robot. Cuando el robot cambia de orientarse hacia la derecha y hacia la izquierda, hago (180 - angle) como todos me sugirieron, pero literalmente invierte el ángulo, haciendo que los cañones apunten hacia arriba cuando apuntan hacia abajo. Entonces, necesito hacer otra cosa, pero escapa a mi conocimiento.

Para ponerlo en otras palabras, trabajo en 2D, así que quiero un ángulo que esté orientado a la derecha a la izquierda. Mis ángulos se definen:

  • 0 siendo "totalmente a la derecha"
  • 180 "izquierda"
  • 90 "arriba" y
  • 270 "abajo"

quiero algo que apunta con un ángulo de 91 para convertir a 89 cuando se invierte. No hay un eje Z presente. ¿Alguien sería tan amable de ayudarme con esto?

+0

¿Está invirtiendo el ángulo en el eje derecho? Parece que estás haciendo z = 180-z en lugar de x = 180-x. De lo contrario, intente explicar mejor cuál es el problema. –

+0

¿El ángulo del cañón está vinculado al sistema de coordenadas del robot o es independiente? También asegúrese de verificar si los ángulos se miden en grados o radianes. – James

+0

. Realmente necesita fijar su sistema de coordenadas antes de abordar esto. – Pierreten

Respuesta

2

Esto es bastante difícil de responder sin saber un poco más acerca de cómo se definen los cañones en su juego, pero intentaré dar algunos consejos.

Parece que su cañón se ve desde un lado, y usted quiere que gire de derecha a izquierda pero manteniendo el cañón hacia arriba. El cálculo depende de qué dirección es 0, y si los ángulos corren en sentido horario o antihorario.

Si el ángulo de 0 tiene el cañón apuntando hacia arriba, entonces el ángulo se mide desde la posición vertical hacia arriba, en el sentido de las agujas del reloj. Por lo tanto, el ángulo inverso será -en ángulo. Si los ángulos negativos no funcionan, use (ángulo de 360).

Si el ángulo de 0 tiene el cañón apuntando hacia la derecha y un ángulo de 45 puntos hacia la parte inferior derecha, entonces los ángulos de cañón hacia arriba son de 180 a 360 con 270 en línea recta. Por lo tanto, para invertir un ángulo, usaría (540-angle).

Si el ángulo de 0 tiene el cañón apuntando hacia la derecha pero un ángulo de 45 puntos hacia la parte superior derecha, entonces los ángulos de los cañones son de 0 a 180. Para invertir el ángulo, use (180-angle).

Espero que ayude! Sotavento.

+0

"granangular" funcionó! Al menos en el aspecto de representación. Necesito comprobar si el motor considera que el objeto apunta en la dirección correcta. Aunque es extraño, juro que empujar un objeto con ángulo 0 hace que vaya bien en lugar de hacia arriba. ¡Voy a experimentar más, gracias! – MissHalberd

1

Depende de cómo defina su ángulo. Si lo defines en relación con el eje X, entonces el ángulo es realmente justo (180 - alfa).

+0

Sí, pero a diferencia de la imagen que agregué, obtengo la línea roja en el cuadrante inferior en su lugar ... – MissHalberd

+0

@MissHalberd: esto es probablemente porque no está definiendo realmente su ángulo relativo al eje X como se muestra en el diagrama. Espero que pueda estar definiéndolo en relación con el eje Y? –

1

Al observar su diagrama, los ángulos que ha marcado son los mismos; simplemente ha cambiado el punto de partida para ellos. Si realmente se pretende medir el ángulo de manera que 0 grados es hacia arriba, entonces es 360 - x

Por lo tanto si se ha dirigido a 45 grados, cuando se invierte es 360-45 = 315 grados

+0

Oh, mi intención era que el centro fuera común, debería haber dibujado flechas sobre ellos, pero en su lugar se vería como "velocidad" ... – MissHalberd

0

¿Dónde su punto de ángulo de cero grados, y ¿dónde apunta 90 grados?

Si el cero es recto, entonces podría hacer -1 * angle.

6

En respuesta a su edición lo que quieres, entonces es

-(x - 90) + 90 

es decir

180 - x 

Por supuesto, es probable que se trabaja en radianes, no grados si está utilizando las funciones C trigonométricas estándar entonces eso sería en realidad

M_PI - x 

Básicamente esto se divide en tres pasos

  1. (x - 90) ajusta su ángulo de modo que el punto cero esté en 90 grados.
  2. Negating this then voltea el ángulo transformado.
  3. Vuelva a agregar 90 para volver al rango de ángulo original.

Editar: Recién notado que esto es lo mismo que @Paul R pero parece que no crees que es correcto?

Cuestiones relacionadas