elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Análisis del vídeo del hackeo al Sindicato de los Mossos de Esquadra


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 487
1  Sistemas Operativos / GNU/Linux / Re: Solución del arranque de ubuntu despues de actualizar version en: 20 Noviembre 2016, 02:57
Hola, buenas nata3

Pues el problema es que cuando deinstalas virtualbox de la manera tradicional no funciona al 100%, quedan residuos en archivos de configuraciones, especialmente en el archivo de carga del kernel, por eso se edita y se elimina solo si está presente.

Mira, este es mi archivo /etc/modules :
Código:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
# vboxvideo

Si te fijas, en la última línea de abajo donde dice vboxvideo está comentada, con eso el módulo de video de virtualbox no se carga en el arranque del kernel y de esa manera inicia de manera limpia.

Lo he agregado al primer post.

Saludos.
2  Seguridad Informática / Seguridad / Re: Defense Main in the middle en: 5 Noviembre 2016, 01:52
jajajajaja vaya engel lex, te la has liado por no ver los videos antes xD

Pues si, es bastante mas segura pero aun tiene el mismo problema de diseño que una conexión normal y de todas maneras se puede hacer un MITM, en tu esquema falta un punto muy importante y es el punto de conexión entre el pc y el router y del router hacia internet hasta el servidor y del servidor a google (claro, entre el servidor y google hay un switch, firewall, etc), el tema no es que vamos a vulnerar la vpn.

Si te fijas, has tratado de levantar un servicio DNS que no te ha funcionado y tuviste que utilizar los dns manualmente de google, eso sucede porque has pasado el 100% del tráfico por la vpn de manera inclusiva y no exclusiva, cuando configuras openvpn de manera exclusiva usas el servicio dns de tu proveedor de isp y todo el resto pasa por la vpn o solo el rango de ip que tu quieres.

En este caso digamos que estoy en tu red pero tu estas pasando por tu vpn, pero no estas usando los dns del servidor sino de google, por lo cual basta con spoofear el router y cuando quieras ingresar a un sitio de manera segura por primera ves lo que hará tu navegador será consultar el registro A del servidor DNS, en ese momento nuestro servidor de ataque va a servir su propio servicio de DNS con bindns y va a decir.... yo soy 8.8.8.8 y digo que elbanco.com ahora tiene la ip x.x.x.x la cual es la ip del servidor atacante, entonces despues de eso restaura la conexión y suelta al router que estaba cautivo y cuando el navegador intente conectarse a elbanco.com ya tendrá en su caché la dirección ip del atacante y en ves de entrar al servidor del banco estará entrando al servidor del atacante, pero... entra por http o https? como lo hace para validar el certificado?, pues la mayoría de los portales bancarios no utilizan https en el front, solo en el login, asi que si el atacante simula el sitio del banco podrá crear un login sin ssl o es mas, si la cookie del banco no tiene configurado el flag "secure" entonces la cookie se va a enviar sin cifrar y el atacante con esa cookie podrá capturar la sesión de la victima y lo9guearse como el y tomar su sesión bancaria.

Estos casos son bastantes remotos porque el usuario debiera fijarse en el ssl antes de continuar, pero de todas maneras el MITM ya está efectuado porque la vpn no se ejecuta dentro de una red privada sino a traves de una extranet por internet, por lo cual, sigue siendo interceptable en ambos extremos.

Prevenir eficazmente el MITM no es tan facil como se aparenta, por ejemplo dell tiene una vpnssl de hardware muy buena de 1u el cual previene alguno de estos tipos de ataque, esto es una tarea mas que nada de parte del router, el prevenir la compartición de direcciones mac y modo promiscuo, los routers de casa no estan diseñados para eso, por eso en las buenas practicas se recomienda siempre verificar la huella digital de todos los certificados ssl antes de ingresar a un sitio y jamas aceptar certificados por revocación o expirados, hay que tener cuidado con el tipo de cifrado que no sea vulnerable a fuerza bruta como md5, rsa de 1024 hacia abajo, tls 1.0, diffie hellman, etc.
3  Seguridad Informática / Seguridad / Re: Defense Main in the middle en: 2 Noviembre 2016, 17:25
Usar SSL no es una solución para prevenir el capturado de tráfico a traves de un MITM, el atacante basta con que spofee el router y cuando la persona ingrese al servidor del atacante este entregue un certificado inválido y cuando el navegador vaya a consultar el certificado a alguna entidad certificadora el equipo del atacante le dirá que el certificado es válido y listo, ahora hechas a correr wireshark y le das el certificado ssl inválido que generaste y con eso ya te pueden capturar el tráfico cifrado.

Prevenir el MITM puede ser mas complejo de lo que se aparenta.
4  Programación / Java / ¿Cómo recibir un controlador y enviar un modelo al mismo tiempo en spring? en: 31 Octubre 2016, 19:26
Hola, tengo un controlador y un template, estoy usando Spring boot y Thymeleaf.

Por lo que yo entiendo, para poder manipular formularios debo crear un modelo y este enviarselo como objeto al formulario, hasta aca todo bien, el problema está en la petición post ya que por un lado recibo el modelo como argumento de la función pero ya no tengo el modelo para poder enviar datos al template.

Controlador:
Código
  1. @Controller
  2. public class Main {
  3.  
  4.    @GetMapping("/")
  5.    public String httpGet(Model model){
  6.  
  7.        FormModel form_model = new FormModel();
  8.        model.addAttribute("form_model", form_model);
  9.        model.addAttribute("demo", "abc");
  10.  
  11.        return "main_template";
  12.    }
  13.  
  14.    @PostMapping("/")
  15.    public String httpPost(@ModelAttribute ModelForm form_model){
  16.  
  17.        FormModel form_model = new FormModel();
  18.  
  19.        // <-- Cómo envío model al template si no tengo model?
  20.        model.addAttribute("form_model", form_model);
  21.        model.addAttribute("demo", "abc");
  22.  
  23.        return "main_template";
  24.    }
  25. }

Mi template:
Código
  1. <!DOCTYPE html>
  2.    <head>
  3.        <title>Demo</title>
  4.    </head>
  5.    <body>
  6.        <form class="form-signin" action="#" method="post" th:action="@{/}" th:object="${form_model}">
  7.            <input th:field="*{email}" required="required" type="email" />
  8.            <input th:field="*{password}" type="password" />
  9.            <p th:text="${demo}"></p>
  10.            <button type="submit">Submit</button>
  11.        </form>
  12.    </body>
  13. </html>

Lo que yo entiendo acá: https://spring.io/guides/gs/validating-form-input/ es que primero tengo una funcion para recibir la petición get, como argumento viene un objeto llamado model el cual se encarga de enviar variables al template, como por ejemplo el objeto encargado del formulario, despues en la petición post pasa un solo argumento de modelo el cual es el objeto del formulario mas un validador, hasta acá todo bien, digamos que hubo un error en el formulario y necesito volver a cargar el formulario, necesito pasar otraves el objeto, pero no tengo como mandarlo porque no tengo el objeto llamado model y tampoco puedo iniciarlo desde la función, entonces que hago?

¿cómo puedo recibir el modelo del formulario en una petición post y al mismo tiempo comunicarme con el contenido en html enviando variables?
5  Programación / Java / Re: Necesito una mano para calcular distancias XY en: 23 Octubre 2016, 22:14
Listo, ahora si quedó bien:

Código
  1.            // CW o CCW
  2.            if(clock_wise) {
  3.                this.angle += (diff_millisecond / 10);
  4.                 if(this.angle >= 360)
  5.                     this.angle = 0.0F + (this.angle % 360);
  6.            }else{
  7.                this.angle -= (diff_millisecond / 10);
  8.                if(this.angle <= 0)
  9.                     this.angle = 360.0F + (this.angle % 360);
  10.            }

He usado el módulo a modo de diferencia sobre el calculo real basado en condicionales, de esa manera puedo invertir el valor de la rotación sin tener el problema del desface ni desbordamiendo numérico :D

Acá va el código completo de la función de rotación:

Código
  1.    /**
  2.      * Actualiza la posición de los objetos
  3.      */
  4.    @Override
  5.    public synchronized void update() {
  6.        super.update();
  7.  
  8.        /**
  9.          * Control de frames.
  10.          * Controla los frames dependiendo del tiempo transcurrido,
  11.          * esto prefieve en desface por lagg.
  12.          */
  13.        if (last_millisecond == null) {
  14.            this.last_millisecond = Calendar.getInstance().getTimeInMillis();
  15.        }
  16.  
  17.        Long current_millisecond = Calendar.getInstance().getTimeInMillis();
  18.        Long diff_millisecond = current_millisecond - this.last_millisecond;
  19.        this.last_millisecond = current_millisecond;
  20.  
  21.  
  22.        /**
  23.          * Contexto.
  24.          * Calcula el grado de inclinación de los objetos y todo aquello
  25.          * que sea necesario para calcular distancias y posicionamiento.
  26.          */
  27.        if(!this.launched) {
  28.            // CW o CCW
  29.            if(clock_wise) {
  30.                this.angle += (diff_millisecond / 10);
  31.  
  32.                // Previene el desbordamiento (solo de 0 a 360)
  33.                if(this.angle >= 360)
  34.                    this.angle = 0.0F + (this.angle % 360);
  35.            }else{
  36.                this.angle -= (diff_millisecond / 10);
  37.  
  38.                // Previene el desbordamiento (solo de 360 a 0)
  39.                if(this.angle <= 0)
  40.                    this.angle = 360.0F + (this.angle % 360);
  41.            }
  42.  
  43.            // El valor modular es el mismo en ambos sentidos asi que deja de funcionar
  44.            // el sentido de rotación dinámico
  45.            // this.angle = (this.angle % 360);
  46.  
  47.        }else{
  48.            this.diameter_rotation_ship = this.diameter_rotation_ship + (diff_millisecond / 12);
  49.        }
  50.  
  51.  
  52.        /**
  53.          * Controlador.
  54.          * Controla el posicionamiento de los objetos para ser dibujado.
  55.          */
  56.  
  57.        // Cambia el tamaño
  58.        this.matrix.setScale(1, 1);
  59.  
  60.        // Rota la imagen a partir de su centro y base inferior vertical
  61.        this.matrix.postRotate(this.angle, this.image.getWidth() / 2, this.image.getHeight());
  62.  
  63.        // % del angulo de 0 a 360
  64.        Float angle_percent = ((this.angle * 100.0F) / 360);
  65.  
  66.        // -3.1415 a 3.1415 (-pi a pi)
  67.        // PI es la posición de grado 0 de inclinación y -PI es 360 grados, por lo cual 0 es 180 grados
  68.        // comenzando desde el punto superior vertical y centro horizontal.
  69.        // Calcula el porcentaje entre -pi y pi, en ves de esto se usa pi*2 y luego se resta pi.
  70.        Float alpha = -(((( ((Double)Math.PI).floatValue() * 2.0F) * angle_percent) / 100.0F) - ((Double)Math.PI).floatValue());
  71.  
  72.        // Añadidura de espacio en dirección hacia el grado de rotación del circulo principal
  73.        Float horizontal_padding = ((Double)Math.sin(alpha)).floatValue();
  74.        Float vertical_padding = ((Double)Math.cos(alpha)).floatValue();
  75.  
  76.        // Cantidad de espacio añadido (desde el centro hacia el borde del circulo principal,
  77.        // es la mitad del diametro o su radio)
  78.        horizontal_padding *= (this.start_circle.getWidth() / 2);
  79.        vertical_padding *= (this.start_circle.getHeight() / 2);
  80.  
  81.        // Posiciona el objeto al centro del circulo
  82.        this.matrix.postTranslate(
  83.                this.start_circle.getLeft() + (this.start_circle.getWidth() / 2) - (this.image.getWidth() / 2) + horizontal_padding,
  84.                this.start_circle.getTop() + (this.start_circle.getHeight() / 2) - this.image.getHeight() + vertical_padding
  85.        );
  86.    }
6  Programación / Java / Re: Necesito una mano para calcular distancias XY en: 23 Octubre 2016, 22:00
Asi es, tienes razón, el valor modular en ambos sentidos siempre es el mismo porque el resto es igual con valor negativo y valor positivo.

Código
  1.            // CW o CCW
  2.            if(clock_wise) {
  3.                this.angle += (diff_millisecond / 10);
  4.                if(this.angle > 360)
  5.                    this.angle = 0.0F;
  6.            }else{
  7.                this.angle -= (diff_millisecond / 10);
  8.                if(this.angle < 0)
  9.                    this.angle = 360.0F;
  10.            }
  11.  
  12.            // El valor modular es el mismo en ambos sentidos asi que deja de funcionar
  13.            // el sentido de rotación dinámico
  14.            // this.angle = (this.angle % 360);

Me di cuenta que también tendré que agregar la diferencia, por ejemplo si de 359 pasa a 361 entonces el grado debe quedar en 1 y no en 0 jajaja

Código
  1.            // CW o CCW
  2.            if(clock_wise) {
  3.                this.angle += (diff_millisecond / 10);
  4.                if(this.angle >= 360)
  5.                    this.angle = 0.0F + (this.angle - 360);
  6.            }else{
  7.                this.angle -= (diff_millisecond / 10);
  8.                if(this.angle <= 0)
  9.                    this.angle = 360.0F + this.angle;
  10.            }
  11.  
  12.            // El valor modular es el mismo en ambos sentidos asi que deja de funcionar
  13.            // el sentido de rotación dinámico
  14.            // this.angle = (this.angle % 360);

Si el grado es 365 entonces queda en 0 + (365 - 360) = 5 grados, el problema es cuando la cantidad de grados ha aumentado mas de una vuelta completa en un lagg, por ejemplo que de 1 grado haya llegado a 800, entonces: 0+(800-360)=440 entonces debo volver a disminuir el valor, en ese caso podría utilizar un resto o el módulo y vuelvo al mismo problema xD, creo que usar condicionales no era una buena opción a menos que use un while para recorrer todas las posibles disminuciones y el uso de CPU se va a elevar considerablemente cuando tenga muchos objetos, asi que trataré de pensar como voltear el valor aun usando módulo.

Saludos.
7  Programación / Java / Re: Necesito una mano para calcular distancias XY en: 23 Octubre 2016, 21:38
no está en sexagesimale, sino en radian XD casualmente media vuelta era 3.1416 grados cuando un circulo tiene incluso 2 pi de perimetro jejeje

hombre te has dado cuenta de detalles base de la ciencia rapido jejeje, en poco seguro das con turing u otro teorema de otra ciencia XD

exito con el programa ;)

Eaaa!! tienes razón, no sabía eso, por eso cuando dejaba funcionando la animación, despues de un minuto aprox la imagen de la nave se desfasaba un poco con respecto al planeta y daba la impresión que la nave se acostaba sobre el planeta en ves de estar de pie xD, me dije... creo que es un poco mas que 3.1 , despues leí tu post y bingo! era PI xD, asi que he modificado el script reemplazando 3.1 por pi y funciona mucho mejor:

Código
  1. Float alpha = -(((( ((Double)Math.PI).floatValue() * 2.0F) * angle_percent) / 100.0F) - ((Double)Math.PI).floatValue());

Como pi no es perfecto supongo que si dejo la animación varios dias temrinaré con la nave desfasada con respecto al planeta, eso pasó porque comenté la línea que hacia módulo de 360 para que despues de 360 vuelva a cero, pero da problemas cuando necesito invertir el valor (para hacer que gire en sentido contrario), pero ese es un problema mucho menor y solucionable.

Lo que haré para prevenir el desface es descomentar la función de módulo para que solo funcione entre 0 y 360 y buscar otro alternativo para invertir los valores dependiendo de la orientación.

Muchas gracias otraves :)
8  Programación / Java / Re: Necesito una mano para calcular distancias XY en: 23 Octubre 2016, 19:43
Finalmente quedó así:

Código
  1. /**
  2.      * Actualiza la posición de los objetos
  3.      */
  4.    @Override
  5.    public synchronized void update() {
  6.        super.update();
  7.  
  8.        /**
  9.          * Control de frames.
  10.          * Controla los frames dependiendo del tiempo transcurrido,
  11.          * esto prefieve en desface por lagg.
  12.          */
  13.        if (last_millisecond == null) {
  14.            this.last_millisecond = Calendar.getInstance().getTimeInMillis();
  15.        }
  16.  
  17.        Long current_millisecond = Calendar.getInstance().getTimeInMillis();
  18.        Long diff_millisecond = current_millisecond - this.last_millisecond;
  19.        this.last_millisecond = current_millisecond;
  20.  
  21.  
  22.        /**
  23.          * Contexto.
  24.          * Calcula el grado de inclinación de los objetos y todo aquello
  25.          * que sea necesario para calcular distancias y posicionamiento.
  26.          */
  27.        if(!this.launched) {
  28.            // CW o CCW
  29.            if(clock_wise) {
  30.                this.angle += (diff_millisecond / 10);
  31.            }else{
  32.                this.angle -= (diff_millisecond / 10);
  33.            }
  34.            // Previene el desbordamiento
  35.            this.angle = (this.angle % 360);
  36.        }else{
  37.            this.diameter_rotation_ship = this.diameter_rotation_ship + (diff_millisecond / 12);
  38.        }
  39.  
  40.  
  41.        /**
  42.          * Controlador.
  43.          * Controla el posicionamiento de los objetos para ser dibujado.
  44.          */
  45.  
  46.        // Cambia el tamaño
  47.        this.matrix.setScale(1, 1);
  48.  
  49.        // Rota la imagen a partir de su centro
  50.        this.matrix.postRotate(this.angle, this.image.getWidth() / 2, this.image.getHeight());
  51.  
  52.        // % del angulo de 0 a 360
  53.        Float angle_percent = ((this.angle * 100.0F) / 360);
  54.  
  55.        // -3.1 a 3.1
  56.        Float alpha = -(((6.2F * angle_percent) / 100.0F) - 3.1F);
  57.  
  58.        // Posiciona el objeto al centro del circulo
  59.        this.matrix.postTranslate(
  60.                this.start_circle.getLeft() + (this.start_circle.getWidth() / 2) - (this.image.getWidth() / 2) +
  61.                        (((Double)Math.sin(alpha)).floatValue() * (this.start_circle.getWidth() / 2)),
  62.                this.start_circle.getTop() + (this.start_circle.getHeight() / 2) - this.image.getHeight() +
  63.                        (((Double)Math.cos(alpha)).floatValue() * (this.start_circle.getHeight() / 2))
  64.        );
  65.    }

