Conversión de coordenadas sobre Basic 1.1

Si tienes alguna duda y crees que alguien podría resolverla, ponla aquí. || If you have any doubt about programming, post it here.

Moderador: Administradores

Barbarian 1.0
8 bits
8 bits
Mensajes: 22
Registrado: 11 Nov 2011 19:19

Conversión de coordenadas sobre Basic 1.1

Mensajepor Barbarian 1.0 » 14 Nov 2011 08:33

Antes que nada saludar a todos los foreros en este mi primer mensaje (y tema) y agradecer de antemano la ayuda que solicito ahora ante vosotros.

El problema a muchos os parecerá bien simple de resolver, dado que es solo una cuestión de Basic elemental (V1.1), que a mi años ya he olvidado en su mayoría desde que tecleaba sobre un Amstrad CPC 6128; Ahora estoy con un emulador del mismo para PC haciendo pinitos en programación como cuando era un chaval.

Iré al grano: necesito conocer la sintaxis correcta para convertir unas coordenadas desde un sistema que parte desde 0º a 360º y otro ecuatorial 0º, +180 y -180.

No estoy pidiendo que se me redacten todas las líneas de código, solo las que comprenden las expresiones matemáticas necesarias, del resto me encargo yo.

Barbarian 1.0
8 bits
8 bits
Mensajes: 22
Registrado: 11 Nov 2011 19:19

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor Barbarian 1.0 » 14 Nov 2011 08:36

... Y otra cosa. Con el emulador WinArnie del CPC ¿como uso el cursor copia? en ocasiones necesito copiar trozos del código de unos programillas que estoy desarrollando a otros y en el teclado de mi PC no tengo las teclas del CPC para ello.

Gracias de antemano por las respuestas.

Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor na_th_an » 14 Nov 2011 09:48

Desconozco qué es un sistema ecuatorial y toda la pesca, pero por sentido común, si quieres convertir algo que va de 0 a 360 a algo que va de -180 a +180, simplemente réstale 180 a lo primero.

De ese modo 0 se convierte en -180, 180 en 0, y 360 en 180, por poner tres valores.

Barbarian 1.0
8 bits
8 bits
Mensajes: 22
Registrado: 11 Nov 2011 19:19

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor Barbarian 1.0 » 14 Nov 2011 12:19

na_th_an escribió:Desconozco qué es un sistema ecuatorial y toda la pesca, pero por sentido común, si quieres convertir algo que va de 0 a 360 a algo que va de -180 a +180, simplemente réstale 180 a lo primero.

De ese modo 0 se convierte en -180, 180 en 0, y 360 en 180, por poner tres valores.


Gracias por responderme. En realidad el problema no es tan sencillo, hasta eso alcanzo :lol:

Lo de las coordenadas va como te explico ahora. Tu imagina una esfera, por ejemplo nuestro planeta. Tenemos en él un sistema de coordenadas que funciona de esta forma: la esfera se "parte" en dos mitades por el ecuador (la mitad desde el Norte hasta el Sur). Ese centro o ecuador es 0º (cero grados) si nos desplazamos hacia "abajo" del planeta, el Sur, son grados negativos, pero solo hasta -90º que queda sobre la Antártida. Si nos desplazamos hacia el Norte desde los 0º del ecuador terrestre, igualmente llegamos hasta los +90º. Esto es lo que concierne a la Latitud Norte-Sur. En el desplazamiento "lateral", de Este a Oeste, tenemos +180º y -180º que comienzan en el Meridiano de Greenwich, que son los 0º. Hacia el Este se suman grados positivos hasta alcanzar los 180º, hacia el Oeste lo mismo pero en grados negativos. Luego al alcanzar los 180º grados positivos, se continúa en decreciente por los negativos, o sea, que lo que sigue en la trayectoria a 180º positivos es -180º como este ejemplo:

+178º, +179º, +180º, -180º, -179º, -178º y así hasta 0º.
Imagen

Mi problema consiste en que si quiero calcular los grados desde unas coordenadas a otras restándolas, el programa debe entender que trabaja sobre estos parámetros, de otra forma, si por ejemplo quiero calcular los grados de diferencia entre -150º a -85º, debería de darme como respuesta 65º, pero me da -65.

Lo puedes ver con estas lineas de código:

10 cls
15 deg
20 input a
30 input b
40 print a-b

También si quiero calcular la diferencia entre (por ej.) +120º y -70º, me salen 190º debería darme como respuesta 170º, ya que realmente son 60º desde +120 hasta +180º y luego los que siguen desde -180º hasta -70º son 110º. 60+110= 170º.

El Basic puede entender que trabajamos con grados si se le incluye el comando DEG, pero aún así no sabe interpretar esto correctamente, parece que solo influye en los gráficos a la hora de dibujar circunferencias y cosas así.

¿Cómo lo hago?

Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor na_th_an » 14 Nov 2011 14:10

DEG no se sirve porque lo único que hace es decirle a BASIC que los grados de funciones como SIN o COS vendrán en grados sexagesimales y no en radianes.

En primer lugar, cualquier distancia debe tomarse como el valor absoluto del resultado que sea. No tiene sentido una distancia negativa.

Tu problema de restas es porque tú necesitas la distancia más corta. La respuesta que te da el basic está bien, solo que haciendo una simple resta siempre avanzas en la misma dirección y, en este caso, resulta ser la más larga.

Se puede hacer de mil formas, pero esta me parece muy sencilla: si el resultado es mayor que 180, devolver 360 - resultado.

Código: Seleccionar todo

10 INPUT a
20 INPUT b
30 LET c = ABS (b - a)
40 IF c > 180 THEN c = 360 - c
50 PRINT c

Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor na_th_an » 14 Nov 2011 14:14

Lo de arriba es para la longitud. Para la latitud el problema es más sencillo. Te vale con aplicar el valor absoluto.

Código: Seleccionar todo

c = ABS (b - a)

Barbarian 1.0
8 bits
8 bits
Mensajes: 22
Registrado: 11 Nov 2011 19:19

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor Barbarian 1.0 » 14 Nov 2011 15:10

na_th_an escribió:Lo de arriba es para la longitud. Para la latitud el problema es más sencillo. Te vale con aplicar el valor absoluto.

Código: Seleccionar todo

c = ABS (b - a)


Muchísimas gracias, lo he probado y funciona de la forma que quería. Te debo una :wink:

Avatar de Usuario
Anjuel
256 bits
256 bits
Mensajes: 8771
Registrado: 23 Dic 2004 16:36
Ubicación: Torreznolandia

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor Anjuel » 14 Nov 2011 15:21

Ya nos enseñarás el resultado :D

Barbarian 1.0
8 bits
8 bits
Mensajes: 22
Registrado: 11 Nov 2011 19:19

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor Barbarian 1.0 » 21 Nov 2011 10:50

Anjuel escribió:Ya nos enseñarás el resultado :D


¿Y como hago eso? ¿de que forma puedo copiar el código desde un programa como Winarnie o Arnold y pasarlo a un TXT?

Barbarian 1.0
8 bits
8 bits
Mensajes: 22
Registrado: 11 Nov 2011 19:19

Re: Conversión de coordenadas sobre Basic 1.1

Mensajepor Barbarian 1.0 » 21 Nov 2011 11:20

También me sirve con cualquier otro emulador, ya me he bajado el WInApe y el Caprice, pero no veo que posean esa capacidad, la opuesta sí, que permite pegar texto con el "Autotype"

gracias


Volver a “Programación | Programming”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado