elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 21:32  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Littlehorse)
| | |-+  Ayuda con reloj, algoritmo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con reloj, algoritmo.  (Leído 2,488 veces)
Castiblanco


Desconectado Desconectado

Mensajes: 2.411


Coding :D


Ver Perfil WWW
Ayuda con reloj, algoritmo.
« en: 28 Agosto 2010, 21:22 »

Bueno lo que necesito es una manito con un algoritmo, ideas de como realizarlo.

Lo que tengo que hacer es un reloj como dice el titulo. Es en Java en un applet pero bueno eso no importa mucho.

Pongo una imagen de fondo como esta:



Pero sin las manecillas y pues con el programa tengo que hacer que muestre la hora.

Las manecillas la voy hacer con:

Código
    	g.drawLine(x1, y1, x2, y2)

Donde x1 y y1 son el centro del reloj lo cual siempre sería constante, pero x2 y y2 es el que tiene que variar.

Voy hablar del minutero, supongamos que el largo es "Largo" entonces cuando tiene que pararse sobre el minuto 0,15,30 y 45 quedaría.

Código
    	g.drawLine(x1, y1, x1, y1-largo)//minuto 0
Código
    	g.drawLine(x1, y1, x1+largo, y2)//minuto 15
Código
    	g.drawLine(x1, y1, x1, y1+largo)//minuto 30
Código
    	g.drawLine(x1, y1, x1-largo, y1-largo)//minuto 45

Creo que así, pero cuando me toque calcular diagonales como las calculo?

Cualquier idea es valida o ayuda me serviría mucho.

Saludos...


En línea


Deuteronomio 13:6, 13:10 ;)
16BITBoy

Desconectado Desconectado

Mensajes: 137


En mi pompa..


Ver Perfil WWW
Re: Ayuda con reloj, algoritmo.
« Respuesta #1 en: 29 Agosto 2010, 02:17 »

Eso se resuelve mejor con calculo de coordenadas polares.
Usa un ángulo y la longitud que tiene la manecilla, entonces podrás hacerlo girar tanto como quieras.
http://es.wikipedia.org/wiki/Coordenadas_polares


En línea

Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".
Castiblanco


Desconectado Desconectado

Mensajes: 2.411


Coding :D


Ver Perfil WWW
Re: Ayuda con reloj, algoritmo.
« Respuesta #2 en: 30 Agosto 2010, 00:43 »

Gracias por tratar de ayudarme, la verdad me pareció muy complejo lo que tu me dices.

Opte por hacerlo de otra manera, explico por si alguien en un futuro entra y tiene la misma duda.

Hablando del segundero, en su iteración hace 60 paradas por decirlo de algún modo, entonces dividimos esos 60 en 360 = 6. entonces hacemos algo para calcular el angulo dependiendo el segundo.

Código
int angulosegundo =  90 - (segundos * 6);

Luego de eso utilizamos la matemáticas. tenemos X que es la longitud de la manecilla entonces, sabemos el angulo y sabemos la hipotenusa, solo es hallar el cateto adyacente y tenemos el x2 (el de g.drawLine(....)) y con el x2 el y2 sale inmediato.

Básicamente ese es el único problema del ejercicio.

Saludos...

En línea


Deuteronomio 13:6, 13:10 ;)
Lunfardo


Desconectado Desconectado

Mensajes: 560


Ver Perfil
Re: Ayuda con reloj, algoritmo.
« Respuesta #3 en: 30 Agosto 2010, 17:09 »

jaja con pitagoras o trigonometria =P

igual tenes que trabajar con los angulos, seria mas eficiente
En línea
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.647


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Ayuda con reloj, algoritmo.
« Respuesta #4 en: 30 Agosto 2010, 20:02 »

Es un reloj, no un transbordador espacial. Si a él le parece más fácil así, pues bien!

Las coordenadas polares es buena solución, pero da igual xD

Saludos!
En línea

Castiblanco


Desconectado Desconectado

Mensajes: 2.411


Coding :D


Ver Perfil WWW
Re: Ayuda con reloj, algoritmo.
« Respuesta #5 en: 30 Agosto 2010, 23:47 »

El problema es que los de la Wikipedia piensan que uno es un matemático y son muy técnicos en sus explicaciones, nada como los vídeos del youtube para esas cosas :p
En línea


