Sitio en cosntrucción

  • Enter Slide 1 Title Here

    This is slide 1 description. Go to Edit HTML and replace these sentences with your own words. This is a Blogger template by NewBloggerThemes.com...
  • Enter Slide 2 Title Here

    This is slide 2 description. Go to Edit HTML and replace these sentences with your own words. This is a Blogger template by NewBloggerThemes.com...
  • Enter Slide 3 Title Here

    This is slide 3 description. Go to Edit HTML and replace these sentences with your own words. This is a Blogger template by NewBloggerThemes.com...

Simple Mouse Hook - Windows API en C


Este código es un Mouse Hook, el cual permite tomar el control del mouse a nuestro programa en C/C++ en Windows usando la API de Windows. Con esto podemos crear rutinas para automatizar rutinas en la PC. La demo esta hecha en Codeblocks, en Windows 10.




Es un código muy simple y bastante facil de entender, el mismo esta disponible en mi GitHub, pueden acceder desde http://github.com/arielivandiaz/WinAPI
Share:

Obtener el color de un pixel con el cursor

Con este programa, basando en el anterior código de leer la posición del mouse, podemos leer el color RGB del pixel en el que se encuentra el cursor en Windows.

Con este programa podemos mapear imágenes en la pantalla sin necesidad de abrirla desde un archivo, directamente ir muestreando los pixeles y aplicar algun tipo de algoritmo para procesar la imagen o el patrón. 
Repositorio:
https://github.com/arielivandiaz/WinAPI/blob/master/Get_Color_Pixel/main.cpp


Share:

Leer posición del Mouse mucho mas Simple

Con respecto a la entrada anterior sobre este tema, en esta nueva entrada encontré una forma mucho más sencilla de leer la posición del mouse en Windows.
Es un código mucho mas corto e intuitivo que funciona a la perfección.

Repositorio:
https://github.com/arielivandiaz/WinAPI/blob/master/Mouse_Pos_2.0/main.c

/**
* Mouse Position Simple
* @Version 1.0
* @author Ariel Ivan Diaz
* @URL www.arielivandiaz.net
* \note Este programa immprime en consola la posicion del mouse
*/

#include <windows.h>
#include <stdio.h>

int main(int argc, char** argv)
{
    while(1)
    {
        POINT mouse; //Estructura que contiene las coordenadas
        HDC _hdc = GetDC(NULL);  //Crea el contexto
        if(_hdc)
        {
            GetCursorPos(&mouse);
             printf("La posicion del mouse es %d ; %d \n", mouse.x,mouse.y);
        }
    }
    return 0;
}

Share:

Métricas de Algoritmo de Simulación de Partículas

Resumen:
Basándose en el código del TP de CS267   de la Universidad de Berkeley, se busca evaluar la performance de este algoritmo de simulación de partículas en Serie, OpenMP y CUDA. Se compararon los resultados y se sacaron conclusiones.


Link de la Presentación:
Código:

Share:

Leer la posición del Mouse en Windows



Este programa imprime en consola las coordenadas en las que se encuentra el puntero del mouse en la pantalla. Cada vez que se mueve el mouse se actualiza la consola con la nueva posición y el programa se detiene cuando se presiona Escape.

Repositorio:


Share:

Crear un Widget para insertar About.me en nuestra web

Personalmente le tome mucho cariño a about.me por la posibilidad que brinda de ser una elegante tarjeta de presentación online en la que se pueden vincular todas nuestras redes sociales y demás. Después de varios años sin usarlo, volví hace poco para actualizar mi perfil y poder usarlo como presentación en mi blog. No existe un widget de about.me para insertar en Blogger, antes existía para Wordpress pero el nuevo diseño de about.me ya no lo permite. Es por eso que me tuve que tomar el trabajo e buscar una forma de adaptar mi “elegante” tarjeta de presentación para poder insertarla como un widget HTML/Javascript tanto para Blogger como para cualquier otra web, y procedo a compartir.

Sin más preámbulo el código utilizado se basa en crear un <iframe> que es una potente característica de HTML en la cual meter muchas cosas, en este caso embeber la web de about.me. El problema es que para que poder contener la web entera en un espacio pequeño hay que escalarla y setear bien las divisiones <div> de nuestra web para que todo encaje. 

Para todo esto recurrimos al siguiente código:

<iframe id="iframe" width="345" scrolling="no"  height="1020" frameborder="0" src="http://about.me/arielivandiaz" style="
transform: scale(0.63); /*En general*/
-webkit-transform: scale(0.63); /*Para Chrome y Safari */
-webkit-transform-origin: 0 0;
-ms-zoom: 0.63; /*Para Internet Explorer */
-moz-transform: scale(0.63); /*Para Firefox */
-moz-transform-origin: 0 0;
-o-transform: scale(0.63);  /*Para Opera */
-o-transform-origin: 0 0;
">&nbsp;</iframe>


Share:

Optimización de PSO utilizando OpenMP

En este nuevo proyecto se busca optimizar el algoritmo de optimización por enjambre de partículas, al hacerlo correr en paralelo mediante OpenMP.

Link presentación:

Share:

Análisis de Optimización por Enjambre de Partículas en Procesamiento Serie para Computación de Alta Performance

Resumen
En este trabajo se estudia la ejecución del algoritmo estándar de enjambre de partículas (Estándar PSO[1]) en su ejecución en serie para la resolución de distintos problemas. Se realizaron pruebas en 3 plataformas muy distintas y se obtuvieron resultados que se interpretaron en gráficas para realizar las correspondientes conclusiones.
Introducción


La optimización por enjambre de partículas es un método para la resolución de problemas basado en el comportamiento natural de partículas en un espacio multidimensional. Este es un algoritmo muy utilizado para realizar optimizaciones de grandes y complejos problemas científicos. Consiste en distribuir de forma aleatoria un conjunto de partículas en un espacio y en el cual se encuentra la función del problema que se está estudiando, y estas partículas se moverán por el espacio interactuando entre ellas para ubicarse en torno a un sector que representara la solución al problema.


Conclusión
La ejecución en serie de esta optimización permitirá realizar las correspondientes evaluaciones de métricas de programa cuando se implemente este en paralelo en un futuro proyecto. Este trabajo permitió entender que la solución de cada problema puede optimizarse mejor mientras mejor sea el estudio que se tiene sobre el problema y de que configuración se necesitaría para su optimización. También que distintas plataformas y arquitecturas pueden resultar mejor para ciertos casos, no solo para ciertos problemas sino para las distintas configuraciones de optimización.
Se plantea entonces que para una aplicación seria de PSO se deberían realizar pruebas para evaluar cuál sería el mejor camino para configurar la optimización y así ahorrar tiempo de cálculo.


Trabajo Completo Pendiente de Publicación.

Share:

Imperial March with STM32F4 Discovery


Share:

Algoritmo de backtracking recursivo y no recursivo para la resolución de un laberinto y su aplicación en SDL

Proyecto Final de Cátedra
Informática II
UTN FRBB


Resumen
En este proyecto se planteó como problema la resolución de un laberinto mediante un programa en el cual se apliquen los conocimientos obtenidos en la cátedra de Informática II. Para cumplir este objetivo se tuvo en cuenta hacer énfasis en temas desarrollados en clase, como el uso de árboles, dispositivos periféricos, programación orientada a objetes e interfaz gráfica.
Para la resolución del laberinto se desarrolló una función en base al algoritmo de backtracking, agregándole la construcción de un árbol para mapear y almacenar la solución  del laberinto. Dada la eficacia y simpleza de este algoritmo recursivo, se optó por desarrollar una función alternativa de backtracking usando iteración en lugar de recursividad. Se probaron ambas funciones para medir su rendimiento, y se estudiaron los beneficios de usar una o la otra.

Con el fin de darle un contexto a este problema, se procedió a darle una interfaz gráfica para poder visualizar y percibir la resolución del laberinto. Se escogió para este fin, usar las bibliotecas SDL, y para aprovechar estas, se desarrolló un juego entre la computadora ejecutando los algoritmos estudiados y el o los usuarios usando un joystick para moverse dentro del laberinto.

Trabajo completo:
Share:

Introducción a los Calculos Geoespaciales en C

Trabajo Final de Cátedra
Informática I
UTN FRBB


Resumen

El objetivo de este proyecto es crear un programa que realice cálculos geoespaciales, usando los contenidos aprendidos en la cátedra de Informática I, de primer año, Ingeniería Electrónica. Dada la naturaleza del proyecto se debió realizar una investigación sobre los conceptos geográficos, geodésicos y   matemáticos para los cálculos astronómicos implementados.         
La matemática utilizada se divide en dos áreas: los sistemas de representación y el cálculo de la distancia entre dos puntos. Se aproximó la geometría de la Tierra usando dos modelos: la Esfera y Elipsoide Terrestre. En el primer caso la distancia se calcula usando la fórmula de Haversine[1] y en  el segundo caso se utilizó la fórmula de Vincenty[2]. Una vez analizados los conceptos necesarios se procedió a desarrollar el programa e integrar las distintas fórmulas matemáticas como algoritmos de programación. Finalmente se realizaron pruebas de comparación con los resultados obtenidos.

Presentación
Este trabajo fue presentado en las 41° Jornadas Argentinas de Informática (JAIIO41) y obtuvo el segundo puesto en el Concurso de Trabajos Estudiantiles.

Link a la publicación

Share:

Introducción a SDL


Las siglas SDL significan Simple DirectMedia Layer, son un conjunto de librerías desarrolladas en C y proporcionan funciones básicas para realizar operaciones multimedia en espacios de dos dimensiones y para ir más allá de estas dimensiones también ofrece la posibilidad de integrar OpenGL. Brinda la posibilidad de una fácil gestión de sonido, imágenes, tipografías, archivos y periféricos. Es un entorno diseñado para la programación de videojuegos, lo cual significa que tiene poca complejidad en cuanto a la programación, lo cual permite crear una interfaz gráfica de una forma relativamente rápida y sencilla en comparación por ejemplo a la utilización de la API de Windows.

SDL fue desarrollada inicialmente por Sam Lantinga, un desarrollador de videojuegos para la plataforma GNU/Linux, y pese a estar programado en C, tiene adaptaciones a otros lenguajes de programación como C++, Ada, C#, BASIC, Erlang, Lua, Java,Python, etc. Una de sus grandes virtudes es el tratarse de una biblioteca multiplataforma, siendo compatible oficialmente con los sistemas Microsoft Windows, GNU/Linux,Mac OS y QNX, además de otras arquitecturas y sistemas como Sega Dreamcast, GP32, GP2X. La biblioteca se distribuye bajo la licencia LGPL, que es la que ha provocado el gran avance y evolución de SDL.

La decisión de trabajar sobre estas librerías fue la posibilidad de crear interfaces gráficas en base de archivos de imágenes los cuales pueden ser diseñados, editados y actualizados de forma independiente, posibilitando una gran carga visual sin agregar complejidad al programa. También SDL permite un fácil manejo de un periférico que fue clave para varios de mis trabajos que es el Joystick USB, el cual en otro caso debería ser manejado por  complicadas llamadas instrucciones de DirectInput (Librería de DirectX).


La  principal tarea que tiene  SDL  en este programa es encargarse de gestionar el joystick, simplificando la tarea al no tener que hacer complicadas llamadas instrucciones de DirectInput (Librería de DirectX). En segunda medida se encarga de la creación de la interfaz gráfica,  la cual se gestiona de una forma muy simple con unas simples llamadas a funciones y es independiente del sistema operativo que usemos.


 joystick para moverse dentro del laberinto.
Share:
Copyright © Blog de Ariel Ivan Diaz | Powered by Blogger
Design by SimpleWpThemes | Blogger Theme by NewBloggerThemes.com | Distributed By Blogger Templates20