[Jderobot] Modificaciones en Geometry

Eduardo Perdices eperdices en gsyc.es
Vie Ago 2 00:15:16 CEST 2013


Hola,

¿hay alguna razón para que exista tanta cantidad de clases?, tenemos 
vector2d, vector2h, vector3d, vector3h, matriz3x3, matrix3x4, etc. Todas 
esas clases en realidad no aportan nada, ya que simplemente le dan otro 
nombre a algo que ya existe en Eigen, y el propia Eigen te da para ellos 
todo lo que quieras:

http://eigen.tuxfamily.org/1/classEigen_1_1Vector.html
http://eigen.tuxfamily.org/1/classEigen_1_1Matrix.html

operaciones, normalizado, y un montón de historias más.

Luego, si lo que se quiere es una librería para geometría, con tener 
clases de este tipo valdría: Plane, Line2D, Line3D, Segment2D, 
Segment3D, Point2D, Point3D, y que todas ellas tiren directamente de 
Eigen o de las clases inferiores, es decir, los constructores del Line2D 
podrían ser:

Line2D(double p1x, double p1y, double p2x, double p2y);
Line2D(Eigen::Vector2d p1, Eigen::Vector2d p2);
Line2D(Point2D p1, Point2D p2);
Line2D(double vx, double vy, double vz);
Line2D(Eigen::Vector3d v);

Y el Point2D sería:

Point2D(double x, double y, double h=1.0);
Point2D(Eigen::Vector2d p, double h=1.0);
Point2D(Eigen::Vector3d p);

Con eso das la opción para que acepte cualquier cosa, con H o sin H. Por 
cierto, a la hora de utilizar Eigen utilizad siempre que podáis double, 
ya que hay problemas con los float entre la versión 32b y 64b (ahora 
mismo está todo el float).

Saludos.

El 01/08/13 14:08, Roberto Calvo escribió:
> Alex, le he estado dando una vuelta toda esta mañana a la librería
> Geometry.
>
> Sobre el CMakeLists.txt
>     - He añadido cpp's que faltaban, sino fallaban las referencias cuando
> compilabas contra la librería.
>     - He añadido también los target link a las librerías (tinyxml GLU),
> sino quien use libgeometry.so las tiene que añadir y no tiene sentido.
>
>     - Faltan por añadir que avise de las dependencias (tinyxml, GLU,
> eigen) y los include. Yo las he puesto a pelo en el CMakeLists pero
> sería bueno que lo hiciera automáticamente con cmake.
>
> Sobre Progeo, funciona perfecto! :-) Las pruebas al menos que tenía yo
> siguen funcionando bien. He modificado la clase para que tenga 2
> constructores, uno para el XML y otro para pasarle la información
> directamente en matrices. Ahhh también he cambiado el define de la
> cabecera que era igual que progeo1 y al estar definida no entraba en
> progeo2.h
>
> También he visto alguna otra cosa como que Matriz3x3 tiene el método
> "getMatriz" y Matriz4x4 tiene el método "getMatrix". Deberíamos
> unificarlo todo. Además tendríamos que usar siempre el inglés para el
> código fuente.
>
> He abierto un bug en [1] para tenerlo controlado, tenemos que dejar esta
> librería lista para usar :-) Si quieres/queréis cuenta para el redmine y
> poder actualizar los bugs dímelo.
>
> Un saludo!
>
> [1] http://sarastro.gsyc.es/issues/26
>
>
> El mié, 31-07-2013 a las 17:40 +0200, Roberto Calvo escribió:
>> El mié, 31-07-2013 a las 17:32 +0200, Alejandro Hernández escribió:
>>> En principio debería de ser estable, utiliza las mismas formulas
>>> matemáticas que progeo, pero en lugar de GSL, utiliza Eigen. No la he
>>> testeado lo suficiente para para asegurarte 100% que funciona todo
>>> correctamente. El parseador de XML es el mismo en ambas versiones.
>> Ok! Pues le voy a dedicar un rato a todo esto, y voy a integrarlo todo
>> con geometry.
>>
>> Te cuento si veo algún problema.
>>
>>>
>>>
>>>
>>> Alejandro Hernández Cordero
>>>
>>>
>>>     
>>>
>>>
>>>
>>> Visit and play my Curriculum vitae
>>> -> https://googledrive.com/host/0BytBL_SySiIjX19Pd1o5dlZaRHc/Game.html
>>>
>>>
>>> El 31 de julio de 2013 17:29, Roberto Calvo <rocapal en gsyc.urjc.es>
>>> escribió:
>>>          El mié, 31-07-2013 a las 15:54 +0200, Alejandro Hernández
>>>          escribió:
>>>          > Hola,
>>>          >
>>>          >
>>>          > Siéntete libre de mejorar la biblioteca, cuanto más completa
>>>          este
>>>          > mucho mejor.
>>>          >
>>>          >
>>>          > Ahora mismo utilizamos los vectores math::vector2 (o
>>>          math::vector2H en
>>>          > homogeneas), igual para el caso de puntos 3D. Estas clases
>>>          utilizan
>>>          > Eigen. Ahora mismo solo existe vector y no la clase punto.
>>>          Puedes
>>>          > crearte una clase nueva que sea punto en esencia tiene que
>>>          ser muy
>>>          > parecida a la del Vector.
>>>          
>>>          
>>>          Genial, pues creo que modificando la clase Segmento tendré
>>>          suficiente,
>>>          porque veo que la nueva implementación de progeo utiliza
>>>          Vector3H y
>>>          Vector2H así que no es necesario crearse una nueva clase para
>>>          punto3D
>>>          ¿no crees?
>>>          
>>>          int Progeo::project(math::Vector3H in, math::Vector2H &out)
>>>          
>>>          Por cierto, sobre la la librería de Progeo que está dentro de
>>>          geometry
>>>          ¿es estable? Es la siguiente versión de progeo ¿verdad? Se
>>>          puede
>>>          integrar sin problemas o aún está por desarrollar.
>>>          
>>>          Veo que para inicializar hace falta el fichero XML ¿donde está
>>>          definido
>>>          el formato? Aún así, casi seguro que le añado un par de
>>>          métodos para
>>>          pasarle directamente las matrices de posición, K y RT para
>>>          utilizarla
>>>          directamente desd código sin tener que generar el fichero.
>>>          
>>>          Ahora mismo tengo una parte del calibrador funcionando con
>>>          progeo
>>>          antigua, dime cuanto de estable es esta y ya lo paso todo para
>>>          que
>>>          utilice geometry.
>>>          
>>>          Un saludo!
>>>          
>>>          
>>>          >
>>>          > Alejandro Hernández Cordero
>>>          >
>>>          >
>>>          >
>>>          >
>>>          >
>>>          >
>>>          > Visit and play my Curriculum vitae
>>>          > ->
>>>          https://googledrive.com/host/0BytBL_SySiIjX19Pd1o5dlZaRHc/Game.html
>>>          >
>>>          >
>>>          > El 30 de julio de 2013 16:33, Roberto Calvo
>>>          <rocapal en gsyc.urjc.es>
>>>          > escribió:
>>>          >
>>>          >         Hola,
>>>          >
>>>          >         He desarrollado un par de métodos para trabajar con
>>>          segmentos
>>>          >         en 3D
>>>          >         porque no lo he encontrado en geometry. Básicamente
>>>          es para
>>>          >         dado 2puntos
>>>          >         3D, obtener la recta, y luego sobre la recta hallar
>>>          puntos con
>>>          >         una Z
>>>          >         concreta y saber si un punto dado la contiene en esa
>>>          recta 3D.
>>>          >
>>>          >         Alex, ¿como es la mejor manera de integrarlo? ¿Lo
>>>          añado dentro
>>>          >         de
>>>          >         Segmento? ¿Que tipo de datos usáis para representar
>>>          puntos en
>>>          >         3D, el
>>>          >         HPoint3D de progeo o algún otro?
>>>          >
>>>          >         Me ha dicho Edu que andáis modificándola para
>>>          unificar con
>>>          >         Eigen ¿ves
>>>          >         algún problema en que añada ya el código o espero?
>>>          >
>>>          >         Ya me contáis.
>>>          >         Un saludo!
>>>          >
>>>          >
>>>          >         --
>>>          >         Roberto Calvo Palomino        | Robotics Lab (GSyC)
>>>          >         R&D Android Mobile Engineer   | Universidad Rey Juan
>>>          Carlos
>>>          >
>>>          >         Twitter: @rocapal
>>>          >         Linkedin: http://www.linkedin.com/in/rocapal
>>>          >
>>>          >
>>>          >
>>>          
>>>          --
>>>          Roberto Calvo Palomino        | Robotics Lab (GSyC)
>>>          R&D Android Mobile Engineer   | Universidad Rey Juan Carlos
>>>          
>>>          Twitter: @rocapal
>>>          Linkedin: http://www.linkedin.com/in/rocapal
>>>          
>>>          
>>>
>>>

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20130802/f37ba242/attachment.htm 


More information about the Jde-developers mailing list