Deuteronomio 13:6, 13:10 ;)
NSaneBMX

Desconectado Desconectado

Mensajes: 128


Hello World!


Ver Perfil
Re: Ayuda con reloj, algoritmo.
« Respuesta #6 en: 31 Agosto 2010, 02:36 »

Buueno, hace muchisisisimo tiempo que deje de programar en Java, asi que te voy a ayudar mostrandote un algoritmo de manera matematica, despues lo pasas a Java..  ;D

Para esto es necesario Calcular senos y cosenos, una vez usandolos, nos acostumbraremos rapidamente a ellos  :D

 Para este ejemplo, vamos a suponer que el segundero va en el segundo 45, el largo de la manecilla es de 50px, y la posicion central de la manecilla es 60px.

-Para calcular su angulo, realizamos la siguiente operacion...

 AnguloSeg = ( Segundo * 360) / 60 - 90

 Equivalente a...
 AnguloSeg = ( 45 * 360) / 60 - 90
 
 Le restamos un desfase de 90 grados, de modo que la aguja apunte hacia ariba
 cuando este en 0..

 Entonces...
 AnguloSeg = 180

 Ya tenemos el angulo de la manecilla, ahora falta calcular las posiciones x2 e y2, que serian las puntas..

-Calcular la posicion x2 de la manecilla

  Coseno = Cos( AnguloSeg * ((2 * 3.1415) / 360))

  Equivalente a..
  Coseno = Cos( 180 * ((2 * 3.1415) / 360))

  Entonces..
  Coseno = -1.0

  sabiendo el Coseno, lo multiplicas por el largo de la manecilla, y a eso, le agregamos el centro de la manecilla, que seria x1...

  x2 = Largo * Coseno + x1

  Equivalente a...
  x2 = 50 * -1.0 + 60

  Entonces...
  x2 = 10.0

 ;Calcular la posicion y2 de la manecilla

 Seno = Sin(AnguloSeg * ((2 * 3.1415) / 360))

 Equivalente a...
 Seno = Sin( 180 * ((2 * 3.1415) / 360)

 Entonces...
 Seno = 0.00000002433593

  sabiendo el Seno, lo multiplicas por el largo de la manecilla, y a eso, le agregamos el centro de la manecilla, que seria y1...

  y2 = Largo * Seno + y1

  Equivalente a...
  y2 = 50 * 0.00000002433593 + y1

  Entonces...
  y2 = 60.000001216796441

 Bueno, espero haya servido de ayuda.. cualquier duda, aqui estare.. ;D
En línea

ASUS M2N SLI-Deluxe 5001, Phenom II x4 945 3000Mhz Deneb, Cooler Master Hyper N620, ATI HD6870 1GB, 4Gb RAM 800mhz, 250GB SATA II, 500GB SATA II, Cooler Master GX 550W.
NSaneBMX

Desconectado Desconectado

Mensajes: 128


Hello World!


Ver Perfil
Re: Ayuda con reloj, algoritmo.
« Respuesta #7 en: 3 Septiembre 2010, 04:25 »

De nada..  ;)
En línea

ASUS M2N SLI-Deluxe 5001, Phenom II x4 945 3000Mhz Deneb, Cooler Master Hyper N620, ATI HD6870 1GB, 4Gb RAM 800mhz, 250GB SATA II, 500GB SATA II, Cooler Master GX 550W.
Castiblanco


Desconectado Desconectado

Mensajes: 2.411


Coding :D


Ver Perfil WWW
Re: Ayuda con reloj, algoritmo.
« Respuesta #8 en: 3 Septiembre 2010, 04:28 »

Si ves mi segundo mensaje creo que es lo mismo que tu dices, solo que no explique todo pues no lo vi tan necesario.

"Luego de eso utilizamos la matemáticas. tenemos X que es la longitud de la manecilla entonces, sabemos el angulo y sabemos la hipotenusa, solo es hallar el cateto adyacente y tenemos el x2 (el de g.drawLine(....)) y con el x2 el y2 sale inmediato."

Igual gracias por tomarte el trabajo de responder ;)

Saludos...
En línea


Deuteronomio 13:6, 13:10 ;)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines