jueves, 5 de diciembre de 2013

Instalar VTK con soporte de Qt y Python en Windows


0. Descargar e instalar Visual Stuido 2010, CMake, Qt4.x y Python con Setup Utils y Easy_install

1. Descargar y descomprimir VTK.

2. Abrir CMake y configurar el proyecto, debemos:
  • establecer la herramineta de compilación (VS2010) 
  • marcar las opciones de generación para el Wrapper de Python y el uso de Qt
  • establecer los directorios donde se encuentra nuestra instalación de Python, la herramienta qt-make y el directorio de instalación.
3. Configurar y generar. Que nos generara una solución para Visual Studio que es con la que trabajaremos a partir de ahora.

4. Abrimos la solución y la construimos a nuestro gusto (es decir en modo Debug, Release, etc).

5. Después buscamos el proyecto INSTALL dentro de la solución y lo ejecutamos. Si todo va bien ya podremos empezar a trabajar con VTK en C++ pero para poder usarlo en Python nos quedan un par de pasos mas.
  • Si nos da un error indicando que no se ha establecido la variable PYTHONPATH, debemos añadirla al sistema con el valor de la ruta en la que se esta intentando copiar el paquete .egg de python (nos lo indica el error)

6. Ahora vamos a Python e instalamos el paquete .egg generado para lo que escribimos:
  • easy_install C:\Ruta_paquete_dado_por_PYTHONPATH\VTK-6.0-py2.7.egg
7. Añadir al path del sistema los directorios bin de la instalación de Qt (por ejemplo C:\Qt\4.8.5\bin) y VTK (normalemente algo como C:\nuestro_directorio_salida_VTK_cmake\bin ).

8. Para probar que funciona todo bien entramos en la consola de python y escribimos "import vtk" .

martes, 26 de noviembre de 2013

Instalar LaTeX en Windows en 4 pasos

Parafraseando a la Wikipedia, LaTeX es un sistema de composición de textos, orientado especialmente a la creación de libros, documentos científicos y técnicos que contengan fórmulas matemáticas. Pero puede ser utilizado para componer y maquetar cualquier documento y de echo con un poco de práctica su uso es más eficiente que el trabajo con programas como Libre Office Writer o Word. Eso si los inicios no son fáciles pero todo es ponerse y para ello solo hay que seguir unos cuantos  pasos:

  1. Descargar el software necesario para trabajar cómodamente:
  2. Instalar todo en el mismo orden de descarga y a poder ser como admin.
  3. Configurar y actualizar los paquetes de MiKTeX para ello ejecutamos la aplicación Settings(Admin).
  4. Ejecutar Texmaker para crear nuestro primer documento.

miércoles, 13 de noviembre de 2013

Ejecutar un script sh (o comando) cada cierto tiempo

Tan simple como:

$watch -t -n secs ./script.sh

donde secs es el intervalo de tiempo en segundos cada el que queremos ejecutar script.sh. Para ejecutar un comando simple basta con substituir el script por el comando deseado, por ejemplo:

$watch -n 10 ps -l

para listar los procesos activos cada 10 segundos. Si queremos ejecutar un comando compuesto deberemos añadir la opción -x o simplemente poner el comando entre comillas simples. Otras opciones bastante útiles son -d para resaltar los cambios en los resultados producidos entre ejecuciones o -t para evitar que se muestre la cabecera del programa.

jueves, 25 de julio de 2013

Code Snippets I: obtener ángulo vector en Java

    /**
   * Obtiene el angulo con respecto de la horizontal de un 

   * vector definido en el plano calculando en primer lugar el 
   * arco tangente y después comprobando el cuadrante en el que
   * se encuentra.
   * @param x0 Coordenada X del punto origen del vector.
   * @param y0 Coordenada Y del punto origen del vector.
   * @param x1 Coordenada X del punto final.
   * @param y1 Coordenada Y del punto final.
   * @return Ángulo en radianes.

   * @author K.Stopa - GPLv3
   */
public double getAngle(double x0, double y0, double x1, double y1) 

{       
        double dx = x1 - x0;
        double dy = y1 - y0;
        double dy0 = dy;
        double dx0 = dx;
        if (dx < 0.0) dx0 = -dx;
        if (dy < 0.0) dy0 = -dy;       
        double angval = Math.atan2(dy0, dx0);
        if (dx < 0.0 && dy > 0.0) {
            angval = Math.PI - angval;   
        } else if ((dx < 0.0) && (dy <= 0.0)) {
            angval = Math.PI + angval;
        } else if ((dx >= 0.0) && (dy < 0.0)) {
            angval = 2.0 * Math.PI - angval;
        }
        return angval;

}