Le agregué la opción para rotar en sentido contrario cuando sea necesario.

Me di cuenta que la función cos y sin no inician directamente desde el grado 0 al 360 sino que utiliza valores mas extraños, por ejemplo el valor de alpha del 0 al 6.2 da una vuelta en 360 grados pero este inicia a partir de un costado y no desde el grado cero que es la parte superior central del circulo, por lo cual calculé que la posición de grado cero es 3.1 y para 360 es -3.1, por lo cual 180 grados son 0 en alpha, asi que lo que hice sin tener que utilizar el valor del tiempo dle frame como en el ejemplo que me diste, me basé mejor en el grado de inclinación haciendo que sea mas fluido para cualquier cantidad de fps, entonces tomé el porcentaje de 0 a 360 y me dió un valor, luego de 0 a 6.2 le saqué el valor de ese porcentaje y luego le resté 3.1 para que volviera otraves de 3.1 a -3.1 y listo! :D me anda de lujo en el pc y en el movil.



Muchas gracias por la ayuda.

Saludos.
9  Programación / Java / Re: Necesito una mano para calcular distancias XY en: 23 Octubre 2016, 18:04
jajajaja pues si, tenía varias opciones para controlar los fps, al comienzo solo sabia manejar animaciones en base al while del update del canvas, pero con el tiempo me di cuenta que la velocidad del while era diferente en diferentes dispositivos, en el pc era rápido, en el movil era mas lento y no siempre era una velocidad constante, a veces la velocidad variaba de muy rápido a muy lento o a veces producía pequeños cortes, entonces como el audio se desincronizaba con la animación se me vino la pregunta de como corregir esto:

Una opción era enviar el numero del frame al controlador para que la animación y la pista de audio se sincronizara en base a la velocidad del frame, pero despues de esto tuve otro problema, este problema consistia en que cuando se bloqueaba la app por un tiempo muy corto (menos de un segundo) tanto la animación como el juego se cortaban, entonces cuando el lagg era muy grande la animación se veia muy cortado y los controles ya no funcionaban bien porque para terminar una acción con un botón tenias que mantenerlos sostenido o perdias la acción. Despues me di cuenta que este tipo de desface tambien lo sufrian la mayoría de los juegos de videos antiguos como los de ps1, snes, emuladores, etc, y ahi me di cuenta que todos esos juegos viejos se basan en la sincronización por frames.

Cuando me pasó eso me di cuenta que los juegos de hoy no sucede eso, por ejemplo si la animación se está ejecutando y hay lagg entonces el desface hace que por ejemplo si lanzas una pelota y a mitad de camino se bloquea la app lo verás al final del camino cuando se desbloquee, eso quiere decir que la sincronización ya no depende del frame sino del tiempo, a diferencia de la sincronización por frame que cuando se desbloquea la app ahi recien se ve la siguiente posicion de la pelota.

Me di cuenta que esto solucionaría el problema del desface del audio ya que a pesar de que la animación se bloquee este no impide que la animación se siga sincronizando con el audio, a demás permite que pequeños lags no afecte a la experiencia final del juego ya que podrás seguir jugando a la velocidad que acostumbras a pesar de que dejes de ver un par de frames.

Por eso se me ocurrió calcular la diferencia del tiempo en milisegundos y en base a eso calcular la siguiente posición del dibujado del canvas, de esa manera no limito la animación a x cantidad de frames por segundo sino que en ves de eso en cada frame la app calculará la posición y la posicionará donde debe ir, de otra manera si el juego se sincroniza por frames y tiempos (frameskip) hará que un juego diseñado a 60fps no se vea a mayor velocidad en dispositivos con una taza de refresco mas alta, pero de esta manera la animación se adapta a la taza de animación soportada por el hardware y le da una mejor experiencia al usuario final.

Realmente no lo leí de otros lados, lo saqué en base a conclusiones solamente.

Estoy creando un motor de animación en android con físicas, un framework para crear cosas como juegos, animaciones tipo power point, presentación de documentos, animaciones en general de todo tipo, quiero hacer algo como unity 3d pero en lenguaje nativo usando librerías en ves de embeber una app dentro de otra, esto hará que el motor sea mucho mas optimizado que unity y las animaciones sean mucho mas fluidas ya que no necesitarás embeber un sistema en mono (c#) utilizando la interpretación de la interpretación de un código, sino de manera nativa directamente sin una interfaz gráfica, solamente utilizando código. Mas que nada para facilitar el uso de animaciones en apps incluyendo físicas. Como ejemplo estoy probando crear la animación de un cohete despegando de planeta en planeta.
10  Programación / Java / Re: Necesito una mano para calcular distancias XY en: 23 Octubre 2016, 04:24
Muy bien!, ahora me toca ajustar la relación entre grados y el alpha que se le asignó, porque si le paso como alpha directamente el angulo, rota muy rápido, por ejemplo mi circulo rota 360 grados cada 5 segundos aprox y el valor del alpha que se ajusta perfectamente es 0.022, asi que tocará ajustar eso que no creo que sea tan dificil.

Por lo menos lo que me tenía mas preocupado funciona de lujo.

Código
  1. float alfa= 360;
  2.  
  3.    @Override
  4.    public synchronized void update() {
  5.        super.update();
  6.  
  7.        // Control de frames
  8.        if (last_millisecond == null) {
  9.            this.last_millisecond = Calendar.getInstance().getTimeInMillis();
  10.        }
  11.  
  12.        Long current_millisecond = Calendar.getInstance().getTimeInMillis();
  13.        Long diff_millisecond = current_millisecond - this.last_millisecond;
  14.        this.last_millisecond = current_millisecond;
  15.  
  16.        // Contexto
  17.        if(!this.launched) {
  18.            this.angle = this.angle + (diff_millisecond / 10);
  19.            this.angle = (this.angle % 360); // Previene el desbordamiento
  20.        }else{
  21.            this.diameter_rotation_ship = this.diameter_rotation_ship + (diff_millisecond / 12);
  22.        }
  23.  
  24.        // Controlador
  25.  
  26.        // Cambia el tamaño
  27.        this.matrix.setScale(1, 1);
  28.  
  29.        // Rota la imagen a partir de su centro
  30.        this.matrix.postRotate(this.angle, this.image.getWidth() / 2, this.image.getHeight());
  31.  
  32.        // Posiciona el objeto al centro del circulo
  33.        this.matrix.postTranslate(
  34.                this.start_circle.getLeft() + (this.start_circle.getWidth() / 2) - (this.image.getWidth() / 2) +
  35.                        (((Double)Math.sin(alfa)).floatValue() * (this.start_circle.getWidth() / 2)),
  36.                this.start_circle.getTop() + (this.start_circle.getHeight() / 2) - this.image.getHeight() +
  37.                        (((Double)Math.cos(alfa)).floatValue() * (this.start_circle.getHeight() / 2))
  38.        );
  39.  
  40.        /*
  41.         this.matrix.postTranslate(
  42.                 this.start_circle.getLeft() + (((Double)Math.sin(alfa)).floatValue() * (this.start_circle.getWidth() / 2)),
  43.                 this.start_circle.getTop() + (((Double)Math.cos(alfa)).floatValue() * (this.start_circle.getHeight() / 2))
  44.         );
  45.         */
  46.  
  47.        alfa -= 0.022;//cambio 0.03 grados por frame
  48.        alfa %= 360; // limito a 360 grados
  49.        if(alfa == 0)
  50.            alfa = 360;
  51.    }
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 487
